summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSarven Capadisli <csarven@status.net>2010-02-04 16:56:34 +0000
committerSarven Capadisli <csarven@status.net>2010-02-04 16:56:34 +0000
commit7ebd13fa69d2a5dac8bc59799281d3d6e017eeae (patch)
tree605267bbe7c902d7a71766cdeb523bfbb266a0f9
parent339eb1adadc7f3495ad31ef0a5cf20cdca47ce1f (diff)
parent9e940445f1ab1ec53f3bad14a1a94dc2064d0ee6 (diff)
Merge branch '0.9.x' of git@gitorious.org:statusnet/mainline into 0.9.x
-rw-r--r--EVENTS.txt15
-rw-r--r--README129
-rw-r--r--actions/apioauthauthorize.php61
-rw-r--r--actions/deleteapplication.php176
-rw-r--r--actions/doc.php3
-rw-r--r--actions/editapplication.php24
-rw-r--r--actions/geocode.php12
-rw-r--r--actions/getfile.php2
-rw-r--r--actions/newapplication.php20
-rw-r--r--actions/oauthconnectionssettings.php24
-rw-r--r--actions/public.php10
-rw-r--r--actions/robotstxt.php100
-rw-r--r--actions/rsd.php226
-rw-r--r--actions/showapplication.php73
-rw-r--r--actions/showstream.php9
-rw-r--r--actions/userauthorization.php21
-rw-r--r--classes/Consumer.php30
-rw-r--r--classes/File.php17
-rw-r--r--classes/Memcached_DataObject.php53
-rw-r--r--classes/Notice.php35
-rw-r--r--classes/Oauth_application.php17
-rw-r--r--classes/Profile_role.php1
-rw-r--r--classes/Session.php43
-rw-r--r--classes/User.php204
-rw-r--r--classes/status_network.ini1
-rw-r--r--classes/statusnet.ini3
-rw-r--r--db/08to09.sql31
-rw-r--r--db/rc3torc4.sql4
-rw-r--r--db/statusnet.sql4
-rw-r--r--index.php38
-rw-r--r--js/jquery.form.js1292
-rw-r--r--js/jquery.js6209
-rw-r--r--js/jquery.min.js164
-rw-r--r--js/util.js168
-rw-r--r--lib/api.php21
-rw-r--r--lib/apiauth.php22
-rw-r--r--lib/apioauthstore.php27
-rw-r--r--lib/common.php9
-rw-r--r--lib/default.php7
-rw-r--r--lib/distribqueuehandler.php55
-rw-r--r--lib/jabber.php4
-rw-r--r--lib/jabberqueuehandler.php2
-rw-r--r--lib/liberalstomp.php24
-rw-r--r--lib/mysqlschema.php537
-rw-r--r--lib/noticelist.php20
-rw-r--r--lib/ombqueuehandler.php2
-rw-r--r--lib/pgsqlschema.php503
-rw-r--r--lib/publicqueuehandler.php2
-rw-r--r--lib/router.php26
-rw-r--r--lib/schema.php58
-rw-r--r--lib/stompqueuemanager.php375
-rw-r--r--lib/util.php13
-rw-r--r--locale/ar/LC_MESSAGES/statusnet.po319
-rw-r--r--locale/arz/LC_MESSAGES/statusnet.po317
-rw-r--r--locale/bg/LC_MESSAGES/statusnet.po322
-rw-r--r--locale/ca/LC_MESSAGES/statusnet.po322
-rw-r--r--locale/cs/LC_MESSAGES/statusnet.po321
-rw-r--r--locale/de/LC_MESSAGES/statusnet.po326
-rw-r--r--locale/el/LC_MESSAGES/statusnet.po322
-rw-r--r--locale/en_GB/LC_MESSAGES/statusnet.po464
-rw-r--r--locale/es/LC_MESSAGES/statusnet.po375
-rw-r--r--locale/fa/LC_MESSAGES/statusnet.po325
-rw-r--r--locale/fi/LC_MESSAGES/statusnet.po323
-rw-r--r--locale/fr/LC_MESSAGES/statusnet.po526
-rw-r--r--locale/ga/LC_MESSAGES/statusnet.po324
-rw-r--r--locale/he/LC_MESSAGES/statusnet.po321
-rw-r--r--locale/hsb/LC_MESSAGES/statusnet.po318
-rw-r--r--locale/ia/LC_MESSAGES/statusnet.po325
-rw-r--r--locale/is/LC_MESSAGES/statusnet.po322
-rw-r--r--locale/it/LC_MESSAGES/statusnet.po331
-rw-r--r--locale/ja/LC_MESSAGES/statusnet.po504
-rw-r--r--locale/ko/LC_MESSAGES/statusnet.po322
-rw-r--r--locale/mk/LC_MESSAGES/statusnet.po329
-rw-r--r--locale/nb/LC_MESSAGES/statusnet.po747
-rw-r--r--locale/nl/LC_MESSAGES/statusnet.po329
-rw-r--r--locale/nn/LC_MESSAGES/statusnet.po322
-rw-r--r--locale/pl/LC_MESSAGES/statusnet.po415
-rw-r--r--locale/pt/LC_MESSAGES/statusnet.po323
-rw-r--r--locale/pt_BR/LC_MESSAGES/statusnet.po327
-rw-r--r--locale/ru/LC_MESSAGES/statusnet.po335
-rw-r--r--locale/statusnet.po306
-rw-r--r--locale/sv/LC_MESSAGES/statusnet.po333
-rw-r--r--locale/te/LC_MESSAGES/statusnet.po333
-rw-r--r--locale/tr/LC_MESSAGES/statusnet.po321
-rw-r--r--locale/uk/LC_MESSAGES/statusnet.po330
-rw-r--r--locale/vi/LC_MESSAGES/statusnet.po324
-rw-r--r--locale/zh_CN/LC_MESSAGES/statusnet.po324
-rw-r--r--locale/zh_TW/LC_MESSAGES/statusnet.po321
-rw-r--r--plugins/Adsense/AdsensePlugin.php160
-rw-r--r--plugins/GeonamesPlugin.php78
-rw-r--r--plugins/MemcachePlugin.php5
-rw-r--r--plugins/OpenX/OpenXPlugin.php165
-rw-r--r--plugins/Realtime/RealtimePlugin.php4
-rw-r--r--plugins/Realtime/realtimeupdate.js4
-rwxr-xr-xplugins/TwitterBridge/daemons/twitterstatusfetcher.php53
-rw-r--r--plugins/TwitterBridge/twitter.php11
-rw-r--r--plugins/UserFlag/UserFlagPlugin.php19
-rw-r--r--plugins/UserFlag/clearflagform.php2
-rw-r--r--plugins/UserFlag/userflag.css4
-rw-r--r--plugins/UserLimitPlugin.php92
-rw-r--r--scripts/clearcache.php70
-rwxr-xr-xscripts/delete_status_network.sh4
-rwxr-xr-xscripts/queuedaemon.php8
-rwxr-xr-xscripts/sendemail.php82
-rwxr-xr-x[-rw-r--r--]scripts/setconfig.php16
-rw-r--r--scripts/settag.php84
-rw-r--r--scripts/setup.cfg.sample6
-rwxr-xr-xscripts/setup_status_network.sh62
-rw-r--r--theme/base/css/display.css18
-rw-r--r--theme/base/images/icons/icons-01.gifbin3650 -> 3870 bytes
-rw-r--r--theme/base/images/icons/twotone/green/against.gifbin0 -> 85 bytes
-rw-r--r--theme/base/images/icons/twotone/green/checkmark.gifbin0 -> 76 bytes
-rw-r--r--theme/base/images/icons/twotone/green/clear.gifbin0 -> 82 bytes
-rw-r--r--theme/base/images/icons/twotone/green/flag.gif (renamed from plugins/UserFlag/icon_flag.gif)bin80 -> 80 bytes
-rw-r--r--theme/base/logo.pngbin4988 -> 10107 bytes
-rw-r--r--theme/default/css/display.css32
-rw-r--r--theme/default/logo.pngbin6389 -> 10107 bytes
-rw-r--r--theme/default/mobilelogo.pngbin2238 -> 4017 bytes
-rw-r--r--theme/identica/css/display.css30
-rw-r--r--theme/identica/mobilelogo.pngbin2238 -> 4017 bytes
120 files changed, 15955 insertions, 8728 deletions
diff --git a/EVENTS.txt b/EVENTS.txt
index 1ed670697..6bf12bf13 100644
--- a/EVENTS.txt
+++ b/EVENTS.txt
@@ -699,3 +699,18 @@ StartShowContentLicense: Showing the default license for content
EndShowContentLicense: Showing the default license for content
- $action: the current action
+
+StartUserRegister: When a new user is being registered
+- &$profile: new profile data (no ID)
+- &$user: new user account (no ID or URI)
+
+EndUserRegister: When a new user has been registered
+- &$profile: new profile data
+- &$user: new user account
+
+StartRobotsTxt: Before outputting the robots.txt page
+- &$action: RobotstxtAction being shown
+
+EndRobotsTxt: After the default robots.txt page (good place for customization)
+- &$action: RobotstxtAction being shown
+
diff --git a/README b/README
index f83873ca8..9b4147645 100644
--- a/README
+++ b/README
@@ -2,8 +2,8 @@
README
------
-StatusNet 0.9.0 ("Stand") Beta 3
-20 Jan 2010
+StatusNet 0.9.0 ("Stand") Beta 5
+1 Feb 2010
This is the README file for StatusNet (formerly Laconica), the Open
Source microblogging platform. It includes installation instructions,
@@ -78,6 +78,11 @@ New this version
================
This is a major feature release since version 0.8.2, released Nov 1 2009.
+It is also a security release since 0.9.0beta4 January 27 2010. Beta
+users are strongly encouraged to upgrade to deal with a security alert.
+
+http://status.net/wiki/Security_alert_0000002
+
Notable changes this version:
- Records of deleted notices are stored without the notice content.
@@ -198,6 +203,77 @@ Notable changes this version:
- Major refactoring of queue handlers to manage very
large hosting site (like status.net)
- SubscriptionThrottle plugin to prevent subscription spamming
+- Don't enqueue into plugin or SMS queues when disabled (breaks unqueuehandler if SMS queue isn't attached)
+- Improve name validation checks on local File references
+- fix local file include vulnerability in doc.php
+- Reusing fixed selector name for 'processing' in util.js
+- Removed hAtom pattern from registration page.
+- restructuring of User::registerNew() lost password munging
+- Add a script to clear the cache for a given key
+- buggy fetch for site owner
+- Added missing concat of </li> in Realtime response
+- Updated XHR binded events to work better in jQuery 1.4.1. Using .live() for event delegation instead of jQuery.data() and checking to see if an element was previously binded.
+- Updated jQuery Form Plugin from v2.17 to v2.36
+- Updated jQuery JavaScript Library from v1.3.2 to v1.4.1
+- move schema.type.php to typeschema.php like other files
+- Add Really Simple Discovery (RSD) support
+- Add a robots.txt URL to the site root
+- error clearing tags for profiles from memcached
+- on exceptions, stomp logs the error and reenqueues
+- add lat, lon, location and remove closing tag from geocode.php
+- Use passed-in lat long in geocode.php
+- better handling of null responses from geonames.org
+- Globalized form notice data geo values
+- Using jQuery chaining in FormNoticeXHR
+- Using form object instead of form_id and find(). Slightly faster and easier to read.
+- removed describeTable from base class, and fixed it up in pgsql
+- getTableDef() mostly working in postgres
+- move the schema DDL sql off into seperate files for each db we support
+- plugin to limit number of registered users
+- add hooks for user registration
+- live fast, die young in bash scripts
+- for single-user mode, retrieve either site owner or defined nickname
+- method to get the site owner
+- define a constant for the 'owner' role of a site
+- add simple cache getter/setter static functions to Memcached_DataObject
+- Adds notice author's name to @title in Realtime response
+- Hides .author from XHR response in showstream
+- Hides .author from XHR response in showstream
+- Fix more fatal errors in queue edge cases
+- Don't attempt to resend XMPP messages that can't be broadcast due to the profile being deleted.
+- Wrap each bit of distrib queue handler's saving operation in a try/catch; log exceptions but let everything else continue.
+- Log exceptions from queuedaemon.php if they're not already caught
+- Move sessions settings to its own panel
+- Fixes for status_network db object .ini and tag setter script
+- Add a script to set tags for sites
+- Adjust API authentication to also check for OAuth protocol params in the HTTP Authorization header, as defined in OAuth HTTP Authorization Scheme.
+- Last-chance distribution if enqueueing fails
+- Manual failover for stomp queues.
+- lost config in index.php made all traffic go to master
+- "Revert "move RW setup above user get in index.php so remember_me works""
+- Revert "move RW setup above user get in index.php so remember_me works"
+- move RW setup above user get in index.php so remember_me works
+- hide most DB_DataObject errors
+- always set up database_rw, regardless, so cached sessions work
+- update mysqltimestamps on insert and update
+- additional debugging data for Sessions
+- 'Sign in with Twitter' button img
+- Update to biz theme
+- Remove redundant session token field from form (was already being added by base class).
+- 'Sign in with Twitter' button img
+- Can now set $config['queue']['stomp_persistent'] = false; to explicitly disable persistence when we queue items
+- Showing processing indicator for form_repeat on submit instead of form
+- Removed avatar from repeat of username (matches noticelist)
+- Removed unused variable assignment for avatar URL and added missing fn
+- Don't preemptively close existing DB connections for web views (needed to keep # of conns from going insane on multi-site queue daemons, so just doing for CLI) May, or may not, help with mystery session problems
+- dropping the setcookie() call from common_ensure_session() since we're pretty sure it's unnecessary
+- append '/' on cookie path for now (may still need some refactoring)
+- set session cookie correctly
+- Fix for Mapstraction plugin's zoomed map links
+- debug log line for control channel sub
+- Move faceboookapp.js to the Facebook plugin
+- fix for fix for bad realtime JS load
+- default 24-hour expiry on Memcached objects where not specified.
Prerequisites
=============
@@ -597,26 +673,19 @@ server is probably a good idea for high-volume sites.
needs as a parameter the install path; if you run it from the
StatusNet dir, "." should suffice.
-This will run eight (for now) queue handlers:
+This will run the queue handlers:
+* queuedaemon.php - polls for queued items for inbox processing and
+ pushing out to OMB, SMS, XMPP, etc.
* xmppdaemon.php - listens for new XMPP messages from users and stores
- them as notices in the database.
-* jabberqueuehandler.php - sends queued notices in the database to
- registered users who should receive them.
-* publicqueuehandler.php - sends queued notices in the database to
- public feed listeners.
-* ombqueuehandler.php - sends queued notices to OpenMicroBlogging
- recipients on foreign servers.
-* smsqueuehandler.php - sends queued notices to SMS-over-email addresses
- of registered users.
-* xmppconfirmhandler.php - sends confirmation messages to registered
- users.
-
-Note that these queue daemons are pretty raw, and need your care. In
-particular, they leak memory, and you may want to restart them on a
-regular (daily or so) basis with a cron job. Also, if they lose
-the connection to the XMPP server for too long, they'll simply die. It
-may be a good idea to use a daemon-monitoring service, like 'monit',
+ them as notices in the database; also pulls queued XMPP output from
+ queuedaemon.php to push out to clients.
+
+These two daemons will automatically restart in most cases of failure
+including memory leaks (if a memory_limit is set), but may still die
+or behave oddly if they lose connections to the XMPP or queue servers.
+
+It may be a good idea to use a daemon-monitoring service, like 'monit',
to check their status and keep them running.
All the daemons write their process IDs (pids) to /var/run/ by
@@ -626,7 +695,7 @@ daemons.
Since version 0.8.0, it's now possible to use a STOMP server instead of
our kind of hacky home-grown DB-based queue solution. See the "queues"
config section below for how to configure to use STOMP. As of this
-writing, the software has been tested with ActiveMQ (
+writing, the software has been tested with ActiveMQ.
Sitemaps
--------
@@ -712,10 +781,12 @@ subdirectory to add a new language to your system. You'll need to
compile the ".po" files into ".mo" files, however.
Contributions of translation information to StatusNet are very easy:
-you can use the Web interface at http://status.net/pootle/ to add one
+you can use the Web interface at TranslateWiki.net to add one
or a few or lots of new translations -- or even new languages. You can
also download more up-to-date .po files there, if you so desire.
+For info on helping with translations, see http://status.net/wiki/Translations
+
Backups
-------
@@ -1501,6 +1572,20 @@ interface. It also makes the user's profile the root URL.
enabled: Whether to run in "single user mode". Default false.
nickname: nickname of the single user.
+robotstxt
+---------
+
+We put out a default robots.txt file to guide the processing of
+Web crawlers. See http://www.robotstxt.org/ for more information
+on the format of this file.
+
+crawldelay: if non-empty, this value is provided as the Crawl-Delay:
+ for the robots.txt file. see http://ur1.ca/l5a0
+ for more information. Default is zero, no explicit delay.
+disallow: Array of (virtual) directories to disallow. Default is 'main',
+ 'search', 'message', 'settings', 'admin'. Ignored when site
+ is private, in which case the entire site ('/') is disallowed.
+
Plugins
=======
diff --git a/actions/apioauthauthorize.php b/actions/apioauthauthorize.php
index eebc926ee..e7c6f3761 100644
--- a/actions/apioauthauthorize.php
+++ b/actions/apioauthauthorize.php
@@ -67,8 +67,6 @@ class ApiOauthAuthorizeAction extends ApiOauthAction
{
parent::prepare($args);
- common_debug("apioauthauthorize");
-
$this->nickname = $this->trimmed('nickname');
$this->password = $this->arg('password');
$this->oauth_token = $this->arg('oauth_token');
@@ -99,24 +97,17 @@ class ApiOauthAuthorizeAction extends ApiOauthAction
} else {
- // XXX: make better error messages
-
if (empty($this->oauth_token)) {
-
- common_debug("No request token found.");
-
- $this->clientError(_('Bad request.'));
+ $this->clientError(_('No oauth_token parameter provided.'));
return;
}
if (empty($this->app)) {
- common_debug('No app for that token.');
- $this->clientError(_('Bad request.'));
+ $this->clientError(_('Invalid token.'));
return;
}
$name = $this->app->name;
- common_debug("Requesting auth for app: " . $name);
$this->showForm();
}
@@ -124,8 +115,6 @@ class ApiOauthAuthorizeAction extends ApiOauthAction
function handlePost()
{
- common_debug("handlePost()");
-
// check session token for CSRF protection.
$token = $this->trimmed('token');
@@ -202,21 +191,15 @@ class ApiOauthAuthorizeAction extends ApiOauthAction
// A callback specified in the app setup overrides whatever
// is passed in with the request.
- common_debug("Req token is authorized - doing callback");
-
if (!empty($this->app->callback_url)) {
$this->callback = $this->app->callback_url;
}
if (!empty($this->callback)) {
- // XXX: Need better way to build this redirect url.
-
$target_url = $this->getCallback($this->callback,
array('oauth_token' => $this->oauth_token));
- common_debug("Doing callback to $target_url");
-
common_redirect($target_url, 303);
} else {
common_debug("callback was empty!");
@@ -236,9 +219,12 @@ class ApiOauthAuthorizeAction extends ApiOauthAction
} else if ($this->arg('deny')) {
+ $datastore = new ApiStatusNetOAuthDataStore();
+ $datastore->revoke_token($this->oauth_token, 0);
+
$this->elementStart('p');
- $this->raw(sprintf(_("The request token %s has been denied."),
+ $this->raw(sprintf(_("The request token %s has been denied and revoked."),
$this->oauth_token));
$this->elementEnd('p');
@@ -303,13 +289,17 @@ class ApiOauthAuthorizeAction extends ApiOauthAction
$access = ($this->app->access_type & Oauth_application::$writeAccess) ?
'access and update' : 'access';
- $msg = _("The application <strong>%1$s</strong> by <strong>%2$s</strong> would like " .
- "the ability to <strong>%3$s</strong> your account data.");
+ $msg = _('The application <strong>%1$s</strong> by ' .
+ '<strong>%2$s</strong> would like the ability ' .
+ 'to <strong>%3$s</strong> your %4$s account data. ' .
+ 'You should only give access to your %4$s account ' .
+ 'to third parties you trust.');
$this->raw(sprintf($msg,
$this->app->name,
$this->app->organization,
- $access));
+ $access,
+ common_config('site', 'name')));
$this->elementEnd('p');
$this->elementEnd('li');
$this->elementEnd('ul');
@@ -371,6 +361,31 @@ class ApiOauthAuthorizeAction extends ApiOauthAction
function showLocalNav()
{
+ // NOP
+ }
+
+ /**
+ * Show site notice.
+ *
+ * @return nothing
+ */
+
+ function showSiteNotice()
+ {
+ // NOP
+ }
+
+ /**
+ * Show notice form.
+ *
+ * Show the form for posting a new notice
+ *
+ * @return nothing
+ */
+
+ function showNoticeForm()
+ {
+ // NOP
}
}
diff --git a/actions/deleteapplication.php b/actions/deleteapplication.php
new file mode 100644
index 000000000..17526e111
--- /dev/null
+++ b/actions/deleteapplication.php
@@ -0,0 +1,176 @@
+<?php
+/**
+ * StatusNet, the distributed open-source microblogging tool
+ *
+ * Action class to delete an OAuth 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 Action
+ * @package StatusNet
+ * @author Zach Copley <zach@status.net>
+ * @copyright 2010 StatusNet, Inc.
+ * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link http://status.net/
+ */
+
+if (!defined('STATUSNET') && !defined('LACONICA')) {
+ exit(1);
+}
+
+/**
+ * Delete an OAuth appliction
+ *
+ * @category Action
+ * @package StatusNet
+ * @author Zach Copley <zach@status.net>
+ * @license http://www.fsf.org/licensing/licenses/agpl.html AGPLv3
+ * @link http://status.net/
+ */
+
+class DeleteapplicationAction extends Action
+{
+ var $app = null;
+
+ /**
+ * Take arguments for running
+ *
+ * @param array $args $_REQUEST args
+ *
+ * @return boolean success flag
+ */
+
+ function prepare($args)
+ {
+ if (!parent::prepare($args)) {
+ return false;
+ }
+
+ if (!common_logged_in()) {
+ $this->clientError(_('You must be logged in to delete an application.'));
+ return false;
+ }
+
+ $id = (int)$this->arg('id');
+ $this->app = Oauth_application::staticGet('id', $id);
+
+ if (empty($this->app)) {
+ $this->clientError(_('Application not found.'));
+ return false;
+ }
+
+ $cur = common_current_user();
+
+ if ($cur->id != $this->app->owner) {
+ $this->clientError(_('You are not the owner of this application.'), 401);
+ return false;
+ }
+
+ return true;
+ }
+
+ /**
+ * Handle request
+ *
+ * Shows a page with list of favorite notices
+ *
+ * @param array $args $_REQUEST args; handled in prepare()
+ *
+ * @return void
+ */
+
+ function handle($args)
+ {
+ if ($_SERVER['REQUEST_METHOD'] == 'POST') {
+
+ // CSRF protection
+ $token = $this->trimmed('token');
+ if (!$token || $token != common_session_token()) {
+ $this->clientError(_('There was a problem with your session token.'));
+ return;
+ }
+
+ if ($this->arg('no')) {
+ common_redirect(common_local_url('showapplication',
+ array('id' => $this->app->id)), 303);
+ } elseif ($this->arg('yes')) {
+ $this->handlePost();
+ common_redirect(common_local_url('oauthappssettings'), 303);
+ } else {
+ $this->showPage();
+ }
+ }
+ }
+
+ function showContent() {
+ $this->areYouSureForm();
+ }
+
+ function title() {
+ return _('Delete application');
+ }
+
+ function showNoticeForm() {
+ // nop
+ }
+
+ /**
+ * Confirm with user.
+ *
+ * Shows a confirmation form.
+ *
+ * @return void
+ */
+ function areYouSureForm()
+ {
+ $id = $this->app->id;
+ $this->elementStart('form', array('id' => 'deleteapplication-' . $id,
+ 'method' => 'post',
+ 'class' => 'form_settings form_entity_block',
+ 'action' => common_local_url('deleteapplication',
+ array('id' => $this->app->id))));
+ $this->elementStart('fieldset');
+ $this->hidden('token', common_session_token());
+ $this->element('legend', _('Delete application'));
+ $this->element('p', null,
+ _('Are you sure you want to delete this application? '.
+ 'This will clear all data about the application from the '.
+ 'database, including all existing user connections.'));
+ $this->submit('form_action-no',
+ _('No'),
+ 'submit form_action-primary',
+ 'no',
+ _("Do not delete this application"));
+ $this->submit('form_action-yes',
+ _('Yes'),
+ 'submit form_action-secondary',
+ 'yes', _('Delete this application'));
+ $this->elementEnd('fieldset');
+ $this->elementEnd('form');
+ }
+
+ /**
+ * Actually delete the app
+ *
+ * @return void
+ */
+
+ function handlePost()
+ {
+ $this->app->delete();
+ }
+}
+
diff --git a/actions/doc.php b/actions/doc.php
index 25d363472..eaf4b7df2 100644
--- a/actions/doc.php
+++ b/actions/doc.php
@@ -54,6 +54,9 @@ class DocAction extends Action
parent::prepare($args);
$this->title = $this->trimmed('title');
+ if (!preg_match('/^[a-zA-Z0-9_-]*$/', $this->title)) {
+ $this->title = 'help';
+ }
$this->output = null;
$this->loadDoc();
diff --git a/actions/editapplication.php b/actions/editapplication.php
index 9cc3e3cea..ca5dba1e4 100644
--- a/actions/editapplication.php
+++ b/actions/editapplication.php
@@ -179,6 +179,9 @@ class EditApplicationAction extends OwnerDesignAction
} elseif (mb_strlen($name) > 255) {
$this->showForm(_('Name is too long (max 255 chars).'));
return;
+ } else if ($this->nameExists($name)) {
+ $this->showForm(_('Name already in use. Try another one.'));
+ return;
} elseif (empty($description)) {
$this->showForm(_('Description is required.'));
return;
@@ -260,5 +263,26 @@ class EditApplicationAction extends OwnerDesignAction
common_redirect(common_local_url('oauthappssettings'), 303);
}
+ /**
+ * Does the app name already exist?
+ *
+ * Checks the DB to see someone has already registered an app
+ * with the same name.
+ *
+ * @param string $name app name to check
+ *
+ * @return boolean true if the name already exists
+ */
+
+ function nameExists($name)
+ {
+ $newapp = Oauth_application::staticGet('name', $name);
+ if (!$newapp) {
+ return false;
+ } else {
+ return $newapp->id != $this->app->id;
+ }
+ }
+
}
diff --git a/actions/geocode.php b/actions/geocode.php
index 9671d2c27..e883c6ce4 100644
--- a/actions/geocode.php
+++ b/actions/geocode.php
@@ -42,6 +42,10 @@ if (!defined('STATUSNET') && !defined('LACONICA')) {
*/
class GeocodeAction extends Action
{
+ var $lat = null;
+ var $lon = null;
+ var $location = null;
+
function prepare($args)
{
parent::prepare($args);
@@ -52,12 +56,7 @@ class GeocodeAction extends Action
}
$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;
- }
+ $this->location = Location::fromLatLon($this->lat, $this->lon);
return true;
}
@@ -95,4 +94,3 @@ class GeocodeAction extends Action
return true;
}
}
-?>
diff --git a/actions/getfile.php b/actions/getfile.php
index cd327e410..9cbe8e1d9 100644
--- a/actions/getfile.php
+++ b/actions/getfile.php
@@ -71,7 +71,7 @@ class GetfileAction extends Action
$filename = $this->trimmed('filename');
$path = null;
- if ($filename) {
+ if ($filename && File::validFilename($filename)) {
$path = File::path($filename);
}
diff --git a/actions/newapplication.php b/actions/newapplication.php
index c499fe7c7..c0c520797 100644
--- a/actions/newapplication.php
+++ b/actions/newapplication.php
@@ -158,6 +158,9 @@ class NewApplicationAction extends OwnerDesignAction
if (empty($name)) {
$this->showForm(_('Name is required.'));
return;
+ } else if ($this->nameExists($name)) {
+ $this->showForm(_('Name already in use. Try another one.'));
+ return;
} elseif (mb_strlen($name) > 255) {
$this->showForm(_('Name is too long (max 255 chars).'));
return;
@@ -273,5 +276,22 @@ class NewApplicationAction extends OwnerDesignAction
}
+ /**
+ * Does the app name already exist?
+ *
+ * Checks the DB to see someone has already registered an app
+ * with the same name.
+ *
+ * @param string $name app name to check
+ *
+ * @return boolean true if the name already exists
+ */
+
+ function nameExists($name)
+ {
+ $app = Oauth_application::staticGet('name', $name);
+ return ($app !== false);
+ }
+
}
diff --git a/actions/oauthconnectionssettings.php b/actions/oauthconnectionssettings.php
index c2e8d441b..b1467f0d0 100644
--- a/actions/oauthconnectionssettings.php
+++ b/actions/oauthconnectionssettings.php
@@ -33,6 +33,7 @@ if (!defined('STATUSNET') && !defined('LACONICA')) {
require_once INSTALLDIR . '/lib/connectsettingsaction.php';
require_once INSTALLDIR . '/lib/applicationlist.php';
+require_once INSTALLDIR . '/lib/apioauthstore.php';
/**
* Show connected OAuth applications
@@ -71,11 +72,6 @@ class OauthconnectionssettingsAction extends ConnectSettingsAction
return _('Connected applications');
}
- function isReadOnly($args)
- {
- return true;
- }
-
/**
* Instructions for use
*
@@ -153,6 +149,13 @@ class OauthconnectionssettingsAction extends ConnectSettingsAction
}
}
+ /**
+ * Revoke access to an authorized OAuth application
+ *
+ * @param int $appId the ID of the application
+ *
+ */
+
function revokeAccess($appId)
{
$cur = common_current_user();
@@ -164,6 +167,8 @@ class OauthconnectionssettingsAction extends ConnectSettingsAction
return false;
}
+ // XXX: Transaction here?
+
$appUser = Oauth_application_user::getByKeys($cur, $app);
if (empty($appUser)) {
@@ -171,12 +176,13 @@ class OauthconnectionssettingsAction extends ConnectSettingsAction
return false;
}
- $orig = clone($appUser);
- $appUser->access_type = 0; // No access
- $result = $appUser->update();
+ $datastore = new ApiStatusNetOAuthDataStore();
+ $datastore->revoke_token($appUser->token, 1);
+
+ $result = $appUser->delete();
if (!$result) {
- common_log_db_error($orig, 'UPDATE', __FILE__);
+ common_log_db_error($orig, 'DELETE', __FILE__);
$this->clientError(_('Unable to revoke access for app: ' . $app->id));
return false;
}
diff --git a/actions/public.php b/actions/public.php
index 982dfde15..50278bfce 100644
--- a/actions/public.php
+++ b/actions/public.php
@@ -131,12 +131,20 @@ class PublicAction extends Action
return _('Public timeline');
}
}
-
+
function extraHead()
{
parent::extraHead();
$this->element('meta', array('http-equiv' => 'X-XRDS-Location',
'content' => common_local_url('publicxrds')));
+
+ $rsd = common_local_url('rsd');
+
+ // RSD, http://tales.phrasewise.com/rfc/rsd
+
+ $this->element('link', array('rel' => 'EditURI',
+ 'type' => 'application/rsd+xml',
+ 'href' => $rsd));
}
/**
diff --git a/actions/robotstxt.php b/actions/robotstxt.php
new file mode 100644
index 000000000..5131097c8
--- /dev/null
+++ b/actions/robotstxt.php
@@ -0,0 +1,100 @@
+<?php
+/**
+ * StatusNet - the distributed open-source microblogging tool
+ * Copyright (C) 2010, StatusNet, Inc.
+ *
+ * robots.txt generator
+ *
+ * PHP version 5
+ *
+ * @category Action
+ * @package StatusNet
+ * @author Evan Prodromou <evan@status.net>
+ * @license http://www.fsf.org/licensing/licenses/agpl.html AGPLv3
+ * @link http://status.net/
+ *
+ * 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);
+}
+
+/**
+ * Prints out a static robots.txt
+ *
+ * @category Action
+ * @package StatusNet
+ * @author Evan Prodromou <evan@status.net>
+ * @license http://www.fsf.org/licensing/licenses/agpl.html AGPLv3
+ * @link http://status.net/
+ */
+
+class RobotstxtAction extends Action
+{
+ /**
+ * Handles requests
+ *
+ * Since this is a relatively static document, we
+ * don't do a prepare()
+ *
+ * @param array $args GET, POST, and URL params; unused.
+ *
+ * @return void
+ */
+
+ function handle($args)
+ {
+ if (Event::handle('StartRobotsTxt', array($this))) {
+
+ header('Content-Type: text/plain');
+
+ print "User-Agent: *\n";
+
+ if (common_config('site', 'private')) {
+
+ print "Disallow: /\n";
+
+ } else {
+
+ $disallow = common_config('robotstxt', 'disallow');
+
+ foreach ($disallow as $dir) {
+ print "Disallow: /$dir/\n";
+ }
+
+ $crawldelay = common_config('robotstxt', 'crawldelay');
+
+ if (!empty($crawldelay)) {
+ print "Crawl-delay: " . $crawldelay . "\n";
+ }
+ }
+
+ Event::handle('EndRobotsTxt', array($this));
+ }
+ }
+
+ /**
+ * Return true; this page doesn't touch the DB.
+ *
+ * @param array $args other arguments
+ *
+ * @return boolean is read only action?
+ */
+
+ function isReadOnly($args)
+ {
+ return true;
+ }
+}
diff --git a/actions/rsd.php b/actions/rsd.php
new file mode 100644
index 000000000..f88bf2e9a
--- /dev/null
+++ b/actions/rsd.php
@@ -0,0 +1,226 @@
+<?php
+/**
+ * StatusNet - the distributed open-source microblogging tool
+ * Copyright (C) 2008-2010, StatusNet, Inc.
+ *
+ * Really Simple Discovery (RSD) for API access
+ *
+ * PHP version 5
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * @category API
+ * @package StatusNet
+ * @author Evan Prodromou <evan@status.net>
+ * @license http://www.fsf.org/licensing/licenses/agpl.html AGPLv3
+ * @link http://status.net/
+ *
+ */
+
+if (!defined('STATUSNET')) {
+ exit(1);
+}
+
+/**
+ * RSD action class
+ *
+ * Really Simple Discovery (RSD) is a simple (to a fault, maybe)
+ * discovery tool for blog APIs.
+ *
+ * http://tales.phrasewise.com/rfc/rsd
+ *
+ * Anil Dash suggested that RSD be used for services that implement
+ * the Twitter API:
+ *
+ * http://dashes.com/anil/2009/12/the-twitter-api-is-finished.html
+ *
+ * It's in use now for WordPress.com blogs:
+ *
+ * http://matt.wordpress.com/xmlrpc.php?rsd
+ *
+ * I (evan@status.net) have tried to stay faithful to the premise of
+ * RSD, while adding information useful to StatusNet client developers.
+ * In particular:
+ *
+ * - There is a link from each user's profile page to their personal
+ * RSD feed. A personal rsd.xml includes a 'blogID' element that is
+ * their username.
+ * - There is a link from the public root to '/rsd.xml', a public RSD
+ * feed. It's identical to the personal rsd except it doesn't include
+ * a blogId.
+ * - I've added a setting to the API to indicate that OAuth support is
+ * available.
+ *
+ * @category API
+ * @package StatusNet
+ * @author Evan Prodromou <evan@status.net>
+ * @license http://www.fsf.org/licensing/licenses/agpl.html AGPLv3
+ * @link http://status.net/
+ */
+
+class RsdAction extends Action
+{
+ /**
+ * Optional attribute for the personal rsd.xml file.
+ */
+
+ var $user = null;
+
+ /**
+ * Prepare the action for use.
+ *
+ * Check for a nickname; redirect if non-canonical; if
+ * not provided, assume public rsd.xml.
+ *
+ * @param array $args GET, POST, and URI arguments.
+ *
+ * @return boolean success flag
+ */
+
+ function prepare($args)
+ {
+ parent::prepare($args);
+
+ // optional argument
+
+ $nickname_arg = $this->arg('nickname');
+
+ if (empty($nickname_arg)) {
+ $this->user = null;
+ } else {
+ $nickname = common_canonical_nickname($nickname_arg);
+
+ // Permanent redirect on non-canonical nickname
+
+ if ($nickname_arg != $nickname) {
+ common_redirect(common_local_url('rsd',
+ array('nickname' => $nickname)),
+ 301);
+ return false;
+ }
+
+ $this->user = User::staticGet('nickname', $nickname);
+
+ if (empty($this->user)) {
+ $this->clientError(_('No such user.'), 404);
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ /**
+ * Action handler.
+ *
+ * Outputs the XML format for an RSD file. May include
+ * personal information if this is a personal file
+ * (based on whether $user attribute is set).
+ *
+ * @param array $args array of arguments
+ *
+ * @return nothing
+ */
+
+ function handle($args)
+ {
+ header('Content-Type: application/rsd+xml');
+
+ $this->startXML();
+
+ $rsdNS = 'http://archipelago.phrasewise.com/rsd';
+ $this->elementStart('rsd', array('version' => '1.0',
+ 'xmlns' => $rsdNS));
+ $this->elementStart('service');
+ $this->element('engineName', null, _('StatusNet'));
+ $this->element('engineLink', null, 'http://status.net/');
+ $this->elementStart('apis');
+ if (Event::handle('StartRsdListApis', array($this, $this->user))) {
+
+ $blogID = (empty($this->user)) ? '' : $this->user->nickname;
+ $apiAttrs = array('name' => 'Twitter',
+ 'preferred' => 'true',
+ 'apiLink' => $this->_apiRoot(),
+ 'blogID' => $blogID);
+
+ $this->elementStart('api', $apiAttrs);
+ $this->elementStart('settings');
+ $this->element('docs', null,
+ 'http://status.net/wiki/TwitterCompatibleAPI');
+ $this->element('setting', array('name' => 'OAuth'),
+ 'true');
+ $this->elementEnd('settings');
+ $this->elementEnd('api');
+ Event::handle('EndRsdListApis', array($this, $this->user));
+ }
+ $this->elementEnd('apis');
+ $this->elementEnd('service');
+ $this->elementEnd('rsd');
+
+ $this->endXML();
+
+ return true;
+ }
+
+ /**
+ * Returns last-modified date for use in caching
+ *
+ * Per-user rsd.xml is dated to last change of user
+ * (in case of nickname change); public has no date.
+ *
+ * @return string date of last change of this page
+ */
+
+ function lastModified()
+ {
+ if (!empty($this->user)) {
+ return $this->user->modified;
+ } else {
+ return null;
+ }
+ }
+
+ /**
+ * Flag to indicate if this action is read-only
+ *
+ * It is; it doesn't change the DB.
+ *
+ * @param array $args ignored
+ *
+ * @return boolean true
+ */
+
+ function isReadOnly($args)
+ {
+ return true;
+ }
+
+ /**
+ * Return current site's API root
+ *
+ * Varies based on URL parameters, like if fancy URLs are
+ * turned on.
+ *
+ * @return string API root URI for this site
+ */
+
+ private function _apiRoot()
+ {
+ if (common_config('site', 'fancy')) {
+ return common_path('api/', true);
+ } else {
+ return common_path('index.php/api/', true);
+ }
+ }
+}
diff --git a/actions/showapplication.php b/actions/showapplication.php
index a6ff425c7..fa4484481 100644
--- a/actions/showapplication.php
+++ b/actions/showapplication.php
@@ -149,7 +149,6 @@ class ShowApplicationAction extends OwnerDesignAction
function showContent()
{
-
$cur = common_current_user();
$consumer = $this->application->getConsumer();
@@ -201,7 +200,7 @@ class ShowApplicationAction extends OwnerDesignAction
$userCnt = $appUsers->count();
$this->raw(sprintf(
- _('created by %1$s - %2$s access by default - %3$d users'),
+ _('Created by %1$s - %2$s access by default - %3$d users'),
$profile->getBestName(),
$defaultAccess,
$userCnt
@@ -222,18 +221,39 @@ class ShowApplicationAction extends OwnerDesignAction
$this->elementStart('li', 'entity_reset_keysecret');
$this->elementStart('form', array(
- 'id' => 'forma_reset_key',
+ 'id' => 'form_reset_key',
'class' => 'form_reset_key',
'method' => 'POST',
'action' => common_local_url('showapplication',
array('id' => $this->application->id))));
+ $this->elementStart('fieldset');
+ $this->hidden('token', common_session_token());
+
+ $this->element('input', array('type' => 'submit',
+ 'id' => 'reset',
+ 'name' => 'reset',
+ 'class' => 'submit',
+ 'value' => _('Reset key & secret'),
+ 'onClick' => 'return confirmReset()'));
+ $this->elementEnd('fieldset');
+ $this->elementEnd('form');
+ $this->elementEnd('li');
+
+ $this->elementStart('li', 'entity_delete');
+ $this->elementStart('form', array(
+ 'id' => 'form_delete_application',
+ 'class' => 'form_delete_application',
+ 'method' => 'POST',
+ 'action' => common_local_url('deleteapplication',
+ array('id' => $this->application->id))));
$this->elementStart('fieldset');
$this->hidden('token', common_session_token());
- $this->submit('reset', _('Reset key & secret'));
+ $this->submit('delete', _('Delete'));
$this->elementEnd('fieldset');
$this->elementEnd('form');
$this->elementEnd('li');
+
$this->elementEnd('ul');
$this->elementEnd('div');
@@ -276,14 +296,53 @@ class ShowApplicationAction extends OwnerDesignAction
$this->elementEnd('p');
}
+ /**
+ * Add a confirm script for Consumer key/secret reset
+ *
+ * @return void
+ */
+
+ function showScripts()
+ {
+ parent::showScripts();
+
+ $msg = _('Are you sure you want to reset your consumer key and secret?');
+
+ $js = 'function confirmReset() { ';
+ $js .= ' var agree = confirm("' . $msg . '"); ';
+ $js .= ' return agree;';
+ $js .= '}';
+
+ $this->inlineScript($js);
+ }
+
+ /**
+ * Reset an application's Consumer key and secret
+ *
+ * XXX: Should this be moved to its own page with a confirm?
+ *
+ */
+
function resetKey()
{
$this->application->query('BEGIN');
+ $oauser = new Oauth_application_user();
+ $oauser->application_id = $this->application->id;
+ $result = $oauser->delete();
+
+ if ($result === false) {
+ common_log_db_error($oauser, 'DELETE', __FILE__);
+ $this->success = false;
+ $this->msg = ('Unable to reset consumer key and secret.');
+ $this->showPage();
+ return;
+ }
+
$consumer = $this->application->getConsumer();
$result = $consumer->delete();
- if (!$result) {
+ if ($result === false) {
common_log_db_error($consumer, 'DELETE', __FILE__);
$this->success = false;
$this->msg = ('Unable to reset consumer key and secret.');
@@ -295,7 +354,7 @@ class ShowApplicationAction extends OwnerDesignAction
$result = $consumer->insert();
- if (!$result) {
+ if (empty($result)) {
common_log_db_error($consumer, 'INSERT', __FILE__);
$this->application->query('ROLLBACK');
$this->success = false;
@@ -308,7 +367,7 @@ class ShowApplicationAction extends OwnerDesignAction
$this->application->consumer_key = $consumer->consumer_key;
$result = $this->application->update($orig);
- if (!$result) {
+ if ($result === false) {
common_log_db_error($application, 'UPDATE', __FILE__);
$this->application->query('ROLLBACK');
$this->success = false;
diff --git a/actions/showstream.php b/actions/showstream.php
index c52919386..07cc68b76 100644
--- a/actions/showstream.php
+++ b/actions/showstream.php
@@ -178,6 +178,15 @@ class ShowstreamAction extends ProfileAction
$this->element('link', array('rel' => 'microsummary',
'href' => common_local_url('microsummary',
array('nickname' => $this->profile->nickname))));
+
+ $rsd = common_local_url('rsd',
+ array('nickname' => $this->profile->nickname));
+
+ // RSD, http://tales.phrasewise.com/rfc/rsd
+ $this->element('link', array('rel' => 'EditURI',
+ 'type' => 'application/rsd+xml',
+ 'href' => $rsd));
+
}
function showProfile()
diff --git a/actions/userauthorization.php b/actions/userauthorization.php
index 4321f1302..7f71c60db 100644
--- a/actions/userauthorization.php
+++ b/actions/userauthorization.php
@@ -127,10 +127,10 @@ class UserauthorizationAction extends Action
$location = $params->getLocation();
$avatar = $params->getAvatarURL();
- $this->elementStart('div', array('class' => 'profile'));
$this->elementStart('div', 'entity_profile vcard');
- $this->elementStart('a', array('href' => $profile,
- 'class' => 'url'));
+ $this->elementStart('dl', 'entity_depiction');
+ $this->element('dt', null, _('Photo'));
+ $this->elementStart('dd');
if ($avatar) {
$this->element('img', array('src' => $avatar,
'class' => 'photo avatar',
@@ -138,11 +138,19 @@ class UserauthorizationAction extends Action
'height' => AVATAR_PROFILE_SIZE,
'alt' => $nickname));
}
+ $this->elementEnd('dd');
+ $this->elementEnd('dl');
+
+ $this->elementStart('dl', 'entity_nickname');
+ $this->element('dt', null, _('Nickname'));
+ $this->elementStart('dd');
$hasFN = ($fullname !== '') ? 'nickname' : 'fn nickname';
- $this->elementStart('span', $hasFN);
+ $this->elementStart('a', array('href' => $profile,
+ 'class' => 'url '.$hasFN));
$this->raw($nickname);
- $this->elementEnd('span');
$this->elementEnd('a');
+ $this->elementEnd('dd');
+ $this->elementEnd('dl');
if (!is_null($fullname)) {
$this->elementStart('dl', 'entity_fn');
@@ -214,7 +222,6 @@ class UserauthorizationAction extends Action
$this->elementEnd('li');
$this->elementEnd('ul');
$this->elementEnd('div');
- $this->elementEnd('div');
}
function sendAuthorization()
@@ -350,4 +357,4 @@ class UserauthorizationAction extends Action
}
}
}
-} \ No newline at end of file
+}
diff --git a/classes/Consumer.php b/classes/Consumer.php
index ad64a8491..ce399f278 100644
--- a/classes/Consumer.php
+++ b/classes/Consumer.php
@@ -36,4 +36,34 @@ class Consumer extends Memcached_DataObject
return $cons;
}
+ /**
+ * Delete a Consumer and related tokens and nonces
+ *
+ * XXX: Should this happen in an OAuthDataStore instead?
+ *
+ */
+ function delete()
+ {
+ // XXX: Is there any reason NOT to do this kind of cleanup?
+
+ $this->_deleteTokens();
+ $this->_deleteNonces();
+
+ parent::delete();
+ }
+
+ function _deleteTokens()
+ {
+ $token = new Token();
+ $token->consumer_key = $this->consumer_key;
+ $token->delete();
+ }
+
+ function _deleteNonces()
+ {
+ $nonce = new Nonce();
+ $nonce->consumer_key = $this->consumer_key;
+ $nonce->delete();
+ }
+
}
diff --git a/classes/File.php b/classes/File.php
index 34e4632a8..307fdb686 100644
--- a/classes/File.php
+++ b/classes/File.php
@@ -176,8 +176,22 @@ class File extends Memcached_DataObject
return "$nickname-$datestamp-$random.$ext";
}
+ /**
+ * Validation for as-saved base filenames
+ */
+ static function validFilename($filename)
+ {
+ return preg_match('/^[A-Za-z0-9._-]+$/', $filename);
+ }
+
+ /**
+ * @throws ClientException on invalid filename
+ */
static function path($filename)
{
+ if (!self::validFilename($filename)) {
+ throw new ClientException("Invalid filename");
+ }
$dir = common_config('attachments', 'dir');
if ($dir[strlen($dir)-1] != '/') {
@@ -189,6 +203,9 @@ class File extends Memcached_DataObject
static function url($filename)
{
+ if (!self::validFilename($filename)) {
+ throw new ClientException("Invalid filename");
+ }
if(common_config('site','private')) {
return common_local_url('getfile',
diff --git a/classes/Memcached_DataObject.php b/classes/Memcached_DataObject.php
index 2cc6377f8..ab65c30ce 100644
--- a/classes/Memcached_DataObject.php
+++ b/classes/Memcached_DataObject.php
@@ -147,6 +147,7 @@ class Memcached_DataObject extends DB_DataObject
{
$result = parent::insert();
if ($result) {
+ $this->fixupTimestamps();
$this->encache(); // in case of cached negative lookups
}
return $result;
@@ -159,6 +160,7 @@ class Memcached_DataObject extends DB_DataObject
}
$result = parent::update($orig);
if ($result) {
+ $this->fixupTimestamps();
$this->encache();
}
return $result;
@@ -366,7 +368,7 @@ class Memcached_DataObject extends DB_DataObject
}
/**
- * sends query to database - this is the private one that must work
+ * sends query to database - this is the private one that must work
* - internal functions use this rather than $this->query()
*
* Overridden to do logging.
@@ -428,7 +430,7 @@ class Memcached_DataObject extends DB_DataObject
//
// WARNING WARNING if we end up actually using multiple DBs at a time
// we'll need some fancier logic here.
- if (!$exists && !empty($_DB_DATAOBJECT['CONNECTIONS'])) {
+ if (!$exists && !empty($_DB_DATAOBJECT['CONNECTIONS']) && php_sapi_name() == 'cli') {
foreach ($_DB_DATAOBJECT['CONNECTIONS'] as $index => $conn) {
if (!empty($conn)) {
$conn->disconnect();
@@ -529,4 +531,51 @@ class Memcached_DataObject extends DB_DataObject
return $c->delete($cacheKey);
}
+
+ function fixupTimestamps()
+ {
+ // Fake up timestamp columns
+ $columns = $this->table();
+ foreach ($columns as $name => $type) {
+ if ($type & DB_DATAOBJECT_MYSQLTIMESTAMP) {
+ $this->$name = common_sql_now();
+ }
+ }
+ }
+
+ function debugDump()
+ {
+ common_debug("debugDump: " . common_log_objstring($this));
+ }
+
+ function raiseError($message, $type = null, $behaviour = null)
+ {
+ throw new ServerException("DB_DataObject error [$type]: $message");
+ }
+
+ static function cacheGet($keyPart)
+ {
+ $c = self::memcache();
+
+ if (empty($c)) {
+ return false;
+ }
+
+ $cacheKey = common_cache_key($keyPart);
+
+ return $c->get($cacheKey);
+ }
+
+ static function cacheSet($keyPart, $value)
+ {
+ $c = self::memcache();
+
+ if (empty($c)) {
+ return false;
+ }
+
+ $cacheKey = common_cache_key($keyPart);
+
+ return $c->set($cacheKey, $value);
+ }
}
diff --git a/classes/Notice.php b/classes/Notice.php
index 0966697e2..42878d94f 100644
--- a/classes/Notice.php
+++ b/classes/Notice.php
@@ -140,7 +140,7 @@ class Notice extends Memcached_DataObject
foreach(array_unique($hashtags) as $hashtag) {
/* elide characters we don't want in the tag */
$this->saveTag($hashtag);
- self::blow('profile:notice_ids_tagged:%d:%s', $this->profile_id, $tag->tag);
+ self::blow('profile:notice_ids_tagged:%d:%s', $this->profile_id, $hashtag);
}
return true;
}
@@ -326,9 +326,7 @@ class Notice extends Memcached_DataObject
# XXX: someone clever could prepend instead of clearing the cache
$notice->blowOnInsert();
- $qm = QueueManager::get();
-
- $qm->enqueue($notice, 'distrib');
+ $notice->distribute();
return $notice;
}
@@ -1374,8 +1372,6 @@ class Notice extends Memcached_DataObject
}
$reply->free();
-
- return $ids;
}
function clearRepeats()
@@ -1445,4 +1441,31 @@ class Notice extends Memcached_DataObject
$gi->free();
}
+
+ function distribute()
+ {
+ if (common_config('queue', 'inboxes')) {
+ // If there's a failure, we want to _force_
+ // distribution at this point.
+ try {
+ $qm = QueueManager::get();
+ $qm->enqueue($this, 'distrib');
+ } catch (Exception $e) {
+ // If the exception isn't transient, this
+ // may throw more exceptions as DQH does
+ // its own enqueueing. So, we ignore them!
+ try {
+ $handler = new DistribQueueHandler();
+ $handler->handle($this);
+ } catch (Exception $e) {
+ common_log(LOG_ERR, "emergency redistribution resulted in " . $e->getMessage());
+ }
+ // Re-throw so somebody smarter can handle it.
+ throw $e;
+ }
+ } else {
+ $handler = new DistribQueueHandler();
+ $handler->handle($this);
+ }
+ }
}
diff --git a/classes/Oauth_application.php b/classes/Oauth_application.php
index a6b539087..748b64220 100644
--- a/classes/Oauth_application.php
+++ b/classes/Oauth_application.php
@@ -137,4 +137,21 @@ class Oauth_application extends Memcached_DataObject
}
}
+ function delete()
+ {
+ $this->_deleteAppUsers();
+
+ $consumer = $this->getConsumer();
+ $consumer->delete();
+
+ parent::delete();
+ }
+
+ function _deleteAppUsers()
+ {
+ $oauser = new Oauth_application_user();
+ $oauser->application_id = $this->id;
+ $oauser->delete();
+ }
+
}
diff --git a/classes/Profile_role.php b/classes/Profile_role.php
index 74aca3730..bf2c453ed 100644
--- a/classes/Profile_role.php
+++ b/classes/Profile_role.php
@@ -48,6 +48,7 @@ class Profile_role extends Memcached_DataObject
return Memcached_DataObject::pkeyGet('Profile_role', $kv);
}
+ const OWNER = 'owner';
const MODERATOR = 'moderator';
const ADMINISTRATOR = 'administrator';
const SANDBOXED = 'sandboxed';
diff --git a/classes/Session.php b/classes/Session.php
index 79a69a96e..2422f8b68 100644
--- a/classes/Session.php
+++ b/classes/Session.php
@@ -64,8 +64,12 @@ class Session extends Memcached_DataObject
$session = Session::staticGet('id', $id);
if (empty($session)) {
+ self::logdeb("Couldn't find '$id'");
return '';
} else {
+ self::logdeb("Found '$id', returning " .
+ strlen($session->session_data) .
+ " chars of data");
return (string)$session->session_data;
}
}
@@ -77,14 +81,24 @@ class Session extends Memcached_DataObject
$session = Session::staticGet('id', $id);
if (empty($session)) {
+ self::logdeb("'$id' doesn't yet exist; inserting.");
$session = new Session();
$session->id = $id;
$session->session_data = $session_data;
$session->created = common_sql_now();
- return $session->insert();
+ $result = $session->insert();
+
+ if (!$result) {
+ common_log_db_error($session, 'INSERT', __FILE__);
+ self::logdeb("Failed to insert '$id'.");
+ } else {
+ self::logdeb("Successfully inserted '$id' (result = $result).");
+ }
+ return $result;
} else {
+ self::logdeb("'$id' already exists; updating.");
if (strcmp($session->session_data, $session_data) == 0) {
self::logdeb("Not writing session '$id'; unchanged");
return true;
@@ -95,7 +109,16 @@ class Session extends Memcached_DataObject
$session->session_data = $session_data;
- return $session->update($orig);
+ $result = $session->update($orig);
+
+ if (!$result) {
+ common_log_db_error($session, 'UPDATE', __FILE__);
+ self::logdeb("Failed to update '$id'.");
+ } else {
+ self::logdeb("Successfully updated '$id' (result = $result).");
+ }
+
+ return $result;
}
}
}
@@ -106,8 +129,17 @@ class Session extends Memcached_DataObject
$session = Session::staticGet('id', $id);
- if (!empty($session)) {
- return $session->delete();
+ if (empty($session)) {
+ self::logdeb("Can't find '$id' to delete.");
+ } else {
+ $result = $session->delete();
+ if (!$result) {
+ common_log_db_error($session, 'DELETE', __FILE__);
+ self::logdeb("Failed to delete '$id'.");
+ } else {
+ self::logdeb("Successfully deleted '$id' (result = $result).");
+ }
+ return $result;
}
}
@@ -132,7 +164,10 @@ class Session extends Memcached_DataObject
$session->free();
+ self::logdeb("Found " . count($ids) . " ids to delete.");
+
foreach ($ids as $id) {
+ self::logdeb("Destroying session '$id'.");
self::destroy($id);
}
}
diff --git a/classes/User.php b/classes/User.php
index 6ea975202..0ab816b57 100644
--- a/classes/User.php
+++ b/classes/User.php
@@ -209,8 +209,6 @@ class User extends Memcached_DataObject
$profile = new Profile();
- $profile->query('BEGIN');
-
if(!empty($email))
{
$email = common_canonical_email($email);
@@ -220,7 +218,7 @@ class User extends Memcached_DataObject
$profile->nickname = $nickname;
if(! User::allowed_nickname($nickname)){
common_log(LOG_WARNING, sprintf("Attempted to register a nickname that is not allowed: %s", $profile->nickname),
- __FILE__);
+ __FILE__);
}
$profile->profileurl = common_profile_url($nickname);
@@ -248,22 +246,10 @@ class User extends Memcached_DataObject
$profile->created = common_sql_now();
- $id = $profile->insert();
-
- if (empty($id)) {
- common_log_db_error($profile, 'INSERT', __FILE__);
- return false;
- }
-
$user = new User();
- $user->id = $id;
$user->nickname = $nickname;
- if (!empty($password)) { // may not have a password for OpenID users
- $user->password = common_munge_password($password, $id);
- }
-
// Users who respond to invite email have proven their ownership of that address
if (!empty($code)) {
@@ -282,109 +268,129 @@ class User extends Memcached_DataObject
$user->inboxed = 1;
$user->created = common_sql_now();
- $user->uri = common_user_uri($user);
-
- $result = $user->insert();
- if (!$result) {
- common_log_db_error($user, 'INSERT', __FILE__);
- return false;
- }
-
- // Everyone gets an inbox
+ if (Event::handle('StartUserRegister', array(&$user, &$profile))) {
- $inbox = new Inbox();
+ $profile->query('BEGIN');
- $inbox->user_id = $user->id;
- $inbox->notice_ids = '';
+ $id = $profile->insert();
- $result = $inbox->insert();
+ if (empty($id)) {
+ common_log_db_error($profile, 'INSERT', __FILE__);
+ return false;
+ }
- if (!$result) {
- common_log_db_error($inbox, 'INSERT', __FILE__);
- return false;
- }
+ $user->id = $id;
+ $user->uri = common_user_uri($user);
+ if (!empty($password)) { // may not have a password for OpenID users
+ $user->password = common_munge_password($password, $id);
+ }
- // Everyone is subscribed to themself
+ $result = $user->insert();
- $subscription = new Subscription();
- $subscription->subscriber = $user->id;
- $subscription->subscribed = $user->id;
- $subscription->created = $user->created;
+ if (!$result) {
+ common_log_db_error($user, 'INSERT', __FILE__);
+ return false;
+ }
- $result = $subscription->insert();
+ // Everyone gets an inbox
- if (!$result) {
- common_log_db_error($subscription, 'INSERT', __FILE__);
- return false;
- }
+ $inbox = new Inbox();
- if (!empty($email) && !$user->email) {
+ $inbox->user_id = $user->id;
+ $inbox->notice_ids = '';
- $confirm = new Confirm_address();
- $confirm->code = common_confirmation_code(128);
- $confirm->user_id = $user->id;
- $confirm->address = $email;
- $confirm->address_type = 'email';
+ $result = $inbox->insert();
- $result = $confirm->insert();
if (!$result) {
- common_log_db_error($confirm, 'INSERT', __FILE__);
+ common_log_db_error($inbox, 'INSERT', __FILE__);
return false;
}
- }
- if (!empty($code) && $user->email) {
- $user->emailChanged();
- }
+ // Everyone is subscribed to themself
- // Default system subscription
+ $subscription = new Subscription();
+ $subscription->subscriber = $user->id;
+ $subscription->subscribed = $user->id;
+ $subscription->created = $user->created;
- $defnick = common_config('newuser', 'default');
+ $result = $subscription->insert();
- if (!empty($defnick)) {
- $defuser = User::staticGet('nickname', $defnick);
- if (empty($defuser)) {
- common_log(LOG_WARNING, sprintf("Default user %s does not exist.", $defnick),
- __FILE__);
- } else {
- $defsub = new Subscription();
- $defsub->subscriber = $user->id;
- $defsub->subscribed = $defuser->id;
- $defsub->created = $user->created;
+ if (!$result) {
+ common_log_db_error($subscription, 'INSERT', __FILE__);
+ return false;
+ }
+
+ if (!empty($email) && !$user->email) {
+
+ $confirm = new Confirm_address();
+ $confirm->code = common_confirmation_code(128);
+ $confirm->user_id = $user->id;
+ $confirm->address = $email;
+ $confirm->address_type = 'email';
- $result = $defsub->insert();
+ $result = $confirm->insert();
if (!$result) {
- common_log_db_error($defsub, 'INSERT', __FILE__);
+ common_log_db_error($confirm, 'INSERT', __FILE__);
return false;
}
}
- }
- $profile->query('COMMIT');
+ if (!empty($code) && $user->email) {
+ $user->emailChanged();
+ }
+
+ // Default system subscription
- if (!empty($email) && !$user->email) {
- mail_confirm_address($user, $confirm->code, $profile->nickname, $email);
- }
+ $defnick = common_config('newuser', 'default');
- // Welcome message
+ if (!empty($defnick)) {
+ $defuser = User::staticGet('nickname', $defnick);
+ if (empty($defuser)) {
+ common_log(LOG_WARNING, sprintf("Default user %s does not exist.", $defnick),
+ __FILE__);
+ } else {
+ $defsub = new Subscription();
+ $defsub->subscriber = $user->id;
+ $defsub->subscribed = $defuser->id;
+ $defsub->created = $user->created;
- $welcome = common_config('newuser', 'welcome');
+ $result = $defsub->insert();
- if (!empty($welcome)) {
- $welcomeuser = User::staticGet('nickname', $welcome);
- if (empty($welcomeuser)) {
- common_log(LOG_WARNING, sprintf("Welcome user %s does not exist.", $defnick),
- __FILE__);
- } else {
- $notice = Notice::saveNew($welcomeuser->id,
- sprintf(_('Welcome to %1$s, @%2$s!'),
- common_config('site', 'name'),
- $user->nickname),
- 'system');
+ if (!$result) {
+ common_log_db_error($defsub, 'INSERT', __FILE__);
+ return false;
+ }
+ }
+ }
+ $profile->query('COMMIT');
+
+ if (!empty($email) && !$user->email) {
+ mail_confirm_address($user, $confirm->code, $profile->nickname, $email);
+ }
+
+ // Welcome message
+
+ $welcome = common_config('newuser', 'welcome');
+
+ if (!empty($welcome)) {
+ $welcomeuser = User::staticGet('nickname', $welcome);
+ if (empty($welcomeuser)) {
+ common_log(LOG_WARNING, sprintf("Welcome user %s does not exist.", $defnick),
+ __FILE__);
+ } else {
+ $notice = Notice::saveNew($welcomeuser->id,
+ sprintf(_('Welcome to %1$s, @%2$s!'),
+ common_config('site', 'name'),
+ $user->nickname),
+ 'system');
+
+ }
}
+
+ Event::handle('EndUserRegister', array(&$profile, &$user));
}
return $user;
@@ -925,4 +931,30 @@ class User extends Memcached_DataObject
return $share;
}
}
+
+ static function siteOwner()
+ {
+ $owner = self::cacheGet('user:site_owner');
+
+ if ($owner === false) { // cache miss
+
+ $pr = new Profile_role();
+
+ $pr->role = Profile_role::OWNER;
+
+ $pr->orderBy('created');
+
+ $pr->limit(1);
+
+ if ($pr->find(true)) {
+ $owner = User::staticGet('id', $pr->profile_id);
+ } else {
+ $owner = null;
+ }
+
+ self::cacheSet('user:site_owner', $owner);
+ }
+
+ return $owner;
+ }
}
diff --git a/classes/status_network.ini b/classes/status_network.ini
index 8123265e4..adb71cba7 100644
--- a/classes/status_network.ini
+++ b/classes/status_network.ini
@@ -11,6 +11,7 @@ theme = 2
logo = 2
created = 142
modified = 384
+tags = 34
[status_network__keys]
nickname = K
diff --git a/classes/statusnet.ini b/classes/statusnet.ini
index 6203650a6..4ace4407b 100644
--- a/classes/statusnet.ini
+++ b/classes/statusnet.ini
@@ -353,7 +353,7 @@ notice_id = K
id = 129
owner = 129
consumer_key = 130
-name = 130
+name = 2
description = 2
icon = 130
source_url = 2
@@ -367,6 +367,7 @@ modified = 384
[oauth_application__keys]
id = N
+name = U
[oauth_application_user]
profile_id = 129
diff --git a/db/08to09.sql b/db/08to09.sql
index b10e47dbc..d5f30a26b 100644
--- a/db/08to09.sql
+++ b/db/08to09.sql
@@ -110,3 +110,34 @@ insert into queue_item_new (frame,transport,created,claimed)
alter table queue_item rename to queue_item_old;
alter table queue_item_new rename to queue_item;
+alter table consumer
+ add column consumer_secret varchar(255) not null comment 'secret value';
+
+create table oauth_application (
+ id integer auto_increment primary key comment 'unique identifier',
+ owner integer not null comment 'owner of the application' references profile (id),
+ consumer_key varchar(255) not null comment 'application consumer key' references consumer (consumer_key),
+ name varchar(255) not null comment 'name of the application',
+ description varchar(255) comment 'description of the application',
+ icon varchar(255) not null comment 'application icon',
+ source_url varchar(255) comment 'application homepage - used for source link',
+ organization varchar(255) comment 'name of the organization running the application',
+ homepage varchar(255) comment 'homepage for the organization',
+ callback_url varchar(255) comment 'url to redirect to after authentication',
+ type tinyint default 0 comment 'type of app, 1 = browser, 2 = desktop',
+ access_type tinyint default 0 comment 'default access type, bit 1 = read, bit 2 = write',
+ created datetime not null comment 'date this record was created',
+ modified timestamp comment 'date this record was modified'
+) ENGINE=InnoDB CHARACTER SET utf8 COLLATE utf8_bin;
+
+create table oauth_application_user (
+ profile_id integer not null comment 'user of the application' references profile (id),
+ application_id integer not null comment 'id of the application' references oauth_application (id),
+ access_type tinyint default 0 comment 'access type, bit 1 = read, bit 2 = write, bit 3 = revoked',
+ token varchar(255) comment 'request or access token',
+ created datetime not null comment 'date this record was created',
+ modified timestamp comment 'date this record was modified',
+ constraint primary key (profile_id, application_id)
+) ENGINE=InnoDB CHARACTER SET utf8 COLLATE utf8_bin;
+
+
diff --git a/db/rc3torc4.sql b/db/rc3torc4.sql
index 8342c4bc6..917c1f1c4 100644
--- a/db/rc3torc4.sql
+++ b/db/rc3torc4.sql
@@ -15,7 +15,9 @@ alter table queue_item rename to queue_item_old;
alter table queue_item_new rename to queue_item;
alter table consumer
- add consumer_secret varchar(255) not null comment 'secret value',
+ add consumer_secret varchar(255) not null comment 'secret value';
+
+alter table token
add verifier varchar(255) comment 'verifier string for OAuth 1.0a',
add verified_callback varchar(255) comment 'verified callback URL for OAuth 1.0a';
diff --git a/db/statusnet.sql b/db/statusnet.sql
index 17de4fd0d..8946f4d7e 100644
--- a/db/statusnet.sql
+++ b/db/statusnet.sql
@@ -214,7 +214,7 @@ create table oauth_application (
id integer auto_increment primary key comment 'unique identifier',
owner integer not null comment 'owner of the application' references profile (id),
consumer_key varchar(255) not null comment 'application consumer key' references consumer (consumer_key),
- name varchar(255) not null comment 'name of the application',
+ name varchar(255) unique key comment 'name of the application',
description varchar(255) comment 'description of the application',
icon varchar(255) not null comment 'application icon',
source_url varchar(255) comment 'application homepage - used for source link',
@@ -230,7 +230,7 @@ create table oauth_application (
create table oauth_application_user (
profile_id integer not null comment 'user of the application' references profile (id),
application_id integer not null comment 'id of the application' references oauth_application (id),
- access_type tinyint default 0 comment 'access type, bit 1 = read, bit 2 = write, bit 3 = revoked',
+ access_type tinyint default 0 comment 'access type, bit 1 = read, bit 2 = write',
token varchar(255) comment 'request or access token',
created datetime not null comment 'date this record was created',
modified timestamp comment 'date this record was modified',
diff --git a/index.php b/index.php
index b5edc0f94..06ff9900f 100644
--- a/index.php
+++ b/index.php
@@ -146,12 +146,27 @@ function formatBacktraceLine($n, $line)
return $out;
}
-function checkMirror($action_obj, $args)
+function setupRW()
{
global $config;
static $alwaysRW = array('session', 'remember_me');
+ // We ensure that these tables always are used
+ // on the master DB
+
+ $config['db']['database_rw'] = $config['db']['database'];
+ $config['db']['ini_rw'] = INSTALLDIR.'/classes/statusnet.ini';
+
+ foreach ($alwaysRW as $table) {
+ $config['db']['table_'.$table] = 'rw';
+ }
+}
+
+function checkMirror($action_obj, $args)
+{
+ global $config;
+
if (common_config('db', 'mirror') && $action_obj->isReadOnly($args)) {
if (is_array(common_config('db', 'mirror'))) {
// "load balancing", ha ha
@@ -162,16 +177,6 @@ function checkMirror($action_obj, $args)
$mirror = common_config('db', 'mirror');
}
- // We ensure that these tables always are used
- // on the master DB
-
- $config['db']['database_rw'] = $config['db']['database'];
- $config['db']['ini_rw'] = INSTALLDIR.'/classes/statusnet.ini';
-
- foreach ($alwaysRW as $table) {
- $config['db']['table_'.$table] = 'rw';
- }
-
// everyone else uses the mirror
$config['db']['database'] = $mirror;
@@ -237,9 +242,13 @@ function main()
PEAR::setErrorHandling(PEAR_ERROR_CALLBACK, 'handleError');
+ // Make sure RW database is setup
+
+ setupRW();
+
// XXX: we need a little more structure in this script
- // get and cache current user
+ // get and cache current user (may hit RW!)
$user = common_current_user();
@@ -276,8 +285,9 @@ function main()
if (!$user && common_config('site', 'private')
&& !isLoginAction($action)
&& !preg_match('/rss$/', $action)
- && !preg_match('/^Api/', $action)
- ) {
+ && $action != 'robotstxt'
+ && !preg_match('/^Api/', $action)) {
+
// set returnto
$rargs =& common_copy_args($args);
unset($rargs['action']);
diff --git a/js/jquery.form.js b/js/jquery.form.js
index 936b847ab..dde394270 100644
--- a/js/jquery.form.js
+++ b/js/jquery.form.js
@@ -1,632 +1,660 @@
-/*
- * jQuery Form Plugin
- * version: 2.17 (06-NOV-2008)
- * @requires jQuery v1.2.2 or later
- *
- * Examples and documentation at: http://malsup.com/jquery/form/
- * Dual licensed under the MIT and GPL licenses:
- * http://www.opensource.org/licenses/mit-license.php
- * http://www.gnu.org/licenses/gpl.html
- *
- * Revision: $Id$
- */
-;(function($) {
-
-/*
- Usage Note:
- -----------
- Do not use both ajaxSubmit and ajaxForm on the same form. These
- functions are intended to be exclusive. Use ajaxSubmit if you want
- to bind your own submit handler to the form. For example,
-
- $(document).ready(function() {
- $('#myForm').bind('submit', function() {
- $(this).ajaxSubmit({
- target: '#output'
- });
- return false; // <-- important!
- });
- });
-
- Use ajaxForm when you want the plugin to manage all the event binding
- for you. For example,
-
- $(document).ready(function() {
- $('#myForm').ajaxForm({
- target: '#output'
- });
- });
-
- When using ajaxForm, the ajaxSubmit function will be invoked for you
- at the appropriate time.
-*/
-
-/**
- * ajaxSubmit() provides a mechanism for immediately submitting
- * an HTML form using AJAX.
- */
-$.fn.ajaxSubmit = function(options) {
- // fast fail if nothing selected (http://dev.jquery.com/ticket/2752)
- if (!this.length) {
- log('ajaxSubmit: skipping submit process - no element selected');
- return this;
- }
-
- if (typeof options == 'function')
- options = { success: options };
-
- options = $.extend({
- url: this.attr('action') || window.location.toString(),
- type: this.attr('method') || 'GET'
- }, options || {});
-
- // hook for manipulating the form data before it is extracted;
- // convenient for use with rich editors like tinyMCE or FCKEditor
- var veto = {};
- this.trigger('form-pre-serialize', [this, options, veto]);
- if (veto.veto) {
- log('ajaxSubmit: submit vetoed via form-pre-serialize trigger');
- return this;
- }
-
- // provide opportunity to alter form data before it is serialized
- if (options.beforeSerialize && options.beforeSerialize(this, options) === false) {
- log('ajaxSubmit: submit aborted via beforeSerialize callback');
- return this;
- }
-
- var a = this.formToArray(options.semantic);
- if (options.data) {
- options.extraData = options.data;
- for (var n in options.data) {
- if(options.data[n] instanceof Array) {
- for (var k in options.data[n])
- a.push( { name: n, value: options.data[n][k] } )
- }
- else
- a.push( { name: n, value: options.data[n] } );
- }
- }
-
- // give pre-submit callback an opportunity to abort the submit
- if (options.beforeSubmit && options.beforeSubmit(a, this, options) === false) {
- log('ajaxSubmit: submit aborted via beforeSubmit callback');
- return this;
- }
-
- // fire vetoable 'validate' event
- this.trigger('form-submit-validate', [a, this, options, veto]);
- if (veto.veto) {
- log('ajaxSubmit: submit vetoed via form-submit-validate trigger');
- return this;
- }
-
- var q = $.param(a);
-
- if (options.type.toUpperCase() == 'GET') {
- options.url += (options.url.indexOf('?') >= 0 ? '&' : '?') + q;
- options.data = null; // data is null for 'get'
- }
- else
- options.data = q; // data is the query string for 'post'
-
- var $form = this, callbacks = [];
- if (options.resetForm) callbacks.push(function() { $form.resetForm(); });
- if (options.clearForm) callbacks.push(function() { $form.clearForm(); });
-
- // perform a load on the target only if dataType is not provided
- if (!options.dataType && options.target) {
- var oldSuccess = options.success || function(){};
- callbacks.push(function(data) {
- $(options.target).html(data).each(oldSuccess, arguments);
- });
- }
- else if (options.success)
- callbacks.push(options.success);
-
- options.success = function(data, status) {
- for (var i=0, max=callbacks.length; i < max; i++)
- callbacks[i].apply(options, [data, status, $form]);
- };
-
- // are there files to upload?
- var files = $('input:file', this).fieldValue();
- var found = false;
- for (var j=0; j < files.length; j++)
- if (files[j])
- found = true;
-
- // options.iframe allows user to force iframe mode
- if (options.iframe || found) {
- // hack to fix Safari hang (thanks to Tim Molendijk for this)
- // see: http://groups.google.com/group/jquery-dev/browse_thread/thread/36395b7ab510dd5d
- if ($.browser.safari && options.closeKeepAlive)
- $.get(options.closeKeepAlive, fileUpload);
- else
- fileUpload();
- }
- else
- $.ajax(options);
-
- // fire 'notify' event
- this.trigger('form-submit-notify', [this, options]);
- return this;
-
-
- // private function for handling file uploads (hat tip to YAHOO!)
- function fileUpload() {
- var form = $form[0];
-
- if ($(':input[name=submit]', form).length) {
- alert('Error: Form elements must not be named "submit".');
- return;
- }
-
- var opts = $.extend({}, $.ajaxSettings, options);
- var s = jQuery.extend(true, {}, $.extend(true, {}, $.ajaxSettings), opts);
-
- var id = 'jqFormIO' + (new Date().getTime());
- var $io = $('<iframe id="' + id + '" name="' + id + '" />');
- var io = $io[0];
-
- if ($.browser.msie || $.browser.opera)
- io.src = 'javascript:false;document.write("");';
- $io.css({ position: 'absolute', top: '-1000px', left: '-1000px' });
-
- var xhr = { // mock object
- aborted: 0,
- responseText: null,
- responseXML: null,
- status: 0,
- statusText: 'n/a',
- getAllResponseHeaders: function() {},
- getResponseHeader: function() {},
- setRequestHeader: function() {},
- abort: function() {
- this.aborted = 1;
- $io.attr('src','about:blank'); // abort op in progress
- }
- };
-
- var g = opts.global;
- // trigger ajax global events so that activity/block indicators work like normal
- if (g && ! $.active++) $.event.trigger("ajaxStart");
- if (g) $.event.trigger("ajaxSend", [xhr, opts]);
-
- if (s.beforeSend && s.beforeSend(xhr, s) === false) {
- s.global && jQuery.active--;
- return;
- }
- if (xhr.aborted)
- return;
-
- var cbInvoked = 0;
- var timedOut = 0;
-
- // add submitting element to data if we know it
- var sub = form.clk;
- if (sub) {
- var n = sub.name;
- if (n && !sub.disabled) {
- options.extraData = options.extraData || {};
- options.extraData[n] = sub.value;
- if (sub.type == "image") {
- options.extraData[name+'.x'] = form.clk_x;
- options.extraData[name+'.y'] = form.clk_y;
- }
- }
- }
-
- // take a breath so that pending repaints get some cpu time before the upload starts
- setTimeout(function() {
- // make sure form attrs are set
- var t = $form.attr('target'), a = $form.attr('action');
- $form.attr({
- target: id,
- method: 'POST',
- action: opts.url
- });
-
- // ie borks in some cases when setting encoding
- if (! options.skipEncodingOverride) {
- $form.attr({
- encoding: 'multipart/form-data',
- enctype: 'multipart/form-data'
- });
- }
-
- // support timout
- if (opts.timeout)
- setTimeout(function() { timedOut = true; cb(); }, opts.timeout);
-
- // add "extra" data to form if provided in options
- var extraInputs = [];
- try {
- if (options.extraData)
- for (var n in options.extraData)
- extraInputs.push(
- $('<input type="hidden" name="'+n+'" value="'+options.extraData[n]+'" />')
- .appendTo(form)[0]);
-
- // add iframe to doc and submit the form
- $io.appendTo('body');
- io.attachEvent ? io.attachEvent('onload', cb) : io.addEventListener('load', cb, false);
- form.submit();
- }
- finally {
- // reset attrs and remove "extra" input elements
- $form.attr('action', a);
- t ? $form.attr('target', t) : $form.removeAttr('target');
- $(extraInputs).remove();
- }
- }, 10);
-
- function cb() {
- if (cbInvoked++) return;
-
- io.detachEvent ? io.detachEvent('onload', cb) : io.removeEventListener('load', cb, false);
-
- var operaHack = 0;
- var ok = true;
- try {
- if (timedOut) throw 'timeout';
- // extract the server response from the iframe
- var data, doc;
-
- doc = io.contentWindow ? io.contentWindow.document : io.contentDocument ? io.contentDocument : io.document;
-
- if (doc.body == null && !operaHack && $.browser.opera) {
- // In Opera 9.2.x the iframe DOM is not always traversable when
- // the onload callback fires so we give Opera 100ms to right itself
- operaHack = 1;
- cbInvoked--;
- setTimeout(cb, 100);
- return;
- }
-
- xhr.responseText = doc.body ? doc.body.innerHTML : null;
- xhr.responseXML = doc.XMLDocument ? doc.XMLDocument : doc;
- xhr.getResponseHeader = function(header){
- var headers = {'content-type': opts.dataType};
- return headers[header];
- };
-
- if (opts.dataType == 'json' || opts.dataType == 'script') {
- var ta = doc.getElementsByTagName('textarea')[0];
- xhr.responseText = ta ? ta.value : xhr.responseText;
- }
- else if (opts.dataType == 'xml' && !xhr.responseXML && xhr.responseText != null) {
- xhr.responseXML = toXml(xhr.responseText);
- }
- data = $.httpData(xhr, opts.dataType);
- }
- catch(e){
- ok = false;
- $.handleError(opts, xhr, 'error', e);
- }
-
- // ordering of these callbacks/triggers is odd, but that's how $.ajax does it
- if (ok) {
- opts.success(data, 'success');
- if (g) $.event.trigger("ajaxSuccess", [xhr, opts]);
- }
- if (g) $.event.trigger("ajaxComplete", [xhr, opts]);
- if (g && ! --$.active) $.event.trigger("ajaxStop");
- if (opts.complete) opts.complete(xhr, ok ? 'success' : 'error');
-
- // clean up
- setTimeout(function() {
- $io.remove();
- xhr.responseXML = null;
- }, 100);
- };
-
- function toXml(s, doc) {
- if (window.ActiveXObject) {
- doc = new ActiveXObject('Microsoft.XMLDOM');
- doc.async = 'false';
- doc.loadXML(s);
- }
- else
- doc = (new DOMParser()).parseFromString(s, 'text/xml');
- return (doc && doc.documentElement && doc.documentElement.tagName != 'parsererror') ? doc : null;
- };
- };
-};
-
-/**
- * ajaxForm() provides a mechanism for fully automating form submission.
- *
- * The advantages of using this method instead of ajaxSubmit() are:
- *
- * 1: This method will include coordinates for <input type="image" /> elements (if the element
- * is used to submit the form).
- * 2. This method will include the submit element's name/value data (for the element that was
- * used to submit the form).
- * 3. This method binds the submit() method to the form for you.
- *
- * The options argument for ajaxForm works exactly as it does for ajaxSubmit. ajaxForm merely
- * passes the options argument along after properly binding events for submit elements and
- * the form itself.
- */
-$.fn.ajaxForm = function(options) {
- return this.ajaxFormUnbind().bind('submit.form-plugin',function() {
- $(this).ajaxSubmit(options);
- return false;
- }).each(function() {
- // store options in hash
- $(":submit,input:image", this).bind('click.form-plugin',function(e) {
- var form = this.form;
- form.clk = this;
- if (this.type == 'image') {
- if (e.offsetX != undefined) {
- form.clk_x = e.offsetX;
- form.clk_y = e.offsetY;
- } else if (typeof $.fn.offset == 'function') { // try to use dimensions plugin
- var offset = $(this).offset();
- form.clk_x = e.pageX - offset.left;
- form.clk_y = e.pageY - offset.top;
- } else {
- form.clk_x = e.pageX - this.offsetLeft;
- form.clk_y = e.pageY - this.offsetTop;
- }
- }
- // clear form vars
- setTimeout(function() { form.clk = form.clk_x = form.clk_y = null; }, 10);
- });
- });
-};
-
-// ajaxFormUnbind unbinds the event handlers that were bound by ajaxForm
-$.fn.ajaxFormUnbind = function() {
- this.unbind('submit.form-plugin');
- return this.each(function() {
- $(":submit,input:image", this).unbind('click.form-plugin');
- });
-
-};
-
-/**
- * formToArray() gathers form element data into an array of objects that can
- * be passed to any of the following ajax functions: $.get, $.post, or load.
- * Each object in the array has both a 'name' and 'value' property. An example of
- * an array for a simple login form might be:
- *
- * [ { name: 'username', value: 'jresig' }, { name: 'password', value: 'secret' } ]
- *
- * It is this array that is passed to pre-submit callback functions provided to the
- * ajaxSubmit() and ajaxForm() methods.
- */
-$.fn.formToArray = function(semantic) {
- var a = [];
- if (this.length == 0) return a;
-
- var form = this[0];
- var els = semantic ? form.getElementsByTagName('*') : form.elements;
- if (!els) return a;
- for(var i=0, max=els.length; i < max; i++) {
- var el = els[i];
- var n = el.name;
- if (!n) continue;
-
- if (semantic && form.clk && el.type == "image") {
- // handle image inputs on the fly when semantic == true
- if(!el.disabled && form.clk == el)
- a.push({name: n+'.x', value: form.clk_x}, {name: n+'.y', value: form.clk_y});
- continue;
- }
-
- var v = $.fieldValue(el, true);
- if (v && v.constructor == Array) {
- for(var j=0, jmax=v.length; j < jmax; j++)
- a.push({name: n, value: v[j]});
- }
- else if (v !== null && typeof v != 'undefined')
- a.push({name: n, value: v});
- }
-
- if (!semantic && form.clk) {
- // input type=='image' are not found in elements array! handle them here
- var inputs = form.getElementsByTagName("input");
- for(var i=0, max=inputs.length; i < max; i++) {
- var input = inputs[i];
- var n = input.name;
- if(n && !input.disabled && input.type == "image" && form.clk == input)
- a.push({name: n+'.x', value: form.clk_x}, {name: n+'.y', value: form.clk_y});
- }
- }
- return a;
-};
-
-/**
- * Serializes form data into a 'submittable' string. This method will return a string
- * in the format: name1=value1&amp;name2=value2
- */
-$.fn.formSerialize = function(semantic) {
- //hand off to jQuery.param for proper encoding
- return $.param(this.formToArray(semantic));
-};
-
-/**
- * Serializes all field elements in the jQuery object into a query string.
- * This method will return a string in the format: name1=value1&amp;name2=value2
- */
-$.fn.fieldSerialize = function(successful) {
- var a = [];
- this.each(function() {
- var n = this.name;
- if (!n) return;
- var v = $.fieldValue(this, successful);
- if (v && v.constructor == Array) {
- for (var i=0,max=v.length; i < max; i++)
- a.push({name: n, value: v[i]});
- }
- else if (v !== null && typeof v != 'undefined')
- a.push({name: this.name, value: v});
- });
- //hand off to jQuery.param for proper encoding
- return $.param(a);
-};
-
-/**
- * Returns the value(s) of the element in the matched set. For example, consider the following form:
- *
- * <form><fieldset>
- * <input name="A" type="text" />
- * <input name="A" type="text" />
- * <input name="B" type="checkbox" value="B1" />
- * <input name="B" type="checkbox" value="B2"/>
- * <input name="C" type="radio" value="C1" />
- * <input name="C" type="radio" value="C2" />
- * </fieldset></form>
- *
- * var v = $(':text').fieldValue();
- * // if no values are entered into the text inputs
- * v == ['','']
- * // if values entered into the text inputs are 'foo' and 'bar'
- * v == ['foo','bar']
- *
- * var v = $(':checkbox').fieldValue();
- * // if neither checkbox is checked
- * v === undefined
- * // if both checkboxes are checked
- * v == ['B1', 'B2']
- *
- * var v = $(':radio').fieldValue();
- * // if neither radio is checked
- * v === undefined
- * // if first radio is checked
- * v == ['C1']
- *
- * The successful argument controls whether or not the field element must be 'successful'
- * (per http://www.w3.org/TR/html4/interact/forms.html#successful-controls).
- * The default value of the successful argument is true. If this value is false the value(s)
- * for each element is returned.
- *
- * Note: This method *always* returns an array. If no valid value can be determined the
- * array will be empty, otherwise it will contain one or more values.
- */
-$.fn.fieldValue = function(successful) {
- for (var val=[], i=0, max=this.length; i < max; i++) {
- var el = this[i];
- var v = $.fieldValue(el, successful);
- if (v === null || typeof v == 'undefined' || (v.constructor == Array && !v.length))
- continue;
- v.constructor == Array ? $.merge(val, v) : val.push(v);
- }
- return val;
-};
-
-/**
- * Returns the value of the field element.
- */
-$.fieldValue = function(el, successful) {
- var n = el.name, t = el.type, tag = el.tagName.toLowerCase();
- if (typeof successful == 'undefined') successful = true;
-
- if (successful && (!n || el.disabled || t == 'reset' || t == 'button' ||
- (t == 'checkbox' || t == 'radio') && !el.checked ||
- (t == 'submit' || t == 'image') && el.form && el.form.clk != el ||
- tag == 'select' && el.selectedIndex == -1))
- return null;
-
- if (tag == 'select') {
- var index = el.selectedIndex;
- if (index < 0) return null;
- var a = [], ops = el.options;
- var one = (t == 'select-one');
- var max = (one ? index+1 : ops.length);
- for(var i=(one ? index : 0); i < max; i++) {
- var op = ops[i];
- if (op.selected) {
- // extra pain for IE...
- var v = $.browser.msie && !(op.attributes['value'].specified) ? op.text : op.value;
- if (one) return v;
- a.push(v);
- }
- }
- return a;
- }
- return el.value;
-};
-
-/**
- * Clears the form data. Takes the following actions on the form's input fields:
- * - input text fields will have their 'value' property set to the empty string
- * - select elements will have their 'selectedIndex' property set to -1
- * - checkbox and radio inputs will have their 'checked' property set to false
- * - inputs of type submit, button, reset, and hidden will *not* be effected
- * - button elements will *not* be effected
- */
-$.fn.clearForm = function() {
- return this.each(function() {
- $('input,select,textarea', this).clearFields();
- });
-};
-
-/**
- * Clears the selected form elements.
- */
-$.fn.clearFields = $.fn.clearInputs = function() {
- return this.each(function() {
- var t = this.type, tag = this.tagName.toLowerCase();
- if (t == 'file' || t == 'text' || t == 'password' || tag == 'textarea')
- this.value = '';
- else if (t == 'checkbox' || t == 'radio')
- this.checked = false;
- else if (tag == 'select')
- this.selectedIndex = -1;
- });
-};
-
-/**
- * Resets the form data. Causes all form elements to be reset to their original value.
- */
-$.fn.resetForm = function() {
- return this.each(function() {
- // guard against an input with the name of 'reset'
- // note that IE reports the reset function as an 'object'
- if (typeof this.reset == 'function' || (typeof this.reset == 'object' && !this.reset.nodeType))
- this.reset();
- });
-};
-
-/**
- * Enables or disables any matching elements.
- */
-$.fn.enable = function(b) {
- if (b == undefined) b = true;
- return this.each(function() {
- this.disabled = !b
- });
-};
-
-/**
- * Checks/unchecks any matching checkboxes or radio buttons and
- * selects/deselects and matching option elements.
- */
-$.fn.selected = function(select) {
- if (select == undefined) select = true;
- return this.each(function() {
- var t = this.type;
- if (t == 'checkbox' || t == 'radio')
- this.checked = select;
- else if (this.tagName.toLowerCase() == 'option') {
- var $sel = $(this).parent('select');
- if (select && $sel[0] && $sel[0].type == 'select-one') {
- // deselect all other options
- $sel.find('option').selected(false);
- }
- this.selected = select;
- }
- });
-};
-
-// helper fn for console logging
-// set $.fn.ajaxSubmit.debug to true to enable debug logging
-function log() {
- if ($.fn.ajaxSubmit.debug && window.console && window.console.log)
- window.console.log('[jquery.form] ' + Array.prototype.join.call(arguments,''));
-};
-
-})(jQuery);
+/*
+ * jQuery Form Plugin
+ * version: 2.36 (07-NOV-2009)
+ * @requires jQuery v1.2.6 or later
+ *
+ * Examples and documentation at: http://malsup.com/jquery/form/
+ * Dual licensed under the MIT and GPL licenses:
+ * http://www.opensource.org/licenses/mit-license.php
+ * http://www.gnu.org/licenses/gpl.html
+ */
+;(function($) {
+
+/*
+ Usage Note:
+ -----------
+ Do not use both ajaxSubmit and ajaxForm on the same form. These
+ functions are intended to be exclusive. Use ajaxSubmit if you want
+ to bind your own submit handler to the form. For example,
+
+ $(document).ready(function() {
+ $('#myForm').bind('submit', function() {
+ $(this).ajaxSubmit({
+ target: '#output'
+ });
+ return false; // <-- important!
+ });
+ });
+
+ Use ajaxForm when you want the plugin to manage all the event binding
+ for you. For example,
+
+ $(document).ready(function() {
+ $('#myForm').ajaxForm({
+ target: '#output'
+ });
+ });
+
+ When using ajaxForm, the ajaxSubmit function will be invoked for you
+ at the appropriate time.
+*/
+
+/**
+ * ajaxSubmit() provides a mechanism for immediately submitting
+ * an HTML form using AJAX.
+ */
+$.fn.ajaxSubmit = function(options) {
+ // fast fail if nothing selected (http://dev.jquery.com/ticket/2752)
+ if (!this.length) {
+ log('ajaxSubmit: skipping submit process - no element selected');
+ return this;
+ }
+
+ if (typeof options == 'function')
+ options = { success: options };
+
+ var url = $.trim(this.attr('action'));
+ if (url) {
+ // clean url (don't include hash vaue)
+ url = (url.match(/^([^#]+)/)||[])[1];
+ }
+ url = url || window.location.href || '';
+
+ options = $.extend({
+ url: url,
+ type: this.attr('method') || 'GET',
+ iframeSrc: /^https/i.test(window.location.href || '') ? 'javascript:false' : 'about:blank'
+ }, options || {});
+
+ // hook for manipulating the form data before it is extracted;
+ // convenient for use with rich editors like tinyMCE or FCKEditor
+ var veto = {};
+ this.trigger('form-pre-serialize', [this, options, veto]);
+ if (veto.veto) {
+ log('ajaxSubmit: submit vetoed via form-pre-serialize trigger');
+ return this;
+ }
+
+ // provide opportunity to alter form data before it is serialized
+ if (options.beforeSerialize && options.beforeSerialize(this, options) === false) {
+ log('ajaxSubmit: submit aborted via beforeSerialize callback');
+ return this;
+ }
+
+ var a = this.formToArray(options.semantic);
+ if (options.data) {
+ options.extraData = options.data;
+ for (var n in options.data) {
+ if(options.data[n] instanceof Array) {
+ for (var k in options.data[n])
+ a.push( { name: n, value: options.data[n][k] } );
+ }
+ else
+ a.push( { name: n, value: options.data[n] } );
+ }
+ }
+
+ // give pre-submit callback an opportunity to abort the submit
+ if (options.beforeSubmit && options.beforeSubmit(a, this, options) === false) {
+ log('ajaxSubmit: submit aborted via beforeSubmit callback');
+ return this;
+ }
+
+ // fire vetoable 'validate' event
+ this.trigger('form-submit-validate', [a, this, options, veto]);
+ if (veto.veto) {
+ log('ajaxSubmit: submit vetoed via form-submit-validate trigger');
+ return this;
+ }
+
+ var q = $.param(a);
+
+ if (options.type.toUpperCase() == 'GET') {
+ options.url += (options.url.indexOf('?') >= 0 ? '&' : '?') + q;
+ options.data = null; // data is null for 'get'
+ }
+ else
+ options.data = q; // data is the query string for 'post'
+
+ var $form = this, callbacks = [];
+ if (options.resetForm) callbacks.push(function() { $form.resetForm(); });
+ if (options.clearForm) callbacks.push(function() { $form.clearForm(); });
+
+ // perform a load on the target only if dataType is not provided
+ if (!options.dataType && options.target) {
+ var oldSuccess = options.success || function(){};
+ callbacks.push(function(data) {
+ $(options.target).html(data).each(oldSuccess, arguments);
+ });
+ }
+ else if (options.success)
+ callbacks.push(options.success);
+
+ options.success = function(data, status) {
+ for (var i=0, max=callbacks.length; i < max; i++)
+ callbacks[i].apply(options, [data, status, $form]);
+ };
+
+ // are there files to upload?
+ var files = $('input:file', this).fieldValue();
+ var found = false;
+ for (var j=0; j < files.length; j++)
+ if (files[j])
+ found = true;
+
+ var multipart = false;
+// var mp = 'multipart/form-data';
+// multipart = ($form.attr('enctype') == mp || $form.attr('encoding') == mp);
+
+ // options.iframe allows user to force iframe mode
+ // 06-NOV-09: now defaulting to iframe mode if file input is detected
+ if ((files.length && options.iframe !== false) || options.iframe || found || multipart) {
+ // hack to fix Safari hang (thanks to Tim Molendijk for this)
+ // see: http://groups.google.com/group/jquery-dev/browse_thread/thread/36395b7ab510dd5d
+ if (options.closeKeepAlive)
+ $.get(options.closeKeepAlive, fileUpload);
+ else
+ fileUpload();
+ }
+ else
+ $.ajax(options);
+
+ // fire 'notify' event
+ this.trigger('form-submit-notify', [this, options]);
+ return this;
+
+
+ // private function for handling file uploads (hat tip to YAHOO!)
+ function fileUpload() {
+ var form = $form[0];
+
+ if ($(':input[name=submit]', form).length) {
+ alert('Error: Form elements must not be named "submit".');
+ return;
+ }
+
+ var opts = $.extend({}, $.ajaxSettings, options);
+ var s = $.extend(true, {}, $.extend(true, {}, $.ajaxSettings), opts);
+
+ var id = 'jqFormIO' + (new Date().getTime());
+ var $io = $('<iframe id="' + id + '" name="' + id + '" src="'+ opts.iframeSrc +'" />');
+ var io = $io[0];
+
+ $io.css({ position: 'absolute', top: '-1000px', left: '-1000px' });
+
+ var xhr = { // mock object
+ aborted: 0,
+ responseText: null,
+ responseXML: null,
+ status: 0,
+ statusText: 'n/a',
+ getAllResponseHeaders: function() {},
+ getResponseHeader: function() {},
+ setRequestHeader: function() {},
+ abort: function() {
+ this.aborted = 1;
+ $io.attr('src', opts.iframeSrc); // abort op in progress
+ }
+ };
+
+ var g = opts.global;
+ // trigger ajax global events so that activity/block indicators work like normal
+ if (g && ! $.active++) $.event.trigger("ajaxStart");
+ if (g) $.event.trigger("ajaxSend", [xhr, opts]);
+
+ if (s.beforeSend && s.beforeSend(xhr, s) === false) {
+ s.global && $.active--;
+ return;
+ }
+ if (xhr.aborted)
+ return;
+
+ var cbInvoked = 0;
+ var timedOut = 0;
+
+ // add submitting element to data if we know it
+ var sub = form.clk;
+ if (sub) {
+ var n = sub.name;
+ if (n && !sub.disabled) {
+ options.extraData = options.extraData || {};
+ options.extraData[n] = sub.value;
+ if (sub.type == "image") {
+ options.extraData[name+'.x'] = form.clk_x;
+ options.extraData[name+'.y'] = form.clk_y;
+ }
+ }
+ }
+
+ // take a breath so that pending repaints get some cpu time before the upload starts
+ setTimeout(function() {
+ // make sure form attrs are set
+ var t = $form.attr('target'), a = $form.attr('action');
+
+ // update form attrs in IE friendly way
+ form.setAttribute('target',id);
+ if (form.getAttribute('method') != 'POST')
+ form.setAttribute('method', 'POST');
+ if (form.getAttribute('action') != opts.url)
+ form.setAttribute('action', opts.url);
+
+ // ie borks in some cases when setting encoding
+ if (! options.skipEncodingOverride) {
+ $form.attr({
+ encoding: 'multipart/form-data',
+ enctype: 'multipart/form-data'
+ });
+ }
+
+ // support timout
+ if (opts.timeout)
+ setTimeout(function() { timedOut = true; cb(); }, opts.timeout);
+
+ // add "extra" data to form if provided in options
+ var extraInputs = [];
+ try {
+ if (options.extraData)
+ for (var n in options.extraData)
+ extraInputs.push(
+ $('<input type="hidden" name="'+n+'" value="'+options.extraData[n]+'" />')
+ .appendTo(form)[0]);
+
+ // add iframe to doc and submit the form
+ $io.appendTo('body');
+ io.attachEvent ? io.attachEvent('onload', cb) : io.addEventListener('load', cb, false);
+ form.submit();
+ }
+ finally {
+ // reset attrs and remove "extra" input elements
+ form.setAttribute('action',a);
+ t ? form.setAttribute('target', t) : $form.removeAttr('target');
+ $(extraInputs).remove();
+ }
+ }, 10);
+
+ var domCheckCount = 50;
+
+ function cb() {
+ if (cbInvoked++) return;
+
+ io.detachEvent ? io.detachEvent('onload', cb) : io.removeEventListener('load', cb, false);
+
+ var ok = true;
+ try {
+ if (timedOut) throw 'timeout';
+ // extract the server response from the iframe
+ var data, doc;
+
+ doc = io.contentWindow ? io.contentWindow.document : io.contentDocument ? io.contentDocument : io.document;
+
+ var isXml = opts.dataType == 'xml' || doc.XMLDocument || $.isXMLDoc(doc);
+ log('isXml='+isXml);
+ if (!isXml && (doc.body == null || doc.body.innerHTML == '')) {
+ if (--domCheckCount) {
+ // in some browsers (Opera) the iframe DOM is not always traversable when
+ // the onload callback fires, so we loop a bit to accommodate
+ cbInvoked = 0;
+ setTimeout(cb, 100);
+ return;
+ }
+ log('Could not access iframe DOM after 50 tries.');
+ return;
+ }
+
+ xhr.responseText = doc.body ? doc.body.innerHTML : null;
+ xhr.responseXML = doc.XMLDocument ? doc.XMLDocument : doc;
+ xhr.getResponseHeader = function(header){
+ var headers = {'content-type': opts.dataType};
+ return headers[header];
+ };
+
+ if (opts.dataType == 'json' || opts.dataType == 'script') {
+ // see if user embedded response in textarea
+ var ta = doc.getElementsByTagName('textarea')[0];
+ if (ta)
+ xhr.responseText = ta.value;
+ else {
+ // account for browsers injecting pre around json response
+ var pre = doc.getElementsByTagName('pre')[0];
+ if (pre)
+ xhr.responseText = pre.innerHTML;
+ }
+ }
+ else if (opts.dataType == 'xml' && !xhr.responseXML && xhr.responseText != null) {
+ xhr.responseXML = toXml(xhr.responseText);
+ }
+ data = $.httpData(xhr, opts.dataType);
+ }
+ catch(e){
+ ok = false;
+ $.handleError(opts, xhr, 'error', e);
+ }
+
+ // ordering of these callbacks/triggers is odd, but that's how $.ajax does it
+ if (ok) {
+ opts.success(data, 'success');
+ if (g) $.event.trigger("ajaxSuccess", [xhr, opts]);
+ }
+ if (g) $.event.trigger("ajaxComplete", [xhr, opts]);
+ if (g && ! --$.active) $.event.trigger("ajaxStop");
+ if (opts.complete) opts.complete(xhr, ok ? 'success' : 'error');
+
+ // clean up
+ setTimeout(function() {
+ $io.remove();
+ xhr.responseXML = null;
+ }, 100);
+ };
+
+ function toXml(s, doc) {
+ if (window.ActiveXObject) {
+ doc = new ActiveXObject('Microsoft.XMLDOM');
+ doc.async = 'false';
+ doc.loadXML(s);
+ }
+ else
+ doc = (new DOMParser()).parseFromString(s, 'text/xml');
+ return (doc && doc.documentElement && doc.documentElement.tagName != 'parsererror') ? doc : null;
+ };
+ };
+};
+
+/**
+ * ajaxForm() provides a mechanism for fully automating form submission.
+ *
+ * The advantages of using this method instead of ajaxSubmit() are:
+ *
+ * 1: This method will include coordinates for <input type="image" /> elements (if the element
+ * is used to submit the form).
+ * 2. This method will include the submit element's name/value data (for the element that was
+ * used to submit the form).
+ * 3. This method binds the submit() method to the form for you.
+ *
+ * The options argument for ajaxForm works exactly as it does for ajaxSubmit. ajaxForm merely
+ * passes the options argument along after properly binding events for submit elements and
+ * the form itself.
+ */
+$.fn.ajaxForm = function(options) {
+ return this.ajaxFormUnbind().bind('submit.form-plugin', function() {
+ $(this).ajaxSubmit(options);
+ return false;
+ }).bind('click.form-plugin', function(e) {
+ var target = e.target;
+ var $el = $(target);
+ if (!($el.is(":submit,input:image"))) {
+ // is this a child element of the submit el? (ex: a span within a button)
+ var t = $el.closest(':submit');
+ if (t.length == 0)
+ return;
+ target = t[0];
+ }
+ var form = this;
+ form.clk = target;
+ if (target.type == 'image') {
+ if (e.offsetX != undefined) {
+ form.clk_x = e.offsetX;
+ form.clk_y = e.offsetY;
+ } else if (typeof $.fn.offset == 'function') { // try to use dimensions plugin
+ var offset = $el.offset();
+ form.clk_x = e.pageX - offset.left;
+ form.clk_y = e.pageY - offset.top;
+ } else {
+ form.clk_x = e.pageX - target.offsetLeft;
+ form.clk_y = e.pageY - target.offsetTop;
+ }
+ }
+ // clear form vars
+ setTimeout(function() { form.clk = form.clk_x = form.clk_y = null; }, 100);
+ });
+};
+
+// ajaxFormUnbind unbinds the event handlers that were bound by ajaxForm
+$.fn.ajaxFormUnbind = function() {
+ return this.unbind('submit.form-plugin click.form-plugin');
+};
+
+/**
+ * formToArray() gathers form element data into an array of objects that can
+ * be passed to any of the following ajax functions: $.get, $.post, or load.
+ * Each object in the array has both a 'name' and 'value' property. An example of
+ * an array for a simple login form might be:
+ *
+ * [ { name: 'username', value: 'jresig' }, { name: 'password', value: 'secret' } ]
+ *
+ * It is this array that is passed to pre-submit callback functions provided to the
+ * ajaxSubmit() and ajaxForm() methods.
+ */
+$.fn.formToArray = function(semantic) {
+ var a = [];
+ if (this.length == 0) return a;
+
+ var form = this[0];
+ var els = semantic ? form.getElementsByTagName('*') : form.elements;
+ if (!els) return a;
+ for(var i=0, max=els.length; i < max; i++) {
+ var el = els[i];
+ var n = el.name;
+ if (!n) continue;
+
+ if (semantic && form.clk && el.type == "image") {
+ // handle image inputs on the fly when semantic == true
+ if(!el.disabled && form.clk == el) {
+ a.push({name: n, value: $(el).val()});
+ a.push({name: n+'.x', value: form.clk_x}, {name: n+'.y', value: form.clk_y});
+ }
+ continue;
+ }
+
+ var v = $.fieldValue(el, true);
+ if (v && v.constructor == Array) {
+ for(var j=0, jmax=v.length; j < jmax; j++)
+ a.push({name: n, value: v[j]});
+ }
+ else if (v !== null && typeof v != 'undefined')
+ a.push({name: n, value: v});
+ }
+
+ if (!semantic && form.clk) {
+ // input type=='image' are not found in elements array! handle it here
+ var $input = $(form.clk), input = $input[0], n = input.name;
+ if (n && !input.disabled && input.type == 'image') {
+ a.push({name: n, value: $input.val()});
+ a.push({name: n+'.x', value: form.clk_x}, {name: n+'.y', value: form.clk_y});
+ }
+ }
+ return a;
+};
+
+/**
+ * Serializes form data into a 'submittable' string. This method will return a string
+ * in the format: name1=value1&amp;name2=value2
+ */
+$.fn.formSerialize = function(semantic) {
+ //hand off to jQuery.param for proper encoding
+ return $.param(this.formToArray(semantic));
+};
+
+/**
+ * Serializes all field elements in the jQuery object into a query string.
+ * This method will return a string in the format: name1=value1&amp;name2=value2
+ */
+$.fn.fieldSerialize = function(successful) {
+ var a = [];
+ this.each(function() {
+ var n = this.name;
+ if (!n) return;
+ var v = $.fieldValue(this, successful);
+ if (v && v.constructor == Array) {
+ for (var i=0,max=v.length; i < max; i++)
+ a.push({name: n, value: v[i]});
+ }
+ else if (v !== null && typeof v != 'undefined')
+ a.push({name: this.name, value: v});
+ });
+ //hand off to jQuery.param for proper encoding
+ return $.param(a);
+};
+
+/**
+ * Returns the value(s) of the element in the matched set. For example, consider the following form:
+ *
+ * <form><fieldset>
+ * <input name="A" type="text" />
+ * <input name="A" type="text" />
+ * <input name="B" type="checkbox" value="B1" />
+ * <input name="B" type="checkbox" value="B2"/>
+ * <input name="C" type="radio" value="C1" />
+ * <input name="C" type="radio" value="C2" />
+ * </fieldset></form>
+ *
+ * var v = $(':text').fieldValue();
+ * // if no values are entered into the text inputs
+ * v == ['','']
+ * // if values entered into the text inputs are 'foo' and 'bar'
+ * v == ['foo','bar']
+ *
+ * var v = $(':checkbox').fieldValue();
+ * // if neither checkbox is checked
+ * v === undefined
+ * // if both checkboxes are checked
+ * v == ['B1', 'B2']
+ *
+ * var v = $(':radio').fieldValue();
+ * // if neither radio is checked
+ * v === undefined
+ * // if first radio is checked
+ * v == ['C1']
+ *
+ * The successful argument controls whether or not the field element must be 'successful'
+ * (per http://www.w3.org/TR/html4/interact/forms.html#successful-controls).
+ * The default value of the successful argument is true. If this value is false the value(s)
+ * for each element is returned.
+ *
+ * Note: This method *always* returns an array. If no valid value can be determined the
+ * array will be empty, otherwise it will contain one or more values.
+ */
+$.fn.fieldValue = function(successful) {
+ for (var val=[], i=0, max=this.length; i < max; i++) {
+ var el = this[i];
+ var v = $.fieldValue(el, successful);
+ if (v === null || typeof v == 'undefined' || (v.constructor == Array && !v.length))
+ continue;
+ v.constructor == Array ? $.merge(val, v) : val.push(v);
+ }
+ return val;
+};
+
+/**
+ * Returns the value of the field element.
+ */
+$.fieldValue = function(el, successful) {
+ var n = el.name, t = el.type, tag = el.tagName.toLowerCase();
+ if (typeof successful == 'undefined') successful = true;
+
+ if (successful && (!n || el.disabled || t == 'reset' || t == 'button' ||
+ (t == 'checkbox' || t == 'radio') && !el.checked ||
+ (t == 'submit' || t == 'image') && el.form && el.form.clk != el ||
+ tag == 'select' && el.selectedIndex == -1))
+ return null;
+
+ if (tag == 'select') {
+ var index = el.selectedIndex;
+ if (index < 0) return null;
+ var a = [], ops = el.options;
+ var one = (t == 'select-one');
+ var max = (one ? index+1 : ops.length);
+ for(var i=(one ? index : 0); i < max; i++) {
+ var op = ops[i];
+ if (op.selected) {
+ var v = op.value;
+ if (!v) // extra pain for IE...
+ v = (op.attributes && op.attributes['value'] && !(op.attributes['value'].specified)) ? op.text : op.value;
+ if (one) return v;
+ a.push(v);
+ }
+ }
+ return a;
+ }
+ return el.value;
+};
+
+/**
+ * Clears the form data. Takes the following actions on the form's input fields:
+ * - input text fields will have their 'value' property set to the empty string
+ * - select elements will have their 'selectedIndex' property set to -1
+ * - checkbox and radio inputs will have their 'checked' property set to false
+ * - inputs of type submit, button, reset, and hidden will *not* be effected
+ * - button elements will *not* be effected
+ */
+$.fn.clearForm = function() {
+ return this.each(function() {
+ $('input,select,textarea', this).clearFields();
+ });
+};
+
+/**
+ * Clears the selected form elements.
+ */
+$.fn.clearFields = $.fn.clearInputs = function() {
+ return this.each(function() {
+ var t = this.type, tag = this.tagName.toLowerCase();
+ if (t == 'text' || t == 'password' || tag == 'textarea')
+ this.value = '';
+ else if (t == 'checkbox' || t == 'radio')
+ this.checked = false;
+ else if (tag == 'select')
+ this.selectedIndex = -1;
+ });
+};
+
+/**
+ * Resets the form data. Causes all form elements to be reset to their original value.
+ */
+$.fn.resetForm = function() {
+ return this.each(function() {
+ // guard against an input with the name of 'reset'
+ // note that IE reports the reset function as an 'object'
+ if (typeof this.reset == 'function' || (typeof this.reset == 'object' && !this.reset.nodeType))
+ this.reset();
+ });
+};
+
+/**
+ * Enables or disables any matching elements.
+ */
+$.fn.enable = function(b) {
+ if (b == undefined) b = true;
+ return this.each(function() {
+ this.disabled = !b;
+ });
+};
+
+/**
+ * Checks/unchecks any matching checkboxes or radio buttons and
+ * selects/deselects and matching option elements.
+ */
+$.fn.selected = function(select) {
+ if (select == undefined) select = true;
+ return this.each(function() {
+ var t = this.type;
+ if (t == 'checkbox' || t == 'radio')
+ this.checked = select;
+ else if (this.tagName.toLowerCase() == 'option') {
+ var $sel = $(this).parent('select');
+ if (select && $sel[0] && $sel[0].type == 'select-one') {
+ // deselect all other options
+ $sel.find('option').selected(false);
+ }
+ this.selected = select;
+ }
+ });
+};
+
+// helper fn for console logging
+// set $.fn.ajaxSubmit.debug to true to enable debug logging
+function log() {
+ if ($.fn.ajaxSubmit.debug && window.console && window.console.log)
+ window.console.log('[jquery.form] ' + Array.prototype.join.call(arguments,''));
+};
+
+})(jQuery);
diff --git a/js/jquery.js b/js/jquery.js
index 926357433..237e1b908 100644
--- a/js/jquery.js
+++ b/js/jquery.js
@@ -1,136 +1,221 @@
/*!
- * jQuery JavaScript Library v1.3.2
+ * jQuery JavaScript Library v1.4.1
* http://jquery.com/
*
- * Copyright (c) 2009 John Resig
- * Dual licensed under the MIT and GPL licenses.
- * http://docs.jquery.com/License
+ * Copyright 2010, John Resig
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
*
- * Date: 2009-02-19 17:34:21 -0500 (Thu, 19 Feb 2009)
- * Revision: 6246
+ * Includes Sizzle.js
+ * http://sizzlejs.com/
+ * Copyright 2010, The Dojo Foundation
+ * Released under the MIT, BSD, and GPL Licenses.
+ *
+ * Date: Mon Jan 25 19:43:33 2010 -0500
*/
-(function(){
+(function( window, undefined ) {
+
+// Define a local copy of jQuery
+var jQuery = function( selector, context ) {
+ // The jQuery object is actually just the init constructor 'enhanced'
+ return new jQuery.fn.init( selector, context );
+ },
-var
- // Will speed up references to window, and allows munging its name.
- window = this,
- // Will speed up references to undefined, and allows munging its name.
- undefined,
// Map over jQuery in case of overwrite
_jQuery = window.jQuery,
+
// Map over the $ in case of overwrite
_$ = window.$,
- jQuery = window.jQuery = window.$ = function( selector, context ) {
- // The jQuery object is actually just the init constructor 'enhanced'
- return new jQuery.fn.init( selector, context );
- },
+ // Use the correct document accordingly with window argument (sandbox)
+ document = window.document,
+
+ // A central reference to the root jQuery(document)
+ rootjQuery,
// A simple way to check for HTML strings or ID strings
// (both of which we optimize for)
- quickExpr = /^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-]+)$/,
+ quickExpr = /^[^<]*(<[\w\W]+>)[^>]*$|^#([\w-]+)$/,
+
// Is it a simple selector
- isSimple = /^.[^:#\[\.,]*$/;
+ isSimple = /^.[^:#\[\.,]*$/,
+
+ // Check if a string has a non-whitespace character in it
+ rnotwhite = /\S/,
+
+ // Used for trimming whitespace
+ rtrim = /^(\s|\u00A0)+|(\s|\u00A0)+$/g,
+
+ // Match a standalone tag
+ rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>)?$/,
+
+ // Keep a UserAgent string for use with jQuery.browser
+ userAgent = navigator.userAgent,
+
+ // For matching the engine and version of the browser
+ browserMatch,
+
+ // Has the ready events already been bound?
+ readyBound = false,
+
+ // The functions to execute on DOM ready
+ readyList = [],
+
+ // The ready event handler
+ DOMContentLoaded,
+
+ // Save a reference to some core methods
+ toString = Object.prototype.toString,
+ hasOwnProperty = Object.prototype.hasOwnProperty,
+ push = Array.prototype.push,
+ slice = Array.prototype.slice,
+ indexOf = Array.prototype.indexOf;
jQuery.fn = jQuery.prototype = {
init: function( selector, context ) {
- // Make sure that a selection was provided
- selector = selector || document;
+ var match, elem, ret, doc;
+
+ // Handle $(""), $(null), or $(undefined)
+ if ( !selector ) {
+ return this;
+ }
// Handle $(DOMElement)
if ( selector.nodeType ) {
- this[0] = selector;
+ this.context = this[0] = selector;
this.length = 1;
- this.context = selector;
return this;
}
+
// Handle HTML strings
if ( typeof selector === "string" ) {
// Are we dealing with HTML string or an ID?
- var match = quickExpr.exec( selector );
+ match = quickExpr.exec( selector );
// Verify a match, and that no context was specified for #id
if ( match && (match[1] || !context) ) {
// HANDLE: $(html) -> $(array)
- if ( match[1] )
- selector = jQuery.clean( [ match[1] ], context );
+ if ( match[1] ) {
+ doc = (context ? context.ownerDocument || context : document);
+
+ // If a single string is passed in and it's a single tag
+ // just do a createElement and skip the rest
+ ret = rsingleTag.exec( selector );
+
+ if ( ret ) {
+ if ( jQuery.isPlainObject( context ) ) {
+ selector = [ document.createElement( ret[1] ) ];
+ jQuery.fn.attr.call( selector, context, true );
+
+ } else {
+ selector = [ doc.createElement( ret[1] ) ];
+ }
+
+ } else {
+ ret = buildFragment( [ match[1] ], [ doc ] );
+ selector = (ret.cacheable ? ret.fragment.cloneNode(true) : ret.fragment).childNodes;
+ }
// HANDLE: $("#id")
- else {
- var elem = document.getElementById( match[3] );
-
- // Handle the case where IE and Opera return items
- // by name instead of ID
- if ( elem && elem.id != match[3] )
- return jQuery().find( selector );
-
- // Otherwise, we inject the element directly into the jQuery object
- var ret = jQuery( elem || [] );
- ret.context = document;
- ret.selector = selector;
- return ret;
+ } else {
+ elem = document.getElementById( match[2] );
+
+ if ( elem ) {
+ // Handle the case where IE and Opera return items
+ // by name instead of ID
+ if ( elem.id !== match[2] ) {
+ return rootjQuery.find( selector );
+ }
+
+ // Otherwise, we inject the element directly into the jQuery object
+ this.length = 1;
+ this[0] = elem;
+ }
+
+ this.context = document;
+ this.selector = selector;
+ return this;
}
- // HANDLE: $(expr, [context])
- // (which is just equivalent to: $(content).find(expr)
- } else
+ // HANDLE: $("TAG")
+ } else if ( !context && /^\w+$/.test( selector ) ) {
+ this.selector = selector;
+ this.context = document;
+ selector = document.getElementsByTagName( selector );
+
+ // HANDLE: $(expr, $(...))
+ } else if ( !context || context.jquery ) {
+ return (context || rootjQuery).find( selector );
+
+ // HANDLE: $(expr, context)
+ // (which is just equivalent to: $(context).find(expr)
+ } else {
return jQuery( context ).find( selector );
+ }
// HANDLE: $(function)
// Shortcut for document ready
- } else if ( jQuery.isFunction( selector ) )
- return jQuery( document ).ready( selector );
+ } else if ( jQuery.isFunction( selector ) ) {
+ return rootjQuery.ready( selector );
+ }
- // Make sure that old selector state is passed along
- if ( selector.selector && selector.context ) {
+ if (selector.selector !== undefined) {
this.selector = selector.selector;
this.context = selector.context;
}
- return this.setArray(jQuery.isArray( selector ) ?
- selector :
- jQuery.makeArray(selector));
+ return jQuery.isArray( selector ) ?
+ this.setArray( selector ) :
+ jQuery.makeArray( selector, this );
},
// Start with an empty selector
selector: "",
// The current version of jQuery being used
- jquery: "1.3.2",
+ jquery: "1.4.1",
+
+ // The default length of a jQuery object is 0
+ length: 0,
// The number of elements contained in the matched element set
size: function() {
return this.length;
},
+ toArray: function() {
+ return slice.call( this, 0 );
+ },
+
// Get the Nth element in the matched element set OR
// Get the whole matched element set as a clean array
get: function( num ) {
- return num === undefined ?
+ return num == null ?
// Return a 'clean' array
- Array.prototype.slice.call( this ) :
+ this.toArray() :
// Return just the object
- this[ num ];
+ ( num < 0 ? this.slice(num)[ 0 ] : this[ num ] );
},
// Take an array of elements and push it onto the stack
// (returning the new matched element set)
pushStack: function( elems, name, selector ) {
// Build a new jQuery matched element set
- var ret = jQuery( elems );
+ var ret = jQuery( elems || null );
// Add the old object onto the stack (as a reference)
ret.prevObject = this;
ret.context = this.context;
- if ( name === "find" )
+ if ( name === "find" ) {
ret.selector = this.selector + (this.selector ? " " : "") + selector;
- else if ( name )
+ } else if ( name ) {
ret.selector = this.selector + "." + name + "(" + selector + ")";
+ }
// Return the newly-formed element set
return ret;
@@ -143,7 +228,7 @@ jQuery.fn = jQuery.prototype = {
// Resetting the length to 0, then using the native Array push
// is a super-fast way to populate an object with array-like properties
this.length = 0;
- Array.prototype.push.apply( this, elems );
+ push.apply( this, elems );
return this;
},
@@ -154,822 +239,1208 @@ jQuery.fn = jQuery.prototype = {
each: function( callback, args ) {
return jQuery.each( this, callback, args );
},
+
+ ready: function( fn ) {
+ // Attach the listeners
+ jQuery.bindReady();
- // Determine the position of an element within
- // the matched set of elements
- index: function( elem ) {
- // Locate the position of the desired element
- return jQuery.inArray(
- // If it receives a jQuery object, the first element is used
- elem && elem.jquery ? elem[0] : elem
- , this );
- },
+ // If the DOM is already ready
+ if ( jQuery.isReady ) {
+ // Execute the function immediately
+ fn.call( document, jQuery );
- attr: function( name, value, type ) {
- var options = name;
+ // Otherwise, remember the function for later
+ } else if ( readyList ) {
+ // Add the function to the wait list
+ readyList.push( fn );
+ }
- // Look for the case where we're accessing a style value
- if ( typeof name === "string" )
- if ( value === undefined )
- return this[0] && jQuery[ type || "attr" ]( this[0], name );
+ return this;
+ },
+
+ eq: function( i ) {
+ return i === -1 ?
+ this.slice( i ) :
+ this.slice( i, +i + 1 );
+ },
- else {
- options = {};
- options[ name ] = value;
- }
+ first: function() {
+ return this.eq( 0 );
+ },
- // Check to see if we're setting style values
- return this.each(function(i){
- // Set all the styles
- for ( name in options )
- jQuery.attr(
- type ?
- this.style :
- this,
- name, jQuery.prop( this, options[ name ], type, i, name )
- );
- });
+ last: function() {
+ return this.eq( -1 );
},
- css: function( key, value ) {
- // ignore negative width and height values
- if ( (key == 'width' || key == 'height') && parseFloat(value) < 0 )
- value = undefined;
- return this.attr( key, value, "curCSS" );
+ slice: function() {
+ return this.pushStack( slice.apply( this, arguments ),
+ "slice", slice.call(arguments).join(",") );
},
- text: function( text ) {
- if ( typeof text !== "object" && text != null )
- return this.empty().append( (this[0] && this[0].ownerDocument || document).createTextNode( text ) );
+ map: function( callback ) {
+ return this.pushStack( jQuery.map(this, function( elem, i ) {
+ return callback.call( elem, i, elem );
+ }));
+ },
+
+ end: function() {
+ return this.prevObject || jQuery(null);
+ },
+
+ // For internal use only.
+ // Behaves like an Array's method, not like a jQuery method.
+ push: push,
+ sort: [].sort,
+ splice: [].splice
+};
- var ret = "";
+// Give the init function the jQuery prototype for later instantiation
+jQuery.fn.init.prototype = jQuery.fn;
- jQuery.each( text || this, function(){
- jQuery.each( this.childNodes, function(){
- if ( this.nodeType != 8 )
- ret += this.nodeType != 1 ?
- this.nodeValue :
- jQuery.fn.text( [ this ] );
- });
- });
+jQuery.extend = jQuery.fn.extend = function() {
+ // copy reference to target object
+ var target = arguments[0] || {}, i = 1, length = arguments.length, deep = false, options, name, src, copy;
- return ret;
- },
+ // Handle a deep copy situation
+ if ( typeof target === "boolean" ) {
+ deep = target;
+ target = arguments[1] || {};
+ // skip the boolean and the target
+ i = 2;
+ }
- wrapAll: function( html ) {
- if ( this[0] ) {
- // The elements to wrap the target around
- var wrap = jQuery( html, this[0].ownerDocument ).clone();
+ // Handle case when target is a string or something (possible in deep copy)
+ if ( typeof target !== "object" && !jQuery.isFunction(target) ) {
+ target = {};
+ }
- if ( this[0].parentNode )
- wrap.insertBefore( this[0] );
+ // extend jQuery itself if only one argument is passed
+ if ( length === i ) {
+ target = this;
+ --i;
+ }
- wrap.map(function(){
- var elem = this;
+ for ( ; i < length; i++ ) {
+ // Only deal with non-null/undefined values
+ if ( (options = arguments[ i ]) != null ) {
+ // Extend the base object
+ for ( name in options ) {
+ src = target[ name ];
+ copy = options[ name ];
- while ( elem.firstChild )
- elem = elem.firstChild;
+ // Prevent never-ending loop
+ if ( target === copy ) {
+ continue;
+ }
- return elem;
- }).append(this);
+ // Recurse if we're merging object literal values or arrays
+ if ( deep && copy && ( jQuery.isPlainObject(copy) || jQuery.isArray(copy) ) ) {
+ var clone = src && ( jQuery.isPlainObject(src) || jQuery.isArray(src) ) ? src
+ : jQuery.isArray(copy) ? [] : {};
+
+ // Never move original objects, clone them
+ target[ name ] = jQuery.extend( deep, clone, copy );
+
+ // Don't bring in undefined values
+ } else if ( copy !== undefined ) {
+ target[ name ] = copy;
+ }
+ }
}
+ }
- return this;
- },
+ // Return the modified object
+ return target;
+};
- wrapInner: function( html ) {
- return this.each(function(){
- jQuery( this ).contents().wrapAll( html );
- });
+jQuery.extend({
+ noConflict: function( deep ) {
+ window.$ = _$;
+
+ if ( deep ) {
+ window.jQuery = _jQuery;
+ }
+
+ return jQuery;
},
+
+ // Is the DOM ready to be used? Set to true once it occurs.
+ isReady: false,
+
+ // Handle when the DOM is ready
+ ready: function() {
+ // Make sure that the DOM is not already loaded
+ if ( !jQuery.isReady ) {
+ // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
+ if ( !document.body ) {
+ return setTimeout( jQuery.ready, 13 );
+ }
- wrap: function( html ) {
- return this.each(function(){
- jQuery( this ).wrapAll( html );
- });
+ // Remember that the DOM is ready
+ jQuery.isReady = true;
+
+ // If there are functions bound, to execute
+ if ( readyList ) {
+ // Execute all of them
+ var fn, i = 0;
+ while ( (fn = readyList[ i++ ]) ) {
+ fn.call( document, jQuery );
+ }
+
+ // Reset the list of functions
+ readyList = null;
+ }
+
+ // Trigger any bound ready events
+ if ( jQuery.fn.triggerHandler ) {
+ jQuery( document ).triggerHandler( "ready" );
+ }
+ }
},
+
+ bindReady: function() {
+ if ( readyBound ) {
+ return;
+ }
- append: function() {
- return this.domManip(arguments, true, function(elem){
- if (this.nodeType == 1)
- this.appendChild( elem );
- });
+ readyBound = true;
+
+ // Catch cases where $(document).ready() is called after the
+ // browser event has already occurred.
+ if ( document.readyState === "complete" ) {
+ return jQuery.ready();
+ }
+
+ // Mozilla, Opera and webkit nightlies currently support this event
+ if ( document.addEventListener ) {
+ // Use the handy event callback
+ document.addEventListener( "DOMContentLoaded", DOMContentLoaded, false );
+
+ // A fallback to window.onload, that will always work
+ window.addEventListener( "load", jQuery.ready, false );
+
+ // If IE event model is used
+ } else if ( document.attachEvent ) {
+ // ensure firing before onload,
+ // maybe late but safe also for iframes
+ document.attachEvent("onreadystatechange", DOMContentLoaded);
+
+ // A fallback to window.onload, that will always work
+ window.attachEvent( "onload", jQuery.ready );
+
+ // If IE and not a frame
+ // continually check to see if the document is ready
+ var toplevel = false;
+
+ try {
+ toplevel = window.frameElement == null;
+ } catch(e) {}
+
+ if ( document.documentElement.doScroll && toplevel ) {
+ doScrollCheck();
+ }
+ }
},
- prepend: function() {
- return this.domManip(arguments, true, function(elem){
- if (this.nodeType == 1)
- this.insertBefore( elem, this.firstChild );
- });
+ // See test/unit/core.js for details concerning isFunction.
+ // Since version 1.3, DOM methods and functions like alert
+ // aren't supported. They return false on IE (#2968).
+ isFunction: function( obj ) {
+ return toString.call(obj) === "[object Function]";
},
- before: function() {
- return this.domManip(arguments, false, function(elem){
- this.parentNode.insertBefore( elem, this );
- });
+ isArray: function( obj ) {
+ return toString.call(obj) === "[object Array]";
},
- after: function() {
- return this.domManip(arguments, false, function(elem){
- this.parentNode.insertBefore( elem, this.nextSibling );
- });
+ isPlainObject: function( obj ) {
+ // Must be an Object.
+ // Because of IE, we also have to check the presence of the constructor property.
+ // Make sure that DOM nodes and window objects don't pass through, as well
+ if ( !obj || toString.call(obj) !== "[object Object]" || obj.nodeType || obj.setInterval ) {
+ return false;
+ }
+
+ // Not own constructor property must be Object
+ if ( obj.constructor
+ && !hasOwnProperty.call(obj, "constructor")
+ && !hasOwnProperty.call(obj.constructor.prototype, "isPrototypeOf") ) {
+ return false;
+ }
+
+ // Own properties are enumerated firstly, so to speed up,
+ // if last one is own, then all properties are own.
+
+ var key;
+ for ( key in obj ) {}
+
+ return key === undefined || hasOwnProperty.call( obj, key );
},
- end: function() {
- return this.prevObject || jQuery( [] );
+ isEmptyObject: function( obj ) {
+ for ( var name in obj ) {
+ return false;
+ }
+ return true;
},
+
+ error: function( msg ) {
+ throw msg;
+ },
+
+ parseJSON: function( data ) {
+ if ( typeof data !== "string" || !data ) {
+ return null;
+ }
+
+ // Make sure the incoming data is actual JSON
+ // Logic borrowed from http://json.org/json2.js
+ if ( /^[\],:{}\s]*$/.test(data.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, "@")
+ .replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, "]")
+ .replace(/(?:^|:|,)(?:\s*\[)+/g, "")) ) {
- // For internal use only.
- // Behaves like an Array's method, not like a jQuery method.
- push: [].push,
- sort: [].sort,
- splice: [].splice,
+ // Try to use the native JSON parser first
+ return window.JSON && window.JSON.parse ?
+ window.JSON.parse( data ) :
+ (new Function("return " + data))();
- find: function( selector ) {
- if ( this.length === 1 ) {
- var ret = this.pushStack( [], "find", selector );
- ret.length = 0;
- jQuery.find( selector, this[0], ret );
- return ret;
} else {
- return this.pushStack( jQuery.unique(jQuery.map(this, function(elem){
- return jQuery.find( selector, elem );
- })), "find", selector );
+ jQuery.error( "Invalid JSON: " + data );
}
},
- clone: function( events ) {
- // Do the clone
- var ret = this.map(function(){
- if ( !jQuery.support.noCloneEvent && !jQuery.isXMLDoc(this) ) {
- // IE copies events bound via attachEvent when
- // using cloneNode. Calling detachEvent on the
- // clone will also remove the events from the orignal
- // In order to get around this, we use innerHTML.
- // Unfortunately, this means some modifications to
- // attributes in IE that are actually only stored
- // as properties will not be copied (such as the
- // the name attribute on an input).
- var html = this.outerHTML;
- if ( !html ) {
- var div = this.ownerDocument.createElement("div");
- div.appendChild( this.cloneNode(true) );
- html = div.innerHTML;
- }
+ noop: function() {},
- return jQuery.clean([html.replace(/ jQuery\d+="(?:\d+|null)"/g, "").replace(/^\s*/, "")])[0];
- } else
- return this.cloneNode(true);
- });
+ // Evalulates a script in a global context
+ globalEval: function( data ) {
+ if ( data && rnotwhite.test(data) ) {
+ // Inspired by code by Andrea Giammarchi
+ // http://webreflection.blogspot.com/2007/08/global-scope-evaluation-and-dom.html
+ var head = document.getElementsByTagName("head")[0] || document.documentElement,
+ script = document.createElement("script");
- // Copy the events from the original to the clone
- if ( events === true ) {
- var orig = this.find("*").andSelf(), i = 0;
+ script.type = "text/javascript";
- ret.find("*").andSelf().each(function(){
- if ( this.nodeName !== orig[i].nodeName )
- return;
+ if ( jQuery.support.scriptEval ) {
+ script.appendChild( document.createTextNode( data ) );
+ } else {
+ script.text = data;
+ }
- var events = jQuery.data( orig[i], "events" );
+ // Use insertBefore instead of appendChild to circumvent an IE6 bug.
+ // This arises when a base node is used (#2709).
+ head.insertBefore( script, head.firstChild );
+ head.removeChild( script );
+ }
+ },
- for ( var type in events ) {
- for ( var handler in events[ type ] ) {
- jQuery.event.add( this, type, events[ type ][ handler ], events[ type ][ handler ].data );
+ nodeName: function( elem, name ) {
+ return elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase();
+ },
+
+ // args is for internal usage only
+ each: function( object, callback, args ) {
+ var name, i = 0,
+ length = object.length,
+ isObj = length === undefined || jQuery.isFunction(object);
+
+ if ( args ) {
+ if ( isObj ) {
+ for ( name in object ) {
+ if ( callback.apply( object[ name ], args ) === false ) {
+ break;
}
}
+ } else {
+ for ( ; i < length; ) {
+ if ( callback.apply( object[ i++ ], args ) === false ) {
+ break;
+ }
+ }
+ }
- i++;
- });
+ // A special, fast, case for the most common use of each
+ } else {
+ if ( isObj ) {
+ for ( name in object ) {
+ if ( callback.call( object[ name ], name, object[ name ] ) === false ) {
+ break;
+ }
+ }
+ } else {
+ for ( var value = object[0];
+ i < length && callback.call( value, i, value ) !== false; value = object[++i] ) {}
+ }
}
- // Return the cloned set
- return ret;
+ return object;
},
- filter: function( selector ) {
- return this.pushStack(
- jQuery.isFunction( selector ) &&
- jQuery.grep(this, function(elem, i){
- return selector.call( elem, i );
- }) ||
-
- jQuery.multiFilter( selector, jQuery.grep(this, function(elem){
- return elem.nodeType === 1;
- }) ), "filter", selector );
- },
-
- closest: function( selector ) {
- var pos = jQuery.expr.match.POS.test( selector ) ? jQuery(selector) : null,
- closer = 0;
-
- return this.map(function(){
- var cur = this;
- while ( cur && cur.ownerDocument ) {
- if ( pos ? pos.index(cur) > -1 : jQuery(cur).is(selector) ) {
- jQuery.data(cur, "closest", closer);
- return cur;
- }
- cur = cur.parentNode;
- closer++;
- }
- });
+ trim: function( text ) {
+ return (text || "").replace( rtrim, "" );
},
- not: function( selector ) {
- if ( typeof selector === "string" )
- // test special case where just one selector is passed in
- if ( isSimple.test( selector ) )
- return this.pushStack( jQuery.multiFilter( selector, this, true ), "not", selector );
- else
- selector = jQuery.multiFilter( selector, this );
-
- var isArrayLike = selector.length && selector[selector.length - 1] !== undefined && !selector.nodeType;
- return this.filter(function() {
- return isArrayLike ? jQuery.inArray( this, selector ) < 0 : this != selector;
- });
- },
+ // results is for internal usage only
+ makeArray: function( array, results ) {
+ var ret = results || [];
- add: function( selector ) {
- return this.pushStack( jQuery.unique( jQuery.merge(
- this.get(),
- typeof selector === "string" ?
- jQuery( selector ) :
- jQuery.makeArray( selector )
- )));
- },
+ if ( array != null ) {
+ // The window, strings (and functions) also have 'length'
+ // The extra typeof function check is to prevent crashes
+ // in Safari 2 (See: #3039)
+ if ( array.length == null || typeof array === "string" || jQuery.isFunction(array) || (typeof array !== "function" && array.setInterval) ) {
+ push.call( ret, array );
+ } else {
+ jQuery.merge( ret, array );
+ }
+ }
- is: function( selector ) {
- return !!selector && jQuery.multiFilter( selector, this ).length > 0;
+ return ret;
},
- hasClass: function( selector ) {
- return !!selector && this.is( "." + selector );
+ inArray: function( elem, array ) {
+ if ( array.indexOf ) {
+ return array.indexOf( elem );
+ }
+
+ for ( var i = 0, length = array.length; i < length; i++ ) {
+ if ( array[ i ] === elem ) {
+ return i;
+ }
+ }
+
+ return -1;
},
- val: function( value ) {
- if ( value === undefined ) {
- var elem = this[0];
+ merge: function( first, second ) {
+ var i = first.length, j = 0;
- if ( elem ) {
- if( jQuery.nodeName( elem, 'option' ) )
- return (elem.attributes.value || {}).specified ? elem.value : elem.text;
-
- // We need to handle select boxes special
- if ( jQuery.nodeName( elem, "select" ) ) {
- var index = elem.selectedIndex,
- values = [],
- options = elem.options,
- one = elem.type == "select-one";
+ if ( typeof second.length === "number" ) {
+ for ( var l = second.length; j < l; j++ ) {
+ first[ i++ ] = second[ j ];
+ }
+ } else {
+ while ( second[j] !== undefined ) {
+ first[ i++ ] = second[ j++ ];
+ }
+ }
- // Nothing was selected
- if ( index < 0 )
- return null;
+ first.length = i;
- // Loop through all the selected options
- for ( var i = one ? index : 0, max = one ? index + 1 : options.length; i < max; i++ ) {
- var option = options[ i ];
+ return first;
+ },
- if ( option.selected ) {
- // Get the specifc value for the option
- value = jQuery(option).val();
+ grep: function( elems, callback, inv ) {
+ var ret = [];
- // We don't need an array for one selects
- if ( one )
- return value;
+ // Go through the array, only saving the items
+ // that pass the validator function
+ for ( var i = 0, length = elems.length; i < length; i++ ) {
+ if ( !inv !== !callback( elems[ i ], i ) ) {
+ ret.push( elems[ i ] );
+ }
+ }
- // Multi-Selects return an array
- values.push( value );
- }
- }
+ return ret;
+ },
- return values;
- }
+ // arg is for internal usage only
+ map: function( elems, callback, arg ) {
+ var ret = [], value;
- // Everything else, we just grab the value
- return (elem.value || "").replace(/\r/g, "");
+ // Go through the array, translating each of the items to their
+ // new value (or values).
+ for ( var i = 0, length = elems.length; i < length; i++ ) {
+ value = callback( elems[ i ], i, arg );
+ if ( value != null ) {
+ ret[ ret.length ] = value;
}
-
- return undefined;
}
- if ( typeof value === "number" )
- value += '';
+ return ret.concat.apply( [], ret );
+ },
- return this.each(function(){
- if ( this.nodeType != 1 )
- return;
+ // A global GUID counter for objects
+ guid: 1,
- if ( jQuery.isArray(value) && /radio|checkbox/.test( this.type ) )
- this.checked = (jQuery.inArray(this.value, value) >= 0 ||
- jQuery.inArray(this.name, value) >= 0);
+ proxy: function( fn, proxy, thisObject ) {
+ if ( arguments.length === 2 ) {
+ if ( typeof proxy === "string" ) {
+ thisObject = fn;
+ fn = thisObject[ proxy ];
+ proxy = undefined;
- else if ( jQuery.nodeName( this, "select" ) ) {
- var values = jQuery.makeArray(value);
+ } else if ( proxy && !jQuery.isFunction( proxy ) ) {
+ thisObject = proxy;
+ proxy = undefined;
+ }
+ }
- jQuery( "option", this ).each(function(){
- this.selected = (jQuery.inArray( this.value, values ) >= 0 ||
- jQuery.inArray( this.text, values ) >= 0);
- });
+ if ( !proxy && fn ) {
+ proxy = function() {
+ return fn.apply( thisObject || this, arguments );
+ };
+ }
- if ( !values.length )
- this.selectedIndex = -1;
+ // Set the guid of unique handler to the same of original handler, so it can be removed
+ if ( fn ) {
+ proxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++;
+ }
- } else
- this.value = value;
- });
+ // So proxy can be declared as an argument
+ return proxy;
},
- html: function( value ) {
- return value === undefined ?
- (this[0] ?
- this[0].innerHTML.replace(/ jQuery\d+="(?:\d+|null)"/g, "") :
- null) :
- this.empty().append( value );
- },
+ // Use of jQuery.browser is frowned upon.
+ // More details: http://docs.jquery.com/Utilities/jQuery.browser
+ uaMatch: function( ua ) {
+ ua = ua.toLowerCase();
- replaceWith: function( value ) {
- return this.after( value ).remove();
- },
+ var match = /(webkit)[ \/]([\w.]+)/.exec( ua ) ||
+ /(opera)(?:.*version)?[ \/]([\w.]+)/.exec( ua ) ||
+ /(msie) ([\w.]+)/.exec( ua ) ||
+ !/compatible/.test( ua ) && /(mozilla)(?:.*? rv:([\w.]+))?/.exec( ua ) ||
+ [];
- eq: function( i ) {
- return this.slice( i, +i + 1 );
+ return { browser: match[1] || "", version: match[2] || "0" };
},
- slice: function() {
- return this.pushStack( Array.prototype.slice.apply( this, arguments ),
- "slice", Array.prototype.slice.call(arguments).join(",") );
- },
+ browser: {}
+});
- map: function( callback ) {
- return this.pushStack( jQuery.map(this, function(elem, i){
- return callback.call( elem, i, elem );
- }));
- },
+browserMatch = jQuery.uaMatch( userAgent );
+if ( browserMatch.browser ) {
+ jQuery.browser[ browserMatch.browser ] = true;
+ jQuery.browser.version = browserMatch.version;
+}
- andSelf: function() {
- return this.add( this.prevObject );
- },
+// Deprecated, use jQuery.browser.webkit instead
+if ( jQuery.browser.webkit ) {
+ jQuery.browser.safari = true;
+}
- domManip: function( args, table, callback ) {
- if ( this[0] ) {
- var fragment = (this[0].ownerDocument || this[0]).createDocumentFragment(),
- scripts = jQuery.clean( args, (this[0].ownerDocument || this[0]), fragment ),
- first = fragment.firstChild;
-
- if ( first )
- for ( var i = 0, l = this.length; i < l; i++ )
- callback.call( root(this[i], first), this.length > 1 || i > 0 ?
- fragment.cloneNode(true) : fragment );
-
- if ( scripts )
- jQuery.each( scripts, evalScript );
- }
+if ( indexOf ) {
+ jQuery.inArray = function( elem, array ) {
+ return indexOf.call( array, elem );
+ };
+}
- return this;
-
- function root( elem, cur ) {
- return table && jQuery.nodeName(elem, "table") && jQuery.nodeName(cur, "tr") ?
- (elem.getElementsByTagName("tbody")[0] ||
- elem.appendChild(elem.ownerDocument.createElement("tbody"))) :
- elem;
+// All jQuery objects should point back to these
+rootjQuery = jQuery(document);
+
+// Cleanup functions for the document ready method
+if ( document.addEventListener ) {
+ DOMContentLoaded = function() {
+ document.removeEventListener( "DOMContentLoaded", DOMContentLoaded, false );
+ jQuery.ready();
+ };
+
+} else if ( document.attachEvent ) {
+ DOMContentLoaded = function() {
+ // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
+ if ( document.readyState === "complete" ) {
+ document.detachEvent( "onreadystatechange", DOMContentLoaded );
+ jQuery.ready();
}
+ };
+}
+
+// The DOM ready check for Internet Explorer
+function doScrollCheck() {
+ if ( jQuery.isReady ) {
+ return;
}
-};
-// Give the init function the jQuery prototype for later instantiation
-jQuery.fn.init.prototype = jQuery.fn;
+ try {
+ // If IE is used, use the trick by Diego Perini
+ // http://javascript.nwbox.com/IEContentLoaded/
+ document.documentElement.doScroll("left");
+ } catch( error ) {
+ setTimeout( doScrollCheck, 1 );
+ return;
+ }
+
+ // and execute any waiting functions
+ jQuery.ready();
+}
function evalScript( i, elem ) {
- if ( elem.src )
+ if ( elem.src ) {
jQuery.ajax({
url: elem.src,
async: false,
dataType: "script"
});
-
- else
+ } else {
jQuery.globalEval( elem.text || elem.textContent || elem.innerHTML || "" );
+ }
- if ( elem.parentNode )
+ if ( elem.parentNode ) {
elem.parentNode.removeChild( elem );
+ }
}
-function now(){
- return +new Date;
+// Mutifunctional method to get and set values to a collection
+// The value/s can be optionally by executed if its a function
+function access( elems, key, value, exec, fn, pass ) {
+ var length = elems.length;
+
+ // Setting many attributes
+ if ( typeof key === "object" ) {
+ for ( var k in key ) {
+ access( elems, k, key[k], exec, fn, value );
+ }
+ return elems;
+ }
+
+ // Setting one attribute
+ if ( value !== undefined ) {
+ // Optionally, function values get executed if exec is true
+ exec = !pass && exec && jQuery.isFunction(value);
+
+ for ( var i = 0; i < length; i++ ) {
+ fn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass );
+ }
+
+ return elems;
+ }
+
+ // Getting an attribute
+ return length ? fn( elems[0], key ) : null;
}
-jQuery.extend = jQuery.fn.extend = function() {
- // copy reference to target object
- var target = arguments[0] || {}, i = 1, length = arguments.length, deep = false, options;
+function now() {
+ return (new Date).getTime();
+}
+(function() {
- // Handle a deep copy situation
- if ( typeof target === "boolean" ) {
- deep = target;
- target = arguments[1] || {};
- // skip the boolean and the target
- i = 2;
- }
+ jQuery.support = {};
- // Handle case when target is a string or something (possible in deep copy)
- if ( typeof target !== "object" && !jQuery.isFunction(target) )
- target = {};
+ var root = document.documentElement,
+ script = document.createElement("script"),
+ div = document.createElement("div"),
+ id = "script" + now();
- // extend jQuery itself if only one argument is passed
- if ( length == i ) {
- target = this;
- --i;
+ div.style.display = "none";
+ div.innerHTML = " <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>";
+
+ var all = div.getElementsByTagName("*"),
+ a = div.getElementsByTagName("a")[0];
+
+ // Can't get basic test support
+ if ( !all || !all.length || !a ) {
+ return;
}
- for ( ; i < length; i++ )
- // Only deal with non-null/undefined values
- if ( (options = arguments[ i ]) != null )
- // Extend the base object
- for ( var name in options ) {
- var src = target[ name ], copy = options[ name ];
+ jQuery.support = {
+ // IE strips leading whitespace when .innerHTML is used
+ leadingWhitespace: div.firstChild.nodeType === 3,
- // Prevent never-ending loop
- if ( target === copy )
- continue;
+ // Make sure that tbody elements aren't automatically inserted
+ // IE will insert them into empty tables
+ tbody: !div.getElementsByTagName("tbody").length,
- // Recurse if we're merging object values
- if ( deep && copy && typeof copy === "object" && !copy.nodeType )
- target[ name ] = jQuery.extend( deep,
- // Never move original objects, clone them
- src || ( copy.length != null ? [ ] : { } )
- , copy );
+ // Make sure that link elements get serialized correctly by innerHTML
+ // This requires a wrapper element in IE
+ htmlSerialize: !!div.getElementsByTagName("link").length,
- // Don't bring in undefined values
- else if ( copy !== undefined )
- target[ name ] = copy;
+ // Get the style information from getAttribute
+ // (IE uses .cssText insted)
+ style: /red/.test( a.getAttribute("style") ),
- }
+ // Make sure that URLs aren't manipulated
+ // (IE normalizes it by default)
+ hrefNormalized: a.getAttribute("href") === "/a",
- // Return the modified object
- return target;
-};
+ // Make sure that element opacity exists
+ // (IE uses filter instead)
+ // Use a regex to work around a WebKit issue. See #5145
+ opacity: /^0.55$/.test( a.style.opacity ),
-// exclude the following css properties to add px
-var exclude = /z-?index|font-?weight|opacity|zoom|line-?height/i,
- // cache defaultView
- defaultView = document.defaultView || {},
- toString = Object.prototype.toString;
+ // Verify style float existence
+ // (IE uses styleFloat instead of cssFloat)
+ cssFloat: !!a.style.cssFloat,
-jQuery.extend({
- noConflict: function( deep ) {
- window.$ = _$;
+ // Make sure that if no value is specified for a checkbox
+ // that it defaults to "on".
+ // (WebKit defaults to "" instead)
+ checkOn: div.getElementsByTagName("input")[0].value === "on",
- if ( deep )
- window.jQuery = _jQuery;
+ // Make sure that a selected-by-default option has a working selected property.
+ // (WebKit defaults to false instead of true, IE too, if it's in an optgroup)
+ optSelected: document.createElement("select").appendChild( document.createElement("option") ).selected,
- return jQuery;
- },
+ // Will be defined later
+ checkClone: false,
+ scriptEval: false,
+ noCloneEvent: true,
+ boxModel: null
+ };
- // See test/unit/core.js for details concerning isFunction.
- // Since version 1.3, DOM methods and functions like alert
- // aren't supported. They return false on IE (#2968).
- isFunction: function( obj ) {
- return toString.call(obj) === "[object Function]";
- },
+ script.type = "text/javascript";
+ try {
+ script.appendChild( document.createTextNode( "window." + id + "=1;" ) );
+ } catch(e) {}
- isArray: function( obj ) {
- return toString.call(obj) === "[object Array]";
- },
+ root.insertBefore( script, root.firstChild );
- // check if an element is in a (or is an) XML document
- isXMLDoc: function( elem ) {
- return elem.nodeType === 9 && elem.documentElement.nodeName !== "HTML" ||
- !!elem.ownerDocument && jQuery.isXMLDoc( elem.ownerDocument );
- },
+ // Make sure that the execution of code works by injecting a script
+ // tag with appendChild/createTextNode
+ // (IE doesn't support this, fails, and uses .text instead)
+ if ( window[ id ] ) {
+ jQuery.support.scriptEval = true;
+ delete window[ id ];
+ }
- // Evalulates a script in a global context
- globalEval: function( data ) {
- if ( data && /\S/.test(data) ) {
- // Inspired by code by Andrea Giammarchi
- // http://webreflection.blogspot.com/2007/08/global-scope-evaluation-and-dom.html
- var head = document.getElementsByTagName("head")[0] || document.documentElement,
- script = document.createElement("script");
+ root.removeChild( script );
- script.type = "text/javascript";
- if ( jQuery.support.scriptEval )
- script.appendChild( document.createTextNode( data ) );
- else
- script.text = data;
+ if ( div.attachEvent && div.fireEvent ) {
+ div.attachEvent("onclick", function click() {
+ // Cloning a node shouldn't copy over any
+ // bound event handlers (IE does this)
+ jQuery.support.noCloneEvent = false;
+ div.detachEvent("onclick", click);
+ });
+ div.cloneNode(true).fireEvent("onclick");
+ }
- // Use insertBefore instead of appendChild to circumvent an IE6 bug.
- // This arises when a base node is used (#2709).
- head.insertBefore( script, head.firstChild );
- head.removeChild( script );
- }
- },
+ div = document.createElement("div");
+ div.innerHTML = "<input type='radio' name='radiotest' checked='checked'/>";
- nodeName: function( elem, name ) {
- return elem.nodeName && elem.nodeName.toUpperCase() == name.toUpperCase();
+ var fragment = document.createDocumentFragment();
+ fragment.appendChild( div.firstChild );
+
+ // WebKit doesn't clone checked state correctly in fragments
+ jQuery.support.checkClone = fragment.cloneNode(true).cloneNode(true).lastChild.checked;
+
+ // Figure out if the W3C box model works as expected
+ // document.body must exist before we can do this
+ jQuery(function() {
+ var div = document.createElement("div");
+ div.style.width = div.style.paddingLeft = "1px";
+
+ document.body.appendChild( div );
+ jQuery.boxModel = jQuery.support.boxModel = div.offsetWidth === 2;
+ document.body.removeChild( div ).style.display = 'none';
+ div = null;
+ });
+
+ // Technique from Juriy Zaytsev
+ // http://thinkweb2.com/projects/prototype/detecting-event-support-without-browser-sniffing/
+ var eventSupported = function( eventName ) {
+ var el = document.createElement("div");
+ eventName = "on" + eventName;
+
+ var isSupported = (eventName in el);
+ if ( !isSupported ) {
+ el.setAttribute(eventName, "return;");
+ isSupported = typeof el[eventName] === "function";
+ }
+ el = null;
+
+ return isSupported;
+ };
+
+ jQuery.support.submitBubbles = eventSupported("submit");
+ jQuery.support.changeBubbles = eventSupported("change");
+
+ // release memory in IE
+ root = script = div = all = a = null;
+})();
+
+jQuery.props = {
+ "for": "htmlFor",
+ "class": "className",
+ readonly: "readOnly",
+ maxlength: "maxLength",
+ cellspacing: "cellSpacing",
+ rowspan: "rowSpan",
+ colspan: "colSpan",
+ tabindex: "tabIndex",
+ usemap: "useMap",
+ frameborder: "frameBorder"
+};
+var expando = "jQuery" + now(), uuid = 0, windowData = {};
+var emptyObject = {};
+
+jQuery.extend({
+ cache: {},
+
+ expando:expando,
+
+ // The following elements throw uncatchable exceptions if you
+ // attempt to add expando properties to them.
+ noData: {
+ "embed": true,
+ "object": true,
+ "applet": true
},
- // args is for internal usage only
- each: function( object, callback, args ) {
- var name, i = 0, length = object.length;
+ data: function( elem, name, data ) {
+ if ( elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()] ) {
+ return;
+ }
- if ( args ) {
- if ( length === undefined ) {
- for ( name in object )
- if ( callback.apply( object[ name ], args ) === false )
- break;
- } else
- for ( ; i < length; )
- if ( callback.apply( object[ i++ ], args ) === false )
- break;
+ elem = elem == window ?
+ windowData :
+ elem;
- // A special, fast, case for the most common use of each
+ var id = elem[ expando ], cache = jQuery.cache, thisCache;
+
+ // Handle the case where there's no name immediately
+ if ( !name && !id ) {
+ return null;
+ }
+
+ // Compute a unique ID for the element
+ if ( !id ) {
+ id = ++uuid;
+ }
+
+ // Avoid generating a new cache unless none exists and we
+ // want to manipulate it.
+ if ( typeof name === "object" ) {
+ elem[ expando ] = id;
+ thisCache = cache[ id ] = jQuery.extend(true, {}, name);
+ } else if ( cache[ id ] ) {
+ thisCache = cache[ id ];
+ } else if ( typeof data === "undefined" ) {
+ thisCache = emptyObject;
} else {
- if ( length === undefined ) {
- for ( name in object )
- if ( callback.call( object[ name ], name, object[ name ] ) === false )
- break;
- } else
- for ( var value = object[0];
- i < length && callback.call( value, i, value ) !== false; value = object[++i] ){}
+ thisCache = cache[ id ] = {};
}
- return object;
+ // Prevent overriding the named cache with undefined values
+ if ( data !== undefined ) {
+ elem[ expando ] = id;
+ thisCache[ name ] = data;
+ }
+
+ return typeof name === "string" ? thisCache[ name ] : thisCache;
},
- prop: function( elem, value, type, i, name ) {
- // Handle executable functions
- if ( jQuery.isFunction( value ) )
- value = value.call( elem, i );
+ removeData: function( elem, name ) {
+ if ( elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()] ) {
+ return;
+ }
- // Handle passing in a number to a CSS property
- return typeof value === "number" && type == "curCSS" && !exclude.test( name ) ?
- value + "px" :
- value;
- },
+ elem = elem == window ?
+ windowData :
+ elem;
+
+ var id = elem[ expando ], cache = jQuery.cache, thisCache = cache[ id ];
+
+ // If we want to remove a specific section of the element's data
+ if ( name ) {
+ if ( thisCache ) {
+ // Remove the section of cache data
+ delete thisCache[ name ];
+
+ // If we've removed all the data, remove the element's cache
+ if ( jQuery.isEmptyObject(thisCache) ) {
+ jQuery.removeData( elem );
+ }
+ }
+
+ // Otherwise, we want to remove all of the element's data
+ } else {
+ // Clean up the element expando
+ try {
+ delete elem[ expando ];
+ } catch( e ) {
+ // IE has trouble directly removing the expando
+ // but it's ok with using removeAttribute
+ if ( elem.removeAttribute ) {
+ elem.removeAttribute( expando );
+ }
+ }
+
+ // Completely remove the data cache
+ delete cache[ id ];
+ }
+ }
+});
- className: {
- // internal only, use addClass("class")
- add: function( elem, classNames ) {
- jQuery.each((classNames || "").split(/\s+/), function(i, className){
- if ( elem.nodeType == 1 && !jQuery.className.has( elem.className, className ) )
- elem.className += (elem.className ? " " : "") + className;
+jQuery.fn.extend({
+ data: function( key, value ) {
+ if ( typeof key === "undefined" && this.length ) {
+ return jQuery.data( this[0] );
+
+ } else if ( typeof key === "object" ) {
+ return this.each(function() {
+ jQuery.data( this, key );
});
- },
+ }
- // internal only, use removeClass("class")
- remove: function( elem, classNames ) {
- if (elem.nodeType == 1)
- elem.className = classNames !== undefined ?
- jQuery.grep(elem.className.split(/\s+/), function(className){
- return !jQuery.className.has( classNames, className );
- }).join(" ") :
- "";
- },
+ var parts = key.split(".");
+ parts[1] = parts[1] ? "." + parts[1] : "";
- // internal only, use hasClass("class")
- has: function( elem, className ) {
- return elem && jQuery.inArray( className, (elem.className || elem).toString().split(/\s+/) ) > -1;
+ if ( value === undefined ) {
+ var data = this.triggerHandler("getData" + parts[1] + "!", [parts[0]]);
+
+ if ( data === undefined && this.length ) {
+ data = jQuery.data( this[0], key );
+ }
+ return data === undefined && parts[1] ?
+ this.data( parts[0] ) :
+ data;
+ } else {
+ return this.trigger("setData" + parts[1] + "!", [parts[0], value]).each(function() {
+ jQuery.data( this, key, value );
+ });
}
},
- // A method for quickly swapping in/out CSS properties to get correct calculations
- swap: function( elem, options, callback ) {
- var old = {};
- // Remember the old values, and insert the new ones
- for ( var name in options ) {
- old[ name ] = elem.style[ name ];
- elem.style[ name ] = options[ name ];
+ removeData: function( key ) {
+ return this.each(function() {
+ jQuery.removeData( this, key );
+ });
+ }
+});
+jQuery.extend({
+ queue: function( elem, type, data ) {
+ if ( !elem ) {
+ return;
}
- callback.call( elem );
+ type = (type || "fx") + "queue";
+ var q = jQuery.data( elem, type );
- // Revert the old values
- for ( var name in options )
- elem.style[ name ] = old[ name ];
+ // Speed up dequeue by getting out quickly if this is just a lookup
+ if ( !data ) {
+ return q || [];
+ }
+
+ if ( !q || jQuery.isArray(data) ) {
+ q = jQuery.data( elem, type, jQuery.makeArray(data) );
+
+ } else {
+ q.push( data );
+ }
+
+ return q;
},
- css: function( elem, name, force, extra ) {
- if ( name == "width" || name == "height" ) {
- var val, props = { position: "absolute", visibility: "hidden", display:"block" }, which = name == "width" ? [ "Left", "Right" ] : [ "Top", "Bottom" ];
+ dequeue: function( elem, type ) {
+ type = type || "fx";
- function getWH() {
- val = name == "width" ? elem.offsetWidth : elem.offsetHeight;
+ var queue = jQuery.queue( elem, type ), fn = queue.shift();
- if ( extra === "border" )
- return;
+ // If the fx queue is dequeued, always remove the progress sentinel
+ if ( fn === "inprogress" ) {
+ fn = queue.shift();
+ }
- jQuery.each( which, function() {
- if ( !extra )
- val -= parseFloat(jQuery.curCSS( elem, "padding" + this, true)) || 0;
- if ( extra === "margin" )
- val += parseFloat(jQuery.curCSS( elem, "margin" + this, true)) || 0;
- else
- val -= parseFloat(jQuery.curCSS( elem, "border" + this + "Width", true)) || 0;
- });
+ if ( fn ) {
+ // Add a progress sentinel to prevent the fx queue from being
+ // automatically dequeued
+ if ( type === "fx" ) {
+ queue.unshift("inprogress");
}
- if ( elem.offsetWidth !== 0 )
- getWH();
- else
- jQuery.swap( elem, props, getWH );
+ fn.call(elem, function() {
+ jQuery.dequeue(elem, type);
+ });
+ }
+ }
+});
- return Math.max(0, Math.round(val));
+jQuery.fn.extend({
+ queue: function( type, data ) {
+ if ( typeof type !== "string" ) {
+ data = type;
+ type = "fx";
}
- return jQuery.curCSS( elem, name, force );
- },
+ if ( data === undefined ) {
+ return jQuery.queue( this[0], type );
+ }
+ return this.each(function( i, elem ) {
+ var queue = jQuery.queue( this, type, data );
- curCSS: function( elem, name, force ) {
- var ret, style = elem.style;
+ if ( type === "fx" && queue[0] !== "inprogress" ) {
+ jQuery.dequeue( this, type );
+ }
+ });
+ },
+ dequeue: function( type ) {
+ return this.each(function() {
+ jQuery.dequeue( this, type );
+ });
+ },
- // We need to handle opacity special in IE
- if ( name == "opacity" && !jQuery.support.opacity ) {
- ret = jQuery.attr( style, "opacity" );
+ // Based off of the plugin by Clint Helfers, with permission.
+ // http://blindsignals.com/index.php/2009/07/jquery-delay/
+ delay: function( time, type ) {
+ time = jQuery.fx ? jQuery.fx.speeds[time] || time : time;
+ type = type || "fx";
+
+ return this.queue( type, function() {
+ var elem = this;
+ setTimeout(function() {
+ jQuery.dequeue( elem, type );
+ }, time );
+ });
+ },
- return ret == "" ?
- "1" :
- ret;
- }
+ clearQueue: function( type ) {
+ return this.queue( type || "fx", [] );
+ }
+});
+var rclass = /[\n\t]/g,
+ rspace = /\s+/,
+ rreturn = /\r/g,
+ rspecialurl = /href|src|style/,
+ rtype = /(button|input)/i,
+ rfocusable = /(button|input|object|select|textarea)/i,
+ rclickable = /^(a|area)$/i,
+ rradiocheck = /radio|checkbox/;
- // Make sure we're using the right name for getting the float value
- if ( name.match( /float/i ) )
- name = styleFloat;
+jQuery.fn.extend({
+ attr: function( name, value ) {
+ return access( this, name, value, true, jQuery.attr );
+ },
- if ( !force && style && style[ name ] )
- ret = style[ name ];
+ removeAttr: function( name, fn ) {
+ return this.each(function(){
+ jQuery.attr( this, name, "" );
+ if ( this.nodeType === 1 ) {
+ this.removeAttribute( name );
+ }
+ });
+ },
- else if ( defaultView.getComputedStyle ) {
+ addClass: function( value ) {
+ if ( jQuery.isFunction(value) ) {
+ return this.each(function(i) {
+ var self = jQuery(this);
+ self.addClass( value.call(this, i, self.attr("class")) );
+ });
+ }
- // Only "float" is needed here
- if ( name.match( /float/i ) )
- name = "float";
+ if ( value && typeof value === "string" ) {
+ var classNames = (value || "").split( rspace );
- name = name.replace( /([A-Z])/g, "-$1" ).toLowerCase();
+ for ( var i = 0, l = this.length; i < l; i++ ) {
+ var elem = this[i];
- var computedStyle = defaultView.getComputedStyle( elem, null );
+ if ( elem.nodeType === 1 ) {
+ if ( !elem.className ) {
+ elem.className = value;
- if ( computedStyle )
- ret = computedStyle.getPropertyValue( name );
+ } else {
+ var className = " " + elem.className + " ";
+ for ( var c = 0, cl = classNames.length; c < cl; c++ ) {
+ if ( className.indexOf( " " + classNames[c] + " " ) < 0 ) {
+ elem.className += " " + classNames[c];
+ }
+ }
+ }
+ }
+ }
+ }
- // We should always get a number back from opacity
- if ( name == "opacity" && ret == "" )
- ret = "1";
+ return this;
+ },
- } else if ( elem.currentStyle ) {
- var camelCase = name.replace(/\-(\w)/g, function(all, letter){
- return letter.toUpperCase();
+ removeClass: function( value ) {
+ if ( jQuery.isFunction(value) ) {
+ return this.each(function(i) {
+ var self = jQuery(this);
+ self.removeClass( value.call(this, i, self.attr("class")) );
});
+ }
- ret = elem.currentStyle[ name ] || elem.currentStyle[ camelCase ];
+ if ( (value && typeof value === "string") || value === undefined ) {
+ var classNames = (value || "").split(rspace);
- // From the awesome hack by Dean Edwards
- // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291
+ for ( var i = 0, l = this.length; i < l; i++ ) {
+ var elem = this[i];
- // If we're not dealing with a regular pixel number
- // but a number that has a weird ending, we need to convert it to pixels
- if ( !/^\d+(px)?$/i.test( ret ) && /^\d/.test( ret ) ) {
- // Remember the original values
- var left = style.left, rsLeft = elem.runtimeStyle.left;
-
- // Put in the new values to get a computed value out
- elem.runtimeStyle.left = elem.currentStyle.left;
- style.left = ret || 0;
- ret = style.pixelLeft + "px";
+ if ( elem.nodeType === 1 && elem.className ) {
+ if ( value ) {
+ var className = (" " + elem.className + " ").replace(rclass, " ");
+ for ( var c = 0, cl = classNames.length; c < cl; c++ ) {
+ className = className.replace(" " + classNames[c] + " ", " ");
+ }
+ elem.className = className.substring(1, className.length - 1);
- // Revert the changed values
- style.left = left;
- elem.runtimeStyle.left = rsLeft;
+ } else {
+ elem.className = "";
+ }
+ }
}
}
- return ret;
+ return this;
},
- clean: function( elems, context, fragment ) {
- context = context || document;
-
- // !context.createElement fails in IE with an error but returns typeof 'object'
- if ( typeof context.createElement === "undefined" )
- context = context.ownerDocument || context[0] && context[0].ownerDocument || document;
+ toggleClass: function( value, stateVal ) {
+ var type = typeof value, isBool = typeof stateVal === "boolean";
- // If a single string is passed in and it's a single tag
- // just do a createElement and skip the rest
- if ( !fragment && elems.length === 1 && typeof elems[0] === "string" ) {
- var match = /^<(\w+)\s*\/?>$/.exec(elems[0]);
- if ( match )
- return [ context.createElement( match[1] ) ];
+ if ( jQuery.isFunction( value ) ) {
+ return this.each(function(i) {
+ var self = jQuery(this);
+ self.toggleClass( value.call(this, i, self.attr("class"), stateVal), stateVal );
+ });
}
- var ret = [], scripts = [], div = context.createElement("div");
+ return this.each(function() {
+ if ( type === "string" ) {
+ // toggle individual class names
+ var className, i = 0, self = jQuery(this),
+ state = stateVal,
+ classNames = value.split( rspace );
+
+ while ( (className = classNames[ i++ ]) ) {
+ // check each className given, space seperated list
+ state = isBool ? state : !self.hasClass( className );
+ self[ state ? "addClass" : "removeClass" ]( className );
+ }
- jQuery.each(elems, function(i, elem){
- if ( typeof elem === "number" )
- elem += '';
+ } else if ( type === "undefined" || type === "boolean" ) {
+ if ( this.className ) {
+ // store className if set
+ jQuery.data( this, "__className__", this.className );
+ }
- if ( !elem )
- return;
+ // toggle whole className
+ this.className = this.className || value === false ? "" : jQuery.data( this, "__className__" ) || "";
+ }
+ });
+ },
- // Convert html string into DOM nodes
- if ( typeof elem === "string" ) {
- // Fix "XHTML"-style tags in all browsers
- elem = elem.replace(/(<(\w+)[^>]*?)\/>/g, function(all, front, tag){
- return tag.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i) ?
- all :
- front + "></" + tag + ">";
- });
+ hasClass: function( selector ) {
+ var className = " " + selector + " ";
+ for ( var i = 0, l = this.length; i < l; i++ ) {
+ if ( (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) > -1 ) {
+ return true;
+ }
+ }
- // Trim whitespace, otherwise indexOf won't work as expected
- var tags = elem.replace(/^\s+/, "").substring(0, 10).toLowerCase();
+ return false;
+ },
- var wrap =
- // option or optgroup
- !tags.indexOf("<opt") &&
- [ 1, "<select multiple='multiple'>", "</select>" ] ||
+ val: function( value ) {
+ if ( value === undefined ) {
+ var elem = this[0];
- !tags.indexOf("<leg") &&
- [ 1, "<fieldset>", "</fieldset>" ] ||
+ if ( elem ) {
+ if ( jQuery.nodeName( elem, "option" ) ) {
+ return (elem.attributes.value || {}).specified ? elem.value : elem.text;
+ }
- tags.match(/^<(thead|tbody|tfoot|colg|cap)/) &&
- [ 1, "<table>", "</table>" ] ||
+ // We need to handle select boxes special
+ if ( jQuery.nodeName( elem, "select" ) ) {
+ var index = elem.selectedIndex,
+ values = [],
+ options = elem.options,
+ one = elem.type === "select-one";
- !tags.indexOf("<tr") &&
- [ 2, "<table><tbody>", "</tbody></table>" ] ||
+ // Nothing was selected
+ if ( index < 0 ) {
+ return null;
+ }
- // <thead> matched above
- (!tags.indexOf("<td") || !tags.indexOf("<th")) &&
- [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ] ||
+ // Loop through all the selected options
+ for ( var i = one ? index : 0, max = one ? index + 1 : options.length; i < max; i++ ) {
+ var option = options[ i ];
- !tags.indexOf("<col") &&
- [ 2, "<table><tbody></tbody><colgroup>", "</colgroup></table>" ] ||
+ if ( option.selected ) {
+ // Get the specifc value for the option
+ value = jQuery(option).val();
- // IE can't serialize <link> and <script> tags normally
- !jQuery.support.htmlSerialize &&
- [ 1, "div<div>", "</div>" ] ||
+ // We don't need an array for one selects
+ if ( one ) {
+ return value;
+ }
- [ 0, "", "" ];
+ // Multi-Selects return an array
+ values.push( value );
+ }
+ }
- // Go to html and back, then peel off extra wrappers
- div.innerHTML = wrap[1] + elem + wrap[2];
+ return values;
+ }
- // Move to the right depth
- while ( wrap[0]-- )
- div = div.lastChild;
+ // Handle the case where in Webkit "" is returned instead of "on" if a value isn't specified
+ if ( rradiocheck.test( elem.type ) && !jQuery.support.checkOn ) {
+ return elem.getAttribute("value") === null ? "on" : elem.value;
+ }
+
- // Remove IE's autoinserted <tbody> from table fragments
- if ( !jQuery.support.tbody ) {
+ // Everything else, we just grab the value
+ return (elem.value || "").replace(rreturn, "");
- // String was a <table>, *may* have spurious <tbody>
- var hasBody = /<tbody/i.test(elem),
- tbody = !tags.indexOf("<table") && !hasBody ?
- div.firstChild && div.firstChild.childNodes :
+ }
- // String was a bare <thead> or <tfoot>
- wrap[1] == "<table>" && !hasBody ?
- div.childNodes :
- [];
+ return undefined;
+ }
- for ( var j = tbody.length - 1; j >= 0 ; --j )
- if ( jQuery.nodeName( tbody[ j ], "tbody" ) && !tbody[ j ].childNodes.length )
- tbody[ j ].parentNode.removeChild( tbody[ j ] );
+ var isFunction = jQuery.isFunction(value);
- }
+ return this.each(function(i) {
+ var self = jQuery(this), val = value;
- // IE completely kills leading whitespace when innerHTML is used
- if ( !jQuery.support.leadingWhitespace && /^\s/.test( elem ) )
- div.insertBefore( context.createTextNode( elem.match(/^\s*/)[0] ), div.firstChild );
-
- elem = jQuery.makeArray( div.childNodes );
+ if ( this.nodeType !== 1 ) {
+ return;
}
- if ( elem.nodeType )
- ret.push( elem );
- else
- ret = jQuery.merge( ret, elem );
+ if ( isFunction ) {
+ val = value.call(this, i, self.val());
+ }
- });
+ // Typecast each time if the value is a Function and the appended
+ // value is therefore different each time.
+ if ( typeof val === "number" ) {
+ val += "";
+ }
- if ( fragment ) {
- for ( var i = 0; ret[i]; i++ ) {
- if ( jQuery.nodeName( ret[i], "script" ) && (!ret[i].type || ret[i].type.toLowerCase() === "text/javascript") ) {
- scripts.push( ret[i].parentNode ? ret[i].parentNode.removeChild( ret[i] ) : ret[i] );
- } else {
- if ( ret[i].nodeType === 1 )
- ret.splice.apply( ret, [i + 1, 0].concat(jQuery.makeArray(ret[i].getElementsByTagName("script"))) );
- fragment.appendChild( ret[i] );
+ if ( jQuery.isArray(val) && rradiocheck.test( this.type ) ) {
+ this.checked = jQuery.inArray( self.val(), val ) >= 0;
+
+ } else if ( jQuery.nodeName( this, "select" ) ) {
+ var values = jQuery.makeArray(val);
+
+ jQuery( "option", this ).each(function() {
+ this.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0;
+ });
+
+ if ( !values.length ) {
+ this.selectedIndex = -1;
}
+
+ } else {
+ this.value = val;
}
-
- return scripts;
- }
+ });
+ }
+});
- return ret;
+jQuery.extend({
+ attrFn: {
+ val: true,
+ css: true,
+ html: true,
+ text: true,
+ data: true,
+ width: true,
+ height: true,
+ offset: true
},
-
- attr: function( elem, name, value ) {
+
+ attr: function( elem, name, value, pass ) {
// don't set attributes on text and comment nodes
- if (!elem || elem.nodeType == 3 || elem.nodeType == 8)
+ if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 ) {
return undefined;
+ }
+
+ if ( pass && name in jQuery.attrFn ) {
+ return jQuery(elem)[name](value);
+ }
- var notxml = !jQuery.isXMLDoc( elem ),
+ var notxml = elem.nodeType !== 1 || !jQuery.isXMLDoc( elem ),
// Whether we are setting (or getting)
set = value !== undefined;
@@ -977,472 +1448,1120 @@ jQuery.extend({
name = notxml && jQuery.props[ name ] || name;
// Only do all the following if this is a node (faster for style)
- // IE elem.getAttribute passes even for style
- if ( elem.tagName ) {
-
+ if ( elem.nodeType === 1 ) {
// These attributes require special treatment
- var special = /href|src|style/.test( name );
+ var special = rspecialurl.test( name );
- // Safari mis-reports the default selected property of a hidden option
+ // Safari mis-reports the default selected property of an option
// Accessing the parent's selectedIndex property fixes it
- if ( name == "selected" && elem.parentNode )
- elem.parentNode.selectedIndex;
+ if ( name === "selected" && !jQuery.support.optSelected ) {
+ var parent = elem.parentNode;
+ if ( parent ) {
+ parent.selectedIndex;
+
+ // Make sure that it also works with optgroups, see #5701
+ if ( parent.parentNode ) {
+ parent.parentNode.selectedIndex;
+ }
+ }
+ }
// If applicable, access the attribute via the DOM 0 way
if ( name in elem && notxml && !special ) {
- if ( set ){
+ if ( set ) {
// We can't allow the type property to be changed (since it causes problems in IE)
- if ( name == "type" && jQuery.nodeName( elem, "input" ) && elem.parentNode )
- throw "type property can't be changed";
+ if ( name === "type" && rtype.test( elem.nodeName ) && elem.parentNode ) {
+ jQuery.error( "type property can't be changed" );
+ }
elem[ name ] = value;
}
// browsers index elements by id/name on forms, give priority to attributes.
- if( jQuery.nodeName( elem, "form" ) && elem.getAttributeNode(name) )
+ if ( jQuery.nodeName( elem, "form" ) && elem.getAttributeNode(name) ) {
return elem.getAttributeNode( name ).nodeValue;
+ }
// elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set
// http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
- if ( name == "tabIndex" ) {
+ if ( name === "tabIndex" ) {
var attributeNode = elem.getAttributeNode( "tabIndex" );
- return attributeNode && attributeNode.specified
- ? attributeNode.value
- : elem.nodeName.match(/(button|input|object|select|textarea)/i)
- ? 0
- : elem.nodeName.match(/^(a|area)$/i) && elem.href
- ? 0
- : undefined;
+
+ return attributeNode && attributeNode.specified ?
+ attributeNode.value :
+ rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?
+ 0 :
+ undefined;
}
return elem[ name ];
}
- if ( !jQuery.support.style && notxml && name == "style" )
- return jQuery.attr( elem.style, "cssText", value );
+ if ( !jQuery.support.style && notxml && name === "style" ) {
+ if ( set ) {
+ elem.style.cssText = "" + value;
+ }
+
+ return elem.style.cssText;
+ }
- if ( set )
+ if ( set ) {
// convert the value to a string (all browsers do this but IE) see #1070
elem.setAttribute( name, "" + value );
+ }
- var attr = !jQuery.support.hrefNormalized && notxml && special
+ var attr = !jQuery.support.hrefNormalized && notxml && special ?
// Some attributes require a special call on IE
- ? elem.getAttribute( name, 2 )
- : elem.getAttribute( name );
+ elem.getAttribute( name, 2 ) :
+ elem.getAttribute( name );
// Non-existent attributes return null, we normalize to undefined
return attr === null ? undefined : attr;
}
// elem is actually elem.style ... set the style
+ // Using attr for specific style information is now deprecated. Use style insead.
+ return jQuery.style( elem, name, value );
+ }
+});
+var fcleanup = function( nm ) {
+ return nm.replace(/[^\w\s\.\|`]/g, function( ch ) {
+ return "\\" + ch;
+ });
+};
- // IE uses filters for opacity
- if ( !jQuery.support.opacity && name == "opacity" ) {
- if ( set ) {
- // IE has trouble with opacity if it does not have layout
- // Force it by setting the zoom level
- elem.zoom = 1;
+/*
+ * A number of helper functions used for managing events.
+ * Many of the ideas behind this code originated from
+ * Dean Edwards' addEvent library.
+ */
+jQuery.event = {
- // Set the alpha filter to set the opacity
- elem.filter = (elem.filter || "").replace( /alpha\([^)]*\)/, "" ) +
- (parseInt( value ) + '' == "NaN" ? "" : "alpha(opacity=" + value * 100 + ")");
- }
+ // Bind an event to an element
+ // Original by Dean Edwards
+ add: function( elem, types, handler, data ) {
+ if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
+ return;
+ }
- return elem.filter && elem.filter.indexOf("opacity=") >= 0 ?
- (parseFloat( elem.filter.match(/opacity=([^)]*)/)[1] ) / 100) + '':
- "";
+ // For whatever reason, IE has trouble passing the window object
+ // around, causing it to be cloned in the process
+ if ( elem.setInterval && ( elem !== window && !elem.frameElement ) ) {
+ elem = window;
}
- name = name.replace(/-([a-z])/ig, function(all, letter){
- return letter.toUpperCase();
- });
+ // Make sure that the function being executed has a unique ID
+ if ( !handler.guid ) {
+ handler.guid = jQuery.guid++;
+ }
- if ( set )
- elem[ name ] = value;
+ // if data is passed, bind to handler
+ if ( data !== undefined ) {
+ // Create temporary function pointer to original handler
+ var fn = handler;
- return elem[ name ];
- },
+ // Create unique handler function, wrapped around original handler
+ handler = jQuery.proxy( fn );
- trim: function( text ) {
- return (text || "").replace( /^\s+|\s+$/g, "" );
- },
+ // Store data in unique handler
+ handler.data = data;
+ }
- makeArray: function( array ) {
- var ret = [];
+ // Init the element's event structure
+ var events = jQuery.data( elem, "events" ) || jQuery.data( elem, "events", {} ),
+ handle = jQuery.data( elem, "handle" ), eventHandle;
- if( array != null ){
- var i = array.length;
- // The window, strings (and functions) also have 'length'
- if( i == null || typeof array === "string" || jQuery.isFunction(array) || array.setInterval )
- ret[0] = array;
- else
- while( i )
- ret[--i] = array[i];
+ if ( !handle ) {
+ eventHandle = function() {
+ // Handle the second event of a trigger and when
+ // an event is called after a page has unloaded
+ return typeof jQuery !== "undefined" && !jQuery.event.triggered ?
+ jQuery.event.handle.apply( eventHandle.elem, arguments ) :
+ undefined;
+ };
+
+ handle = jQuery.data( elem, "handle", eventHandle );
}
- return ret;
- },
+ // If no handle is found then we must be trying to bind to one of the
+ // banned noData elements
+ if ( !handle ) {
+ return;
+ }
- inArray: function( elem, array ) {
- for ( var i = 0, length = array.length; i < length; i++ )
- // Use === because on IE, window == document
- if ( array[ i ] === elem )
- return i;
+ // Add elem as a property of the handle function
+ // This is to prevent a memory leak with non-native
+ // event in IE.
+ handle.elem = elem;
- return -1;
+ // Handle multiple events separated by a space
+ // jQuery(...).bind("mouseover mouseout", fn);
+ types = types.split( /\s+/ );
+
+ var type, i = 0;
+
+ while ( (type = types[ i++ ]) ) {
+ // Namespaced event handlers
+ var namespaces = type.split(".");
+ type = namespaces.shift();
+
+ if ( i > 1 ) {
+ handler = jQuery.proxy( handler );
+
+ if ( data !== undefined ) {
+ handler.data = data;
+ }
+ }
+
+ handler.type = namespaces.slice(0).sort().join(".");
+
+ // Get the current list of functions bound to this event
+ var handlers = events[ type ],
+ special = this.special[ type ] || {};
+
+ // Init the event handler queue
+ if ( !handlers ) {
+ handlers = events[ type ] = {};
+
+ // Check for a special event handler
+ // Only use addEventListener/attachEvent if the special
+ // events handler returns false
+ if ( !special.setup || special.setup.call( elem, data, namespaces, handler) === false ) {
+ // Bind the global event handler to the element
+ if ( elem.addEventListener ) {
+ elem.addEventListener( type, handle, false );
+ } else if ( elem.attachEvent ) {
+ elem.attachEvent( "on" + type, handle );
+ }
+ }
+ }
+
+ if ( special.add ) {
+ var modifiedHandler = special.add.call( elem, handler, data, namespaces, handlers );
+ if ( modifiedHandler && jQuery.isFunction( modifiedHandler ) ) {
+ modifiedHandler.guid = modifiedHandler.guid || handler.guid;
+ modifiedHandler.data = modifiedHandler.data || handler.data;
+ modifiedHandler.type = modifiedHandler.type || handler.type;
+ handler = modifiedHandler;
+ }
+ }
+
+ // Add the function to the element's handler list
+ handlers[ handler.guid ] = handler;
+
+ // Keep track of which events have been used, for global triggering
+ this.global[ type ] = true;
+ }
+
+ // Nullify elem to prevent memory leaks in IE
+ elem = null;
},
- merge: function( first, second ) {
- // We have to loop this way because IE & Opera overwrite the length
- // expando of getElementsByTagName
- var i = 0, elem, pos = first.length;
- // Also, we need to make sure that the correct elements are being returned
- // (IE returns comment nodes in a '*' query)
- if ( !jQuery.support.getAll ) {
- while ( (elem = second[ i++ ]) != null )
- if ( elem.nodeType != 8 )
- first[ pos++ ] = elem;
-
- } else
- while ( (elem = second[ i++ ]) != null )
- first[ pos++ ] = elem;
+ global: {},
- return first;
+ // Detach an event or set of events from an element
+ remove: function( elem, types, handler ) {
+ // don't do events on text and comment nodes
+ if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
+ return;
+ }
+
+ var events = jQuery.data( elem, "events" ), ret, type, fn;
+
+ if ( events ) {
+ // Unbind all events for the element
+ if ( types === undefined || (typeof types === "string" && types.charAt(0) === ".") ) {
+ for ( type in events ) {
+ this.remove( elem, type + (types || "") );
+ }
+ } else {
+ // types is actually an event object here
+ if ( types.type ) {
+ handler = types.handler;
+ types = types.type;
+ }
+
+ // Handle multiple events separated by a space
+ // jQuery(...).unbind("mouseover mouseout", fn);
+ types = types.split(/\s+/);
+ var i = 0;
+ while ( (type = types[ i++ ]) ) {
+ // Namespaced event handlers
+ var namespaces = type.split(".");
+ type = namespaces.shift();
+ var all = !namespaces.length,
+ cleaned = jQuery.map( namespaces.slice(0).sort(), fcleanup ),
+ namespace = new RegExp("(^|\\.)" + cleaned.join("\\.(?:.*\\.)?") + "(\\.|$)"),
+ special = this.special[ type ] || {};
+
+ if ( events[ type ] ) {
+ // remove the given handler for the given type
+ if ( handler ) {
+ fn = events[ type ][ handler.guid ];
+ delete events[ type ][ handler.guid ];
+
+ // remove all handlers for the given type
+ } else {
+ for ( var handle in events[ type ] ) {
+ // Handle the removal of namespaced events
+ if ( all || namespace.test( events[ type ][ handle ].type ) ) {
+ delete events[ type ][ handle ];
+ }
+ }
+ }
+
+ if ( special.remove ) {
+ special.remove.call( elem, namespaces, fn);
+ }
+
+ // remove generic event handler if no more handlers exist
+ for ( ret in events[ type ] ) {
+ break;
+ }
+ if ( !ret ) {
+ if ( !special.teardown || special.teardown.call( elem, namespaces ) === false ) {
+ if ( elem.removeEventListener ) {
+ elem.removeEventListener( type, jQuery.data( elem, "handle" ), false );
+ } else if ( elem.detachEvent ) {
+ elem.detachEvent( "on" + type, jQuery.data( elem, "handle" ) );
+ }
+ }
+ ret = null;
+ delete events[ type ];
+ }
+ }
+ }
+ }
+
+ // Remove the expando if it's no longer used
+ for ( ret in events ) {
+ break;
+ }
+ if ( !ret ) {
+ var handle = jQuery.data( elem, "handle" );
+ if ( handle ) {
+ handle.elem = null;
+ }
+ jQuery.removeData( elem, "events" );
+ jQuery.removeData( elem, "handle" );
+ }
+ }
},
- unique: function( array ) {
- var ret = [], done = {};
+ // bubbling is internal
+ trigger: function( event, data, elem /*, bubbling */ ) {
+ // Event object or event type
+ var type = event.type || event,
+ bubbling = arguments[3];
+
+ if ( !bubbling ) {
+ event = typeof event === "object" ?
+ // jQuery.Event object
+ event[expando] ? event :
+ // Object literal
+ jQuery.extend( jQuery.Event(type), event ) :
+ // Just the event type (string)
+ jQuery.Event(type);
+
+ if ( type.indexOf("!") >= 0 ) {
+ event.type = type = type.slice(0, -1);
+ event.exclusive = true;
+ }
+
+ // Handle a global trigger
+ if ( !elem ) {
+ // Don't bubble custom events when global (to avoid too much overhead)
+ event.stopPropagation();
+
+ // Only trigger if we've ever bound an event for it
+ if ( this.global[ type ] ) {
+ jQuery.each( jQuery.cache, function() {
+ if ( this.events && this.events[type] ) {
+ jQuery.event.trigger( event, data, this.handle.elem );
+ }
+ });
+ }
+ }
+
+ // Handle triggering a single element
+
+ // don't do events on text and comment nodes
+ if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 ) {
+ return undefined;
+ }
+
+ // Clean up in case it is reused
+ event.result = undefined;
+ event.target = elem;
+
+ // Clone the incoming data, if any
+ data = jQuery.makeArray( data );
+ data.unshift( event );
+ }
+
+ event.currentTarget = elem;
+
+ // Trigger the event, it is assumed that "handle" is a function
+ var handle = jQuery.data( elem, "handle" );
+ if ( handle ) {
+ handle.apply( elem, data );
+ }
+
+ var parent = elem.parentNode || elem.ownerDocument;
+ // Trigger an inline bound script
try {
+ if ( !(elem && elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()]) ) {
+ if ( elem[ "on" + type ] && elem[ "on" + type ].apply( elem, data ) === false ) {
+ event.result = false;
+ }
+ }
+
+ // prevent IE from throwing an error for some elements with some event types, see #3533
+ } catch (e) {}
- for ( var i = 0, length = array.length; i < length; i++ ) {
- var id = jQuery.data( array[ i ] );
+ if ( !event.isPropagationStopped() && parent ) {
+ jQuery.event.trigger( event, data, parent, true );
- if ( !done[ id ] ) {
- done[ id ] = true;
- ret.push( array[ i ] );
+ } else if ( !event.isDefaultPrevented() ) {
+ var target = event.target, old,
+ isClick = jQuery.nodeName(target, "a") && type === "click";
+
+ if ( !isClick && !(target && target.nodeName && jQuery.noData[target.nodeName.toLowerCase()]) ) {
+ try {
+ if ( target[ type ] ) {
+ // Make sure that we don't accidentally re-trigger the onFOO events
+ old = target[ "on" + type ];
+
+ if ( old ) {
+ target[ "on" + type ] = null;
+ }
+
+ this.triggered = true;
+ target[ type ]();
+ }
+
+ // prevent IE from throwing an error for some elements with some event types, see #3533
+ } catch (e) {}
+
+ if ( old ) {
+ target[ "on" + type ] = old;
}
+
+ this.triggered = false;
}
+ }
+ },
+
+ handle: function( event ) {
+ // returned undefined or false
+ var all, handlers;
+
+ event = arguments[0] = jQuery.event.fix( event || window.event );
+ event.currentTarget = this;
+
+ // Namespaced event handlers
+ var namespaces = event.type.split(".");
+ event.type = namespaces.shift();
+
+ // Cache this now, all = true means, any handler
+ all = !namespaces.length && !event.exclusive;
+
+ var namespace = new RegExp("(^|\\.)" + namespaces.slice(0).sort().join("\\.(?:.*\\.)?") + "(\\.|$)");
+
+ handlers = ( jQuery.data(this, "events") || {} )[ event.type ];
+
+ for ( var j in handlers ) {
+ var handler = handlers[ j ];
+
+ // Filter the functions by class
+ if ( all || namespace.test(handler.type) ) {
+ // Pass in a reference to the handler function itself
+ // So that we can later remove it
+ event.handler = handler;
+ event.data = handler.data;
+
+ var ret = handler.apply( this, arguments );
+
+ if ( ret !== undefined ) {
+ event.result = ret;
+ if ( ret === false ) {
+ event.preventDefault();
+ event.stopPropagation();
+ }
+ }
- } catch( e ) {
- ret = array;
+ if ( event.isImmediatePropagationStopped() ) {
+ break;
+ }
+
+ }
}
- return ret;
+ return event.result;
},
- grep: function( elems, callback, inv ) {
- var ret = [];
+ props: "altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),
- // Go through the array, only saving the items
- // that pass the validator function
- for ( var i = 0, length = elems.length; i < length; i++ )
- if ( !inv != !callback( elems[ i ], i ) )
- ret.push( elems[ i ] );
+ fix: function( event ) {
+ if ( event[ expando ] ) {
+ return event;
+ }
- return ret;
+ // store a copy of the original event object
+ // and "clone" to set read-only properties
+ var originalEvent = event;
+ event = jQuery.Event( originalEvent );
+
+ for ( var i = this.props.length, prop; i; ) {
+ prop = this.props[ --i ];
+ event[ prop ] = originalEvent[ prop ];
+ }
+
+ // Fix target property, if necessary
+ if ( !event.target ) {
+ event.target = event.srcElement || document; // Fixes #1925 where srcElement might not be defined either
+ }
+
+ // check if target is a textnode (safari)
+ if ( event.target.nodeType === 3 ) {
+ event.target = event.target.parentNode;
+ }
+
+ // Add relatedTarget, if necessary
+ if ( !event.relatedTarget && event.fromElement ) {
+ event.relatedTarget = event.fromElement === event.target ? event.toElement : event.fromElement;
+ }
+
+ // Calculate pageX/Y if missing and clientX/Y available
+ if ( event.pageX == null && event.clientX != null ) {
+ var doc = document.documentElement, body = document.body;
+ event.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0);
+ event.pageY = event.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc && doc.clientTop || body && body.clientTop || 0);
+ }
+
+ // Add which for key events
+ if ( !event.which && ((event.charCode || event.charCode === 0) ? event.charCode : event.keyCode) ) {
+ event.which = event.charCode || event.keyCode;
+ }
+
+ // Add metaKey to non-Mac browsers (use ctrl for PC's and Meta for Macs)
+ if ( !event.metaKey && event.ctrlKey ) {
+ event.metaKey = event.ctrlKey;
+ }
+
+ // Add which for click: 1 === left; 2 === middle; 3 === right
+ // Note: button is not normalized, so don't use it
+ if ( !event.which && event.button !== undefined ) {
+ event.which = (event.button & 1 ? 1 : ( event.button & 2 ? 3 : ( event.button & 4 ? 2 : 0 ) ));
+ }
+
+ return event;
},
- map: function( elems, callback ) {
- var ret = [];
+ // Deprecated, use jQuery.guid instead
+ guid: 1E8,
- // Go through the array, translating each of the items to their
- // new value (or values).
- for ( var i = 0, length = elems.length; i < length; i++ ) {
- var value = callback( elems[ i ], i );
+ // Deprecated, use jQuery.proxy instead
+ proxy: jQuery.proxy,
- if ( value != null )
- ret[ ret.length ] = value;
+ special: {
+ ready: {
+ // Make sure the ready event is setup
+ setup: jQuery.bindReady,
+ teardown: jQuery.noop
+ },
+
+ live: {
+ add: function( proxy, data, namespaces, live ) {
+ jQuery.extend( proxy, data || {} );
+
+ proxy.guid += data.selector + data.live;
+ data.liveProxy = proxy;
+
+ jQuery.event.add( this, data.live, liveHandler, data );
+
+ },
+
+ remove: function( namespaces ) {
+ if ( namespaces.length ) {
+ var remove = 0, name = new RegExp("(^|\\.)" + namespaces[0] + "(\\.|$)");
+
+ jQuery.each( (jQuery.data(this, "events").live || {}), function() {
+ if ( name.test(this.type) ) {
+ remove++;
+ }
+ });
+
+ if ( remove < 1 ) {
+ jQuery.event.remove( this, namespaces[0], liveHandler );
+ }
+ }
+ },
+ special: {}
+ },
+ beforeunload: {
+ setup: function( data, namespaces, fn ) {
+ // We only want to do this special case on windows
+ if ( this.setInterval ) {
+ this.onbeforeunload = fn;
+ }
+
+ return false;
+ },
+ teardown: function( namespaces, fn ) {
+ if ( this.onbeforeunload === fn ) {
+ this.onbeforeunload = null;
+ }
+ }
}
+ }
+};
- return ret.concat.apply( [], ret );
+jQuery.Event = function( src ) {
+ // Allow instantiation without the 'new' keyword
+ if ( !this.preventDefault ) {
+ return new jQuery.Event( src );
}
-});
-// Use of jQuery.browser is deprecated.
-// It's included for backwards compatibility and plugins,
-// although they should work to migrate away.
+ // Event object
+ if ( src && src.type ) {
+ this.originalEvent = src;
+ this.type = src.type;
+ // Event type
+ } else {
+ this.type = src;
+ }
-var userAgent = navigator.userAgent.toLowerCase();
+ // timeStamp is buggy for some events on Firefox(#3843)
+ // So we won't rely on the native value
+ this.timeStamp = now();
-// Figure out what browser is being used
-jQuery.browser = {
- version: (userAgent.match( /.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/ ) || [0,'0'])[1],
- safari: /webkit/.test( userAgent ),
- opera: /opera/.test( userAgent ),
- msie: /msie/.test( userAgent ) && !/opera/.test( userAgent ),
- mozilla: /mozilla/.test( userAgent ) && !/(compatible|webkit)/.test( userAgent )
+ // Mark it as fixed
+ this[ expando ] = true;
};
-jQuery.each({
- parent: function(elem){return elem.parentNode;},
- parents: function(elem){return jQuery.dir(elem,"parentNode");},
- next: function(elem){return jQuery.nth(elem,2,"nextSibling");},
- prev: function(elem){return jQuery.nth(elem,2,"previousSibling");},
- nextAll: function(elem){return jQuery.dir(elem,"nextSibling");},
- prevAll: function(elem){return jQuery.dir(elem,"previousSibling");},
- siblings: function(elem){return jQuery.sibling(elem.parentNode.firstChild,elem);},
- children: function(elem){return jQuery.sibling(elem.firstChild);},
- contents: function(elem){return jQuery.nodeName(elem,"iframe")?elem.contentDocument||elem.contentWindow.document:jQuery.makeArray(elem.childNodes);}
-}, function(name, fn){
- jQuery.fn[ name ] = function( selector ) {
- var ret = jQuery.map( this, fn );
+function returnFalse() {
+ return false;
+}
+function returnTrue() {
+ return true;
+}
- if ( selector && typeof selector == "string" )
- ret = jQuery.multiFilter( selector, ret );
+// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
+// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
+jQuery.Event.prototype = {
+ preventDefault: function() {
+ this.isDefaultPrevented = returnTrue;
- return this.pushStack( jQuery.unique( ret ), name, selector );
- };
-});
+ var e = this.originalEvent;
+ if ( !e ) {
+ return;
+ }
+
+ // if preventDefault exists run it on the original event
+ if ( e.preventDefault ) {
+ e.preventDefault();
+ }
+ // otherwise set the returnValue property of the original event to false (IE)
+ e.returnValue = false;
+ },
+ stopPropagation: function() {
+ this.isPropagationStopped = returnTrue;
-jQuery.each({
- appendTo: "append",
- prependTo: "prepend",
- insertBefore: "before",
- insertAfter: "after",
- replaceAll: "replaceWith"
-}, function(name, original){
- jQuery.fn[ name ] = function( selector ) {
- var ret = [], insert = jQuery( selector );
+ var e = this.originalEvent;
+ if ( !e ) {
+ return;
+ }
+ // if stopPropagation exists run it on the original event
+ if ( e.stopPropagation ) {
+ e.stopPropagation();
+ }
+ // otherwise set the cancelBubble property of the original event to true (IE)
+ e.cancelBubble = true;
+ },
+ stopImmediatePropagation: function() {
+ this.isImmediatePropagationStopped = returnTrue;
+ this.stopPropagation();
+ },
+ isDefaultPrevented: returnFalse,
+ isPropagationStopped: returnFalse,
+ isImmediatePropagationStopped: returnFalse
+};
- for ( var i = 0, l = insert.length; i < l; i++ ) {
- var elems = (i > 0 ? this.clone(true) : this).get();
- jQuery.fn[ original ].apply( jQuery(insert[i]), elems );
- ret = ret.concat( elems );
+// Checks if an event happened on an element within another element
+// Used in jQuery.event.special.mouseenter and mouseleave handlers
+var withinElement = function( event ) {
+ // Check if mouse(over|out) are still within the same parent element
+ var parent = event.relatedTarget;
+
+ // Traverse up the tree
+ while ( parent && parent !== this ) {
+ // Firefox sometimes assigns relatedTarget a XUL element
+ // which we cannot access the parentNode property of
+ try {
+ parent = parent.parentNode;
+
+ // assuming we've left the element since we most likely mousedover a xul element
+ } catch(e) {
+ break;
}
+ }
+
+ if ( parent !== this ) {
+ // set the correct event type
+ event.type = event.data;
+
+ // handle event if we actually just moused on to a non sub-element
+ jQuery.event.handle.apply( this, arguments );
+ }
+
+},
+
+// In case of event delegation, we only need to rename the event.type,
+// liveHandler will take care of the rest.
+delegate = function( event ) {
+ event.type = event.data;
+ jQuery.event.handle.apply( this, arguments );
+};
- return this.pushStack( ret, name, selector );
+// Create mouseenter and mouseleave events
+jQuery.each({
+ mouseenter: "mouseover",
+ mouseleave: "mouseout"
+}, function( orig, fix ) {
+ jQuery.event.special[ orig ] = {
+ setup: function( data ) {
+ jQuery.event.add( this, fix, data && data.selector ? delegate : withinElement, orig );
+ },
+ teardown: function( data ) {
+ jQuery.event.remove( this, fix, data && data.selector ? delegate : withinElement );
+ }
};
});
-jQuery.each({
- removeAttr: function( name ) {
- jQuery.attr( this, name, "" );
- if (this.nodeType == 1)
- this.removeAttribute( name );
- },
+// submit delegation
+if ( !jQuery.support.submitBubbles ) {
- addClass: function( classNames ) {
- jQuery.className.add( this, classNames );
+jQuery.event.special.submit = {
+ setup: function( data, namespaces, fn ) {
+ if ( this.nodeName.toLowerCase() !== "form" ) {
+ jQuery.event.add(this, "click.specialSubmit." + fn.guid, function( e ) {
+ var elem = e.target, type = elem.type;
+
+ if ( (type === "submit" || type === "image") && jQuery( elem ).closest("form").length ) {
+ return trigger( "submit", this, arguments );
+ }
+ });
+
+ jQuery.event.add(this, "keypress.specialSubmit." + fn.guid, function( e ) {
+ var elem = e.target, type = elem.type;
+
+ if ( (type === "text" || type === "password") && jQuery( elem ).closest("form").length && e.keyCode === 13 ) {
+ return trigger( "submit", this, arguments );
+ }
+ });
+
+ } else {
+ return false;
+ }
},
- removeClass: function( classNames ) {
- jQuery.className.remove( this, classNames );
+ remove: function( namespaces, fn ) {
+ jQuery.event.remove( this, "click.specialSubmit" + (fn ? "."+fn.guid : "") );
+ jQuery.event.remove( this, "keypress.specialSubmit" + (fn ? "."+fn.guid : "") );
+ }
+};
+
+}
+
+// change delegation, happens here so we have bind.
+if ( !jQuery.support.changeBubbles ) {
+
+var formElems = /textarea|input|select/i;
+
+function getVal( elem ) {
+ var type = elem.type, val = elem.value;
+
+ if ( type === "radio" || type === "checkbox" ) {
+ val = elem.checked;
+
+ } else if ( type === "select-multiple" ) {
+ val = elem.selectedIndex > -1 ?
+ jQuery.map( elem.options, function( elem ) {
+ return elem.selected;
+ }).join("-") :
+ "";
+
+ } else if ( elem.nodeName.toLowerCase() === "select" ) {
+ val = elem.selectedIndex;
+ }
+
+ return val;
+}
+
+function testChange( e ) {
+ var elem = e.target, data, val;
+
+ if ( !formElems.test( elem.nodeName ) || elem.readOnly ) {
+ return;
+ }
+
+ data = jQuery.data( elem, "_change_data" );
+ val = getVal(elem);
+
+ // the current data will be also retrieved by beforeactivate
+ if ( e.type !== "focusout" || elem.type !== "radio" ) {
+ jQuery.data( elem, "_change_data", val );
+ }
+
+ if ( data === undefined || val === data ) {
+ return;
+ }
+
+ if ( data != null || val ) {
+ e.type = "change";
+ return jQuery.event.trigger( e, arguments[1], elem );
+ }
+}
+
+jQuery.event.special.change = {
+ filters: {
+ focusout: testChange,
+
+ click: function( e ) {
+ var elem = e.target, type = elem.type;
+
+ if ( type === "radio" || type === "checkbox" || elem.nodeName.toLowerCase() === "select" ) {
+ return testChange.call( this, e );
+ }
+ },
+
+ // Change has to be called before submit
+ // Keydown will be called before keypress, which is used in submit-event delegation
+ keydown: function( e ) {
+ var elem = e.target, type = elem.type;
+
+ if ( (e.keyCode === 13 && elem.nodeName.toLowerCase() !== "textarea") ||
+ (e.keyCode === 32 && (type === "checkbox" || type === "radio")) ||
+ type === "select-multiple" ) {
+ return testChange.call( this, e );
+ }
+ },
+
+ // Beforeactivate happens also before the previous element is blurred
+ // with this event you can't trigger a change event, but you can store
+ // information/focus[in] is not needed anymore
+ beforeactivate: function( e ) {
+ var elem = e.target;
+
+ if ( elem.nodeName.toLowerCase() === "input" && elem.type === "radio" ) {
+ jQuery.data( elem, "_change_data", getVal(elem) );
+ }
+ }
},
+ setup: function( data, namespaces, fn ) {
+ for ( var type in changeFilters ) {
+ jQuery.event.add( this, type + ".specialChange." + fn.guid, changeFilters[type] );
+ }
- toggleClass: function( classNames, state ) {
- if( typeof state !== "boolean" )
- state = !jQuery.className.has( this, classNames );
- jQuery.className[ state ? "add" : "remove" ]( this, classNames );
+ return formElems.test( this.nodeName );
},
+ remove: function( namespaces, fn ) {
+ for ( var type in changeFilters ) {
+ jQuery.event.remove( this, type + ".specialChange" + (fn ? "."+fn.guid : ""), changeFilters[type] );
+ }
- remove: function( selector ) {
- if ( !selector || jQuery.filter( selector, [ this ] ).length ) {
- // Prevent memory leaks
- jQuery( "*", this ).add([this]).each(function(){
- jQuery.event.remove(this);
- jQuery.removeData(this);
+ return formElems.test( this.nodeName );
+ }
+};
+
+var changeFilters = jQuery.event.special.change.filters;
+
+}
+
+function trigger( type, elem, args ) {
+ args[0].type = type;
+ return jQuery.event.handle.apply( elem, args );
+}
+
+// Create "bubbling" focus and blur events
+if ( document.addEventListener ) {
+ jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) {
+ jQuery.event.special[ fix ] = {
+ setup: function() {
+ this.addEventListener( orig, handler, true );
+ },
+ teardown: function() {
+ this.removeEventListener( orig, handler, true );
+ }
+ };
+
+ function handler( e ) {
+ e = jQuery.event.fix( e );
+ e.type = fix;
+ return jQuery.event.handle.call( this, e );
+ }
+ });
+}
+
+jQuery.each(["bind", "one"], function( i, name ) {
+ jQuery.fn[ name ] = function( type, data, fn ) {
+ // Handle object literals
+ if ( typeof type === "object" ) {
+ for ( var key in type ) {
+ this[ name ](key, data, type[key], fn);
+ }
+ return this;
+ }
+
+ if ( jQuery.isFunction( data ) ) {
+ fn = data;
+ data = undefined;
+ }
+
+ var handler = name === "one" ? jQuery.proxy( fn, function( event ) {
+ jQuery( this ).unbind( event, handler );
+ return fn.apply( this, arguments );
+ }) : fn;
+
+ return type === "unload" && name !== "one" ?
+ this.one( type, data, fn ) :
+ this.each(function() {
+ jQuery.event.add( this, type, handler, data );
});
- if (this.parentNode)
- this.parentNode.removeChild( this );
+ };
+});
+
+jQuery.fn.extend({
+ unbind: function( type, fn ) {
+ // Handle object literals
+ if ( typeof type === "object" && !type.preventDefault ) {
+ for ( var key in type ) {
+ this.unbind(key, type[key]);
+ }
+ return this;
+ }
+
+ return this.each(function() {
+ jQuery.event.remove( this, type, fn );
+ });
+ },
+ trigger: function( type, data ) {
+ return this.each(function() {
+ jQuery.event.trigger( type, data, this );
+ });
+ },
+
+ triggerHandler: function( type, data ) {
+ if ( this[0] ) {
+ var event = jQuery.Event( type );
+ event.preventDefault();
+ event.stopPropagation();
+ jQuery.event.trigger( event, data, this[0] );
+ return event.result;
}
},
- empty: function() {
- // Remove element nodes and prevent memory leaks
- jQuery(this).children().remove();
+ toggle: function( fn ) {
+ // Save reference to arguments for access in closure
+ var args = arguments, i = 1;
- // Remove any remaining nodes
- while ( this.firstChild )
- this.removeChild( this.firstChild );
+ // link all the functions, so any of them can unbind this click handler
+ while ( i < args.length ) {
+ jQuery.proxy( fn, args[ i++ ] );
+ }
+
+ return this.click( jQuery.proxy( fn, function( event ) {
+ // Figure out which function to execute
+ var lastToggle = ( jQuery.data( this, "lastToggle" + fn.guid ) || 0 ) % i;
+ jQuery.data( this, "lastToggle" + fn.guid, lastToggle + 1 );
+
+ // Make sure that clicks stop
+ event.preventDefault();
+
+ // and execute the function
+ return args[ lastToggle ].apply( this, arguments ) || false;
+ }));
+ },
+
+ hover: function( fnOver, fnOut ) {
+ return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
}
-}, function(name, fn){
- jQuery.fn[ name ] = function(){
- return this.each( fn, arguments );
+});
+
+jQuery.each(["live", "die"], function( i, name ) {
+ jQuery.fn[ name ] = function( types, data, fn ) {
+ var type, i = 0;
+
+ if ( jQuery.isFunction( data ) ) {
+ fn = data;
+ data = undefined;
+ }
+
+ types = (types || "").split( /\s+/ );
+
+ while ( (type = types[ i++ ]) != null ) {
+ type = type === "focus" ? "focusin" : // focus --> focusin
+ type === "blur" ? "focusout" : // blur --> focusout
+ type === "hover" ? types.push("mouseleave") && "mouseenter" : // hover support
+ type;
+
+ if ( name === "live" ) {
+ // bind live handler
+ jQuery( this.context ).bind( liveConvert( type, this.selector ), {
+ data: data, selector: this.selector, live: type
+ }, fn );
+
+ } else {
+ // unbind live handler
+ jQuery( this.context ).unbind( liveConvert( type, this.selector ), fn ? { guid: fn.guid + this.selector + type } : null );
+ }
+ }
+
+ return this;
+ }
+});
+
+function liveHandler( event ) {
+ var stop, elems = [], selectors = [], args = arguments,
+ related, match, fn, elem, j, i, l, data,
+ live = jQuery.extend({}, jQuery.data( this, "events" ).live);
+
+ // Make sure we avoid non-left-click bubbling in Firefox (#3861)
+ if ( event.button && event.type === "click" ) {
+ return;
+ }
+
+ for ( j in live ) {
+ fn = live[j];
+ if ( fn.live === event.type ||
+ fn.altLive && jQuery.inArray(event.type, fn.altLive) > -1 ) {
+
+ data = fn.data;
+ if ( !(data.beforeFilter && data.beforeFilter[event.type] &&
+ !data.beforeFilter[event.type](event)) ) {
+ selectors.push( fn.selector );
+ }
+ } else {
+ delete live[j];
+ }
+ }
+
+ match = jQuery( event.target ).closest( selectors, event.currentTarget );
+
+ for ( i = 0, l = match.length; i < l; i++ ) {
+ for ( j in live ) {
+ fn = live[j];
+ elem = match[i].elem;
+ related = null;
+
+ if ( match[i].selector === fn.selector ) {
+ // Those two events require additional checking
+ if ( fn.live === "mouseenter" || fn.live === "mouseleave" ) {
+ related = jQuery( event.relatedTarget ).closest( fn.selector )[0];
+ }
+
+ if ( !related || related !== elem ) {
+ elems.push({ elem: elem, fn: fn });
+ }
+ }
+ }
+ }
+
+ for ( i = 0, l = elems.length; i < l; i++ ) {
+ match = elems[i];
+ event.currentTarget = match.elem;
+ event.data = match.fn.data;
+ if ( match.fn.apply( match.elem, args ) === false ) {
+ stop = false;
+ break;
+ }
+ }
+
+ return stop;
+}
+
+function liveConvert( type, selector ) {
+ return "live." + (type ? type + "." : "") + selector.replace(/\./g, "`").replace(/ /g, "&");
+}
+
+jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " +
+ "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
+ "change select submit keydown keypress keyup error").split(" "), function( i, name ) {
+
+ // Handle event binding
+ jQuery.fn[ name ] = function( fn ) {
+ return fn ? this.bind( name, fn ) : this.trigger( name );
};
+
+ if ( jQuery.attrFn ) {
+ jQuery.attrFn[ name ] = true;
+ }
});
-// Helper function used by the dimensions and offset modules
-function num(elem, prop) {
- return elem[0] && parseInt( jQuery.curCSS(elem[0], prop, true), 10 ) || 0;
+// Prevent memory leaks in IE
+// Window isn't included so as not to unbind existing unload events
+// More info:
+// - http://isaacschlueter.com/2006/10/msie-memory-leaks/
+if ( window.attachEvent && !window.addEventListener ) {
+ window.attachEvent("onunload", function() {
+ for ( var id in jQuery.cache ) {
+ if ( jQuery.cache[ id ].handle ) {
+ // Try/Catch is to handle iframes being unloaded, see #4280
+ try {
+ jQuery.event.remove( jQuery.cache[ id ].handle.elem );
+ } catch(e) {}
+ }
+ }
+ });
}
-var expando = "jQuery" + now(), uuid = 0, windowData = {};
-
-jQuery.extend({
- cache: {},
-
- data: function( elem, name, data ) {
- elem = elem == window ?
- windowData :
- elem;
-
- var id = elem[ expando ];
-
- // Compute a unique ID for the element
- if ( !id )
- id = elem[ expando ] = ++uuid;
-
- // Only generate the data cache if we're
- // trying to access or manipulate it
- if ( name && !jQuery.cache[ id ] )
- jQuery.cache[ id ] = {};
-
- // Prevent overriding the named cache with undefined values
- if ( data !== undefined )
- jQuery.cache[ id ][ name ] = data;
-
- // Return the named cache data, or the ID for the element
- return name ?
- jQuery.cache[ id ][ name ] :
- id;
- },
-
- removeData: function( elem, name ) {
- elem = elem == window ?
- windowData :
- elem;
-
- var id = elem[ expando ];
-
- // If we want to remove a specific section of the element's data
- if ( name ) {
- if ( jQuery.cache[ id ] ) {
- // Remove the section of cache data
- delete jQuery.cache[ id ][ name ];
-
- // If we've removed all the data, remove the element's cache
- name = "";
-
- for ( name in jQuery.cache[ id ] )
- break;
-
- if ( !name )
- jQuery.removeData( elem );
- }
-
- // Otherwise, we want to remove all of the element's data
- } else {
- // Clean up the element expando
- try {
- delete elem[ expando ];
- } catch(e){
- // IE has trouble directly removing the expando
- // but it's ok with using removeAttribute
- if ( elem.removeAttribute )
- elem.removeAttribute( expando );
- }
-
- // Completely remove the data cache
- delete jQuery.cache[ id ];
- }
- },
- queue: function( elem, type, data ) {
- if ( elem ){
-
- type = (type || "fx") + "queue";
-
- var q = jQuery.data( elem, type );
-
- if ( !q || jQuery.isArray(data) )
- q = jQuery.data( elem, type, jQuery.makeArray(data) );
- else if( data )
- q.push( data );
-
- }
- return q;
- },
-
- dequeue: function( elem, type ){
- var queue = jQuery.queue( elem, type ),
- fn = queue.shift();
-
- if( !type || type === "fx" )
- fn = queue[0];
-
- if( fn !== undefined )
- fn.call(elem);
- }
-});
-
-jQuery.fn.extend({
- data: function( key, value ){
- var parts = key.split(".");
- parts[1] = parts[1] ? "." + parts[1] : "";
-
- if ( value === undefined ) {
- var data = this.triggerHandler("getData" + parts[1] + "!", [parts[0]]);
-
- if ( data === undefined && this.length )
- data = jQuery.data( this[0], key );
-
- return data === undefined && parts[1] ?
- this.data( parts[0] ) :
- data;
- } else
- return this.trigger("setData" + parts[1] + "!", [parts[0], value]).each(function(){
- jQuery.data( this, key, value );
- });
- },
-
- removeData: function( key ){
- return this.each(function(){
- jQuery.removeData( this, key );
- });
- },
- queue: function(type, data){
- if ( typeof type !== "string" ) {
- data = type;
- type = "fx";
- }
-
- if ( data === undefined )
- return jQuery.queue( this[0], type );
-
- return this.each(function(){
- var queue = jQuery.queue( this, type, data );
-
- if( type == "fx" && queue.length == 1 )
- queue[0].call(this);
- });
- },
- dequeue: function(type){
- return this.each(function(){
- jQuery.dequeue( this, type );
- });
- }
-});/*!
- * Sizzle CSS Selector Engine - v0.9.3
+/*!
+ * Sizzle CSS Selector Engine - v1.0
* Copyright 2009, The Dojo Foundation
* Released under the MIT, BSD, and GPL Licenses.
* More information: http://sizzlejs.com/
*/
(function(){
-var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g,
+var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
done = 0,
- toString = Object.prototype.toString;
+ toString = Object.prototype.toString,
+ hasDuplicate = false,
+ baseHasDuplicate = true;
+
+// Here we check if the JavaScript engine is using some sort of
+// optimization where it does not always call our comparision
+// function. If that is the case, discard the hasDuplicate value.
+// Thus far that includes Google Chrome.
+[0, 0].sort(function(){
+ baseHasDuplicate = false;
+ return 0;
+});
var Sizzle = function(selector, context, results, seed) {
results = results || [];
- context = context || document;
+ var origContext = context = context || document;
- if ( context.nodeType !== 1 && context.nodeType !== 9 )
+ if ( context.nodeType !== 1 && context.nodeType !== 9 ) {
return [];
+ }
if ( !selector || typeof selector !== "string" ) {
return results;
}
- var parts = [], m, set, checkSet, check, mode, extra, prune = true;
+ var parts = [], m, set, checkSet, extra, prune = true, contextXML = isXML(context),
+ soFar = selector;
// Reset the position of the chunker regexp (start from head)
- chunker.lastIndex = 0;
-
- while ( (m = chunker.exec(selector)) !== null ) {
+ while ( (chunker.exec(""), m = chunker.exec(soFar)) !== null ) {
+ soFar = m[3];
+
parts.push( m[1] );
if ( m[2] ) {
- extra = RegExp.rightContext;
+ extra = m[3];
break;
}
}
@@ -1458,38 +2577,51 @@ var Sizzle = function(selector, context, results, seed) {
while ( parts.length ) {
selector = parts.shift();
- if ( Expr.relative[ selector ] )
+ if ( Expr.relative[ selector ] ) {
selector += parts.shift();
-
+ }
+
set = posProcess( selector, set );
}
}
} else {
- var ret = seed ?
- { expr: parts.pop(), set: makeArray(seed) } :
- Sizzle.find( parts.pop(), parts.length === 1 && context.parentNode ? context.parentNode : context, isXML(context) );
- set = Sizzle.filter( ret.expr, ret.set );
-
- if ( parts.length > 0 ) {
- checkSet = makeArray(set);
- } else {
- prune = false;
+ // Take a shortcut and set the context if the root selector is an ID
+ // (but not if it'll be faster if the inner selector is an ID)
+ if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML &&
+ Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) {
+ var ret = Sizzle.find( parts.shift(), context, contextXML );
+ context = ret.expr ? Sizzle.filter( ret.expr, ret.set )[0] : ret.set[0];
}
- while ( parts.length ) {
- var cur = parts.pop(), pop = cur;
+ if ( context ) {
+ var ret = seed ?
+ { expr: parts.pop(), set: makeArray(seed) } :
+ Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML );
+ set = ret.expr ? Sizzle.filter( ret.expr, ret.set ) : ret.set;
- if ( !Expr.relative[ cur ] ) {
- cur = "";
+ if ( parts.length > 0 ) {
+ checkSet = makeArray(set);
} else {
- pop = parts.pop();
+ prune = false;
}
- if ( pop == null ) {
- pop = context;
- }
+ while ( parts.length ) {
+ var cur = parts.pop(), pop = cur;
+
+ if ( !Expr.relative[ cur ] ) {
+ cur = "";
+ } else {
+ pop = parts.pop();
+ }
+
+ if ( pop == null ) {
+ pop = context;
+ }
- Expr.relative[ cur ]( checkSet, pop, isXML(context) );
+ Expr.relative[ cur ]( checkSet, pop, contextXML );
+ }
+ } else {
+ checkSet = parts = [];
}
}
@@ -1498,13 +2630,13 @@ var Sizzle = function(selector, context, results, seed) {
}
if ( !checkSet ) {
- throw "Syntax error, unrecognized expression: " + (cur || selector);
+ Sizzle.error( cur || selector );
}
if ( toString.call(checkSet) === "[object Array]" ) {
if ( !prune ) {
results.push.apply( results, checkSet );
- } else if ( context.nodeType === 1 ) {
+ } else if ( context && context.nodeType === 1 ) {
for ( var i = 0; checkSet[i] != null; i++ ) {
if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && contains(context, checkSet[i])) ) {
results.push( set[i] );
@@ -1522,17 +2654,22 @@ var Sizzle = function(selector, context, results, seed) {
}
if ( extra ) {
- Sizzle( extra, context, results, seed );
+ Sizzle( extra, origContext, results, seed );
+ Sizzle.uniqueSort( results );
+ }
- if ( sortOrder ) {
- hasDuplicate = false;
- results.sort(sortOrder);
+ return results;
+};
- if ( hasDuplicate ) {
- for ( var i = 1; i < results.length; i++ ) {
- if ( results[i] === results[i-1] ) {
- results.splice(i--, 1);
- }
+Sizzle.uniqueSort = function(results){
+ if ( sortOrder ) {
+ hasDuplicate = baseHasDuplicate;
+ results.sort(sortOrder);
+
+ if ( hasDuplicate ) {
+ for ( var i = 1; i < results.length; i++ ) {
+ if ( results[i] === results[i-1] ) {
+ results.splice(i--, 1);
}
}
}
@@ -1555,8 +2692,9 @@ Sizzle.find = function(expr, context, isXML){
for ( var i = 0, l = Expr.order.length; i < l; i++ ) {
var type = Expr.order[i], match;
- if ( (match = Expr.match[ type ].exec( expr )) ) {
- var left = RegExp.leftContext;
+ if ( (match = Expr.leftMatch[ type ].exec( expr )) ) {
+ var left = match[1];
+ match.splice(1,1);
if ( left.substr( left.length - 1 ) !== "\\" ) {
match[1] = (match[1] || "").replace(/\\/g, "");
@@ -1582,11 +2720,17 @@ Sizzle.filter = function(expr, set, inplace, not){
while ( expr && set.length ) {
for ( var type in Expr.filter ) {
- if ( (match = Expr.match[ type ].exec( expr )) != null ) {
- var filter = Expr.filter[ type ], found, item;
+ if ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) {
+ var filter = Expr.filter[ type ], found, item, left = match[1];
anyFound = false;
- if ( curLoop == result ) {
+ match.splice(1,1);
+
+ if ( left.substr( left.length - 1 ) === "\\" ) {
+ continue;
+ }
+
+ if ( curLoop === result ) {
result = [];
}
@@ -1637,9 +2781,9 @@ Sizzle.filter = function(expr, set, inplace, not){
}
// Improper expression
- if ( expr == old ) {
+ if ( expr === old ) {
if ( anyFound == null ) {
- throw "Syntax error, unrecognized expression: " + expr;
+ Sizzle.error( expr );
} else {
break;
}
@@ -1651,18 +2795,23 @@ Sizzle.filter = function(expr, set, inplace, not){
return curLoop;
};
+Sizzle.error = function( msg ) {
+ throw "Syntax error, unrecognized expression: " + msg;
+};
+
var Expr = Sizzle.selectors = {
order: [ "ID", "NAME", "TAG" ],
match: {
- ID: /#((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,
- CLASS: /\.((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,
- NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF_-]|\\.)+)['"]*\]/,
- ATTR: /\[\s*((?:[\w\u00c0-\uFFFF_-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,
- TAG: /^((?:[\w\u00c0-\uFFFF\*_-]|\\.)+)/,
+ ID: /#((?:[\w\u00c0-\uFFFF-]|\\.)+)/,
+ CLASS: /\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/,
+ NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/,
+ ATTR: /\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,
+ TAG: /^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/,
CHILD: /:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,
POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,
- PSEUDO: /:((?:[\w\u00c0-\uFFFF_-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/
+ PSEUDO: /:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/
},
+ leftMatch: {},
attrMap: {
"class": "className",
"for": "htmlFor"
@@ -1673,20 +2822,20 @@ var Expr = Sizzle.selectors = {
}
},
relative: {
- "+": function(checkSet, part, isXML){
+ "+": function(checkSet, part){
var isPartStr = typeof part === "string",
isTag = isPartStr && !/\W/.test(part),
isPartStrNotTag = isPartStr && !isTag;
- if ( isTag && !isXML ) {
- part = part.toUpperCase();
+ if ( isTag ) {
+ part = part.toLowerCase();
}
for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) {
if ( (elem = checkSet[i]) ) {
while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {}
- checkSet[i] = isPartStrNotTag || elem && elem.nodeName === part ?
+ checkSet[i] = isPartStrNotTag || elem && elem.nodeName.toLowerCase() === part ?
elem || false :
elem === part;
}
@@ -1696,17 +2845,17 @@ var Expr = Sizzle.selectors = {
Sizzle.filter( part, checkSet, true );
}
},
- ">": function(checkSet, part, isXML){
+ ">": function(checkSet, part){
var isPartStr = typeof part === "string";
if ( isPartStr && !/\W/.test(part) ) {
- part = isXML ? part : part.toUpperCase();
+ part = part.toLowerCase();
for ( var i = 0, l = checkSet.length; i < l; i++ ) {
var elem = checkSet[i];
if ( elem ) {
var parent = elem.parentNode;
- checkSet[i] = parent.nodeName === part ? parent : false;
+ checkSet[i] = parent.nodeName.toLowerCase() === part ? parent : false;
}
}
} else {
@@ -1727,8 +2876,8 @@ var Expr = Sizzle.selectors = {
"": function(checkSet, part, isXML){
var doneName = done++, checkFn = dirCheck;
- if ( !part.match(/\W/) ) {
- var nodeCheck = part = isXML ? part : part.toUpperCase();
+ if ( typeof part === "string" && !/\W/.test(part) ) {
+ var nodeCheck = part = part.toLowerCase();
checkFn = dirNodeCheck;
}
@@ -1737,8 +2886,8 @@ var Expr = Sizzle.selectors = {
"~": function(checkSet, part, isXML){
var doneName = done++, checkFn = dirCheck;
- if ( typeof part === "string" && !part.match(/\W/) ) {
- var nodeCheck = part = isXML ? part : part.toUpperCase();
+ if ( typeof part === "string" && !/\W/.test(part) ) {
+ var nodeCheck = part = part.toLowerCase();
checkFn = dirNodeCheck;
}
@@ -1752,7 +2901,7 @@ var Expr = Sizzle.selectors = {
return m ? [m] : [];
}
},
- NAME: function(match, context, isXML){
+ NAME: function(match, context){
if ( typeof context.getElementsByName !== "undefined" ) {
var ret = [], results = context.getElementsByName(match[1]);
@@ -1779,9 +2928,10 @@ var Expr = Sizzle.selectors = {
for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) {
if ( elem ) {
- if ( not ^ (elem.className && (" " + elem.className + " ").indexOf(match) >= 0) ) {
- if ( !inplace )
+ if ( not ^ (elem.className && (" " + elem.className + " ").replace(/[\t\n]/g, " ").indexOf(match) >= 0) ) {
+ if ( !inplace ) {
result.push( elem );
+ }
} else if ( inplace ) {
curLoop[i] = false;
}
@@ -1794,14 +2944,13 @@ var Expr = Sizzle.selectors = {
return match[1].replace(/\\/g, "");
},
TAG: function(match, curLoop){
- for ( var i = 0; curLoop[i] === false; i++ ){}
- return curLoop[i] && isXML(curLoop[i]) ? match[1] : match[1].toUpperCase();
+ return match[1].toLowerCase();
},
CHILD: function(match){
- if ( match[1] == "nth" ) {
+ if ( match[1] === "nth" ) {
// parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6'
var test = /(-?)(\d*)n((?:\+|-)?\d*)/.exec(
- match[2] == "even" && "2n" || match[2] == "odd" && "2n+1" ||
+ match[2] === "even" && "2n" || match[2] === "odd" && "2n+1" ||
!/\D/.test( match[2] ) && "0n+" + match[2] || match[2]);
// calculate the numbers (first)n+(last) including if they are negative
@@ -1830,7 +2979,7 @@ var Expr = Sizzle.selectors = {
PSEUDO: function(match, curLoop, inplace, result, not){
if ( match[1] === "not" ) {
// If we're dealing with a complex expression, or a simple one
- if ( match[3].match(chunker).length > 1 || /^\w/.test(match[3]) ) {
+ if ( ( chunker.exec(match[3]) || "" ).length > 1 || /^\w/.test(match[3]) ) {
match[3] = Sizzle(match[3], null, null, curLoop);
} else {
var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not);
@@ -1903,7 +3052,7 @@ var Expr = Sizzle.selectors = {
return "reset" === elem.type;
},
button: function(elem){
- return "button" === elem.type || elem.nodeName.toUpperCase() === "BUTTON";
+ return "button" === elem.type || elem.nodeName.toLowerCase() === "button";
},
input: function(elem){
return /input|select|textarea|button/i.test(elem.nodeName);
@@ -1929,10 +3078,10 @@ var Expr = Sizzle.selectors = {
return i > match[3] - 0;
},
nth: function(elem, i, match){
- return match[3] - 0 == i;
+ return match[3] - 0 === i;
},
eq: function(elem, i, match){
- return match[3] - 0 == i;
+ return match[3] - 0 === i;
}
},
filter: {
@@ -1942,7 +3091,7 @@ var Expr = Sizzle.selectors = {
if ( filter ) {
return filter( elem, i, match, array );
} else if ( name === "contains" ) {
- return (elem.textContent || elem.innerText || "").indexOf(match[3]) >= 0;
+ return (elem.textContent || elem.innerText || getText([ elem ]) || "").indexOf(match[3]) >= 0;
} else if ( name === "not" ) {
var not = match[3];
@@ -1953,6 +3102,8 @@ var Expr = Sizzle.selectors = {
}
return true;
+ } else {
+ Sizzle.error( "Syntax error, unrecognized expression: " + name );
}
},
CHILD: function(elem, match){
@@ -1960,20 +3111,26 @@ var Expr = Sizzle.selectors = {
switch (type) {
case 'only':
case 'first':
- while (node = node.previousSibling) {
- if ( node.nodeType === 1 ) return false;
+ while ( (node = node.previousSibling) ) {
+ if ( node.nodeType === 1 ) {
+ return false;
+ }
+ }
+ if ( type === "first" ) {
+ return true;
}
- if ( type == 'first') return true;
node = elem;
case 'last':
- while (node = node.nextSibling) {
- if ( node.nodeType === 1 ) return false;
+ while ( (node = node.nextSibling) ) {
+ if ( node.nodeType === 1 ) {
+ return false;
+ }
}
return true;
case 'nth':
var first = match[2], last = match[3];
- if ( first == 1 && last == 0 ) {
+ if ( first === 1 && last === 0 ) {
return true;
}
@@ -1991,10 +3148,10 @@ var Expr = Sizzle.selectors = {
}
var diff = elem.nodeIndex - last;
- if ( first == 0 ) {
- return diff == 0;
+ if ( first === 0 ) {
+ return diff === 0;
} else {
- return ( diff % first == 0 && diff / first >= 0 );
+ return ( diff % first === 0 && diff / first >= 0 );
}
}
},
@@ -2002,7 +3159,7 @@ var Expr = Sizzle.selectors = {
return elem.nodeType === 1 && elem.getAttribute("id") === match;
},
TAG: function(elem, match){
- return (match === "*" && elem.nodeType === 1) || elem.nodeName === match;
+ return (match === "*" && elem.nodeType === 1) || elem.nodeName.toLowerCase() === match;
},
CLASS: function(elem, match){
return (" " + (elem.className || elem.getAttribute("class")) + " ")
@@ -2030,7 +3187,7 @@ var Expr = Sizzle.selectors = {
!check ?
value && result !== false :
type === "!=" ?
- value != check :
+ value !== check :
type === "^=" ?
value.indexOf(check) === 0 :
type === "$=" ?
@@ -2052,11 +3209,14 @@ var Expr = Sizzle.selectors = {
var origPOS = Expr.match.POS;
for ( var type in Expr.match ) {
- Expr.match[ type ] = RegExp( Expr.match[ type ].source + /(?![^\[]*\])(?![^\(]*\))/.source );
+ Expr.match[ type ] = new RegExp( Expr.match[ type ].source + /(?![^\[]*\])(?![^\(]*\))/.source );
+ Expr.leftMatch[ type ] = new RegExp( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source.replace(/\\(\d+)/g, function(all, num){
+ return "\\" + (num - 0 + 1);
+ }));
}
var makeArray = function(array, results) {
- array = Array.prototype.slice.call( array );
+ array = Array.prototype.slice.call( array, 0 );
if ( results ) {
results.push.apply( results, array );
@@ -2069,7 +3229,7 @@ var makeArray = function(array, results) {
// Perform a simple check to determine if the browser is capable of
// converting a NodeList to an array using builtin methods.
try {
- Array.prototype.slice.call( document.documentElement.childNodes );
+ Array.prototype.slice.call( document.documentElement.childNodes, 0 );
// Provide a fallback method if it does not work
} catch(e){
@@ -2098,6 +3258,13 @@ var sortOrder;
if ( document.documentElement.compareDocumentPosition ) {
sortOrder = function( a, b ) {
+ if ( !a.compareDocumentPosition || !b.compareDocumentPosition ) {
+ if ( a == b ) {
+ hasDuplicate = true;
+ }
+ return a.compareDocumentPosition ? -1 : 1;
+ }
+
var ret = a.compareDocumentPosition(b) & 4 ? -1 : a === b ? 0 : 1;
if ( ret === 0 ) {
hasDuplicate = true;
@@ -2106,6 +3273,13 @@ if ( document.documentElement.compareDocumentPosition ) {
};
} else if ( "sourceIndex" in document.documentElement ) {
sortOrder = function( a, b ) {
+ if ( !a.sourceIndex || !b.sourceIndex ) {
+ if ( a == b ) {
+ hasDuplicate = true;
+ }
+ return a.sourceIndex ? -1 : 1;
+ }
+
var ret = a.sourceIndex - b.sourceIndex;
if ( ret === 0 ) {
hasDuplicate = true;
@@ -2114,11 +3288,18 @@ if ( document.documentElement.compareDocumentPosition ) {
};
} else if ( document.createRange ) {
sortOrder = function( a, b ) {
+ if ( !a.ownerDocument || !b.ownerDocument ) {
+ if ( a == b ) {
+ hasDuplicate = true;
+ }
+ return a.ownerDocument ? -1 : 1;
+ }
+
var aRange = a.ownerDocument.createRange(), bRange = b.ownerDocument.createRange();
- aRange.selectNode(a);
- aRange.collapse(true);
- bRange.selectNode(b);
- bRange.collapse(true);
+ aRange.setStart(a, 0);
+ aRange.setEnd(a, 0);
+ bRange.setStart(b, 0);
+ bRange.setEnd(b, 0);
var ret = aRange.compareBoundaryPoints(Range.START_TO_END, bRange);
if ( ret === 0 ) {
hasDuplicate = true;
@@ -2127,13 +3308,33 @@ if ( document.documentElement.compareDocumentPosition ) {
};
}
+// Utility function for retreiving the text value of an array of DOM nodes
+function getText( elems ) {
+ var ret = "", elem;
+
+ for ( var i = 0; elems[i]; i++ ) {
+ elem = elems[i];
+
+ // Get the text from text nodes and CDATA nodes
+ if ( elem.nodeType === 3 || elem.nodeType === 4 ) {
+ ret += elem.nodeValue;
+
+ // Traverse everything else, except comment nodes
+ } else if ( elem.nodeType !== 8 ) {
+ ret += getText( elem.childNodes );
+ }
+ }
+
+ return ret;
+}
+
// Check to see if the browser returns elements by name when
// querying by getElementById (and provide a workaround)
(function(){
// We're going to inject a fake input element with a specified name
- var form = document.createElement("form"),
+ var form = document.createElement("div"),
id = "script" + (new Date).getTime();
- form.innerHTML = "<input name='" + id + "'/>";
+ form.innerHTML = "<a name='" + id + "'/>";
// Inject it into the root element, check its status, and remove it quickly
var root = document.documentElement;
@@ -2141,7 +3342,7 @@ if ( document.documentElement.compareDocumentPosition ) {
// The workaround has to do additional checks after a getElementById
// Which slows things down for other browsers (hence the branching)
- if ( !!document.getElementById( id ) ) {
+ if ( document.getElementById( id ) ) {
Expr.find.ID = function(match, context, isXML){
if ( typeof context.getElementById !== "undefined" && !isXML ) {
var m = context.getElementById(match[1]);
@@ -2156,6 +3357,7 @@ if ( document.documentElement.compareDocumentPosition ) {
}
root.removeChild( form );
+ root = form = null; // release memory in IE
})();
(function(){
@@ -2196,69 +3398,75 @@ if ( document.documentElement.compareDocumentPosition ) {
return elem.getAttribute("href", 2);
};
}
+
+ div = null; // release memory in IE
})();
-if ( document.querySelectorAll ) (function(){
- var oldSizzle = Sizzle, div = document.createElement("div");
- div.innerHTML = "<p class='TEST'></p>";
+if ( document.querySelectorAll ) {
+ (function(){
+ var oldSizzle = Sizzle, div = document.createElement("div");
+ div.innerHTML = "<p class='TEST'></p>";
- // Safari can't handle uppercase or unicode characters when
- // in quirks mode.
- if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) {
- return;
- }
+ // Safari can't handle uppercase or unicode characters when
+ // in quirks mode.
+ if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) {
+ return;
+ }
- Sizzle = function(query, context, extra, seed){
- context = context || document;
+ Sizzle = function(query, context, extra, seed){
+ context = context || document;
+
+ // Only use querySelectorAll on non-XML documents
+ // (ID selectors don't work in non-HTML documents)
+ if ( !seed && context.nodeType === 9 && !isXML(context) ) {
+ try {
+ return makeArray( context.querySelectorAll(query), extra );
+ } catch(e){}
+ }
+
+ return oldSizzle(query, context, extra, seed);
+ };
- // Only use querySelectorAll on non-XML documents
- // (ID selectors don't work in non-HTML documents)
- if ( !seed && context.nodeType === 9 && !isXML(context) ) {
- try {
- return makeArray( context.querySelectorAll(query), extra );
- } catch(e){}
+ for ( var prop in oldSizzle ) {
+ Sizzle[ prop ] = oldSizzle[ prop ];
}
-
- return oldSizzle(query, context, extra, seed);
- };
- Sizzle.find = oldSizzle.find;
- Sizzle.filter = oldSizzle.filter;
- Sizzle.selectors = oldSizzle.selectors;
- Sizzle.matches = oldSizzle.matches;
-})();
+ div = null; // release memory in IE
+ })();
+}
-if ( document.getElementsByClassName && document.documentElement.getElementsByClassName ) (function(){
+(function(){
var div = document.createElement("div");
+
div.innerHTML = "<div class='test e'></div><div class='test'></div>";
// Opera can't find a second classname (in 9.6)
- if ( div.getElementsByClassName("e").length === 0 )
+ // Also, make sure that getElementsByClassName actually exists
+ if ( !div.getElementsByClassName || div.getElementsByClassName("e").length === 0 ) {
return;
+ }
// Safari caches class attributes, doesn't catch changes (in 3.2)
div.lastChild.className = "e";
- if ( div.getElementsByClassName("e").length === 1 )
+ if ( div.getElementsByClassName("e").length === 1 ) {
return;
-
+ }
+
Expr.order.splice(1, 0, "CLASS");
Expr.find.CLASS = function(match, context, isXML) {
if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) {
return context.getElementsByClassName(match[1]);
}
};
+
+ div = null; // release memory in IE
})();
function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
- var sibDir = dir == "previousSibling" && !isXML;
for ( var i = 0, l = checkSet.length; i < l; i++ ) {
var elem = checkSet[i];
if ( elem ) {
- if ( sibDir && elem.nodeType === 1 ){
- elem.sizcache = doneName;
- elem.sizset = i;
- }
elem = elem[dir];
var match = false;
@@ -2273,7 +3481,7 @@ function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
elem.sizset = i;
}
- if ( elem.nodeName === cur ) {
+ if ( elem.nodeName.toLowerCase() === cur ) {
match = elem;
break;
}
@@ -2287,14 +3495,9 @@ function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
}
function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
- var sibDir = dir == "previousSibling" && !isXML;
for ( var i = 0, l = checkSet.length; i < l; i++ ) {
var elem = checkSet[i];
if ( elem ) {
- if ( sibDir && elem.nodeType === 1 ) {
- elem.sizcache = doneName;
- elem.sizset = i;
- }
elem = elem[dir];
var match = false;
@@ -2329,15 +3532,17 @@ function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
}
}
-var contains = document.compareDocumentPosition ? function(a, b){
+var contains = document.compareDocumentPosition ? function(a, b){
return a.compareDocumentPosition(b) & 16;
} : function(a, b){
return a !== b && (a.contains ? a.contains(b) : true);
};
var isXML = function(elem){
- return elem.nodeType === 9 && elem.documentElement.nodeName !== "HTML" ||
- !!elem.ownerDocument && isXML( elem.ownerDocument );
+ // documentElement is verified for cases where it doesn't yet exist
+ // (such as loading iframes in IE - #4833)
+ var documentElement = (elem ? elem.ownerDocument || elem : 0).documentElement;
+ return documentElement ? documentElement.nodeName !== "HTML" : false;
};
var posProcess = function(selector, context){
@@ -2362,873 +3567,1068 @@ var posProcess = function(selector, context){
// EXPOSE
jQuery.find = Sizzle;
-jQuery.filter = Sizzle.filter;
jQuery.expr = Sizzle.selectors;
jQuery.expr[":"] = jQuery.expr.filters;
+jQuery.unique = Sizzle.uniqueSort;
+jQuery.getText = getText;
+jQuery.isXMLDoc = isXML;
+jQuery.contains = contains;
-Sizzle.selectors.filters.hidden = function(elem){
- return elem.offsetWidth === 0 || elem.offsetHeight === 0;
-};
+return;
-Sizzle.selectors.filters.visible = function(elem){
- return elem.offsetWidth > 0 || elem.offsetHeight > 0;
-};
+window.Sizzle = Sizzle;
-Sizzle.selectors.filters.animated = function(elem){
- return jQuery.grep(jQuery.timers, function(fn){
- return elem === fn.elem;
- }).length;
-};
+})();
+var runtil = /Until$/,
+ rparentsprev = /^(?:parents|prevUntil|prevAll)/,
+ // Note: This RegExp should be improved, or likely pulled from Sizzle
+ rmultiselector = /,/,
+ slice = Array.prototype.slice;
+
+// Implement the identical functionality for filter and not
+var winnow = function( elements, qualifier, keep ) {
+ if ( jQuery.isFunction( qualifier ) ) {
+ return jQuery.grep(elements, function( elem, i ) {
+ return !!qualifier.call( elem, i, elem ) === keep;
+ });
-jQuery.multiFilter = function( expr, elems, not ) {
- if ( not ) {
- expr = ":not(" + expr + ")";
- }
+ } else if ( qualifier.nodeType ) {
+ return jQuery.grep(elements, function( elem, i ) {
+ return (elem === qualifier) === keep;
+ });
- return Sizzle.matches(expr, elems);
-};
+ } else if ( typeof qualifier === "string" ) {
+ var filtered = jQuery.grep(elements, function( elem ) {
+ return elem.nodeType === 1;
+ });
-jQuery.dir = function( elem, dir ){
- var matched = [], cur = elem[dir];
- while ( cur && cur != document ) {
- if ( cur.nodeType == 1 )
- matched.push( cur );
- cur = cur[dir];
+ if ( isSimple.test( qualifier ) ) {
+ return jQuery.filter(qualifier, filtered, !keep);
+ } else {
+ qualifier = jQuery.filter( qualifier, filtered );
+ }
}
- return matched;
+
+ return jQuery.grep(elements, function( elem, i ) {
+ return (jQuery.inArray( elem, qualifier ) >= 0) === keep;
+ });
};
-jQuery.nth = function(cur, result, dir, elem){
- result = result || 1;
- var num = 0;
+jQuery.fn.extend({
+ find: function( selector ) {
+ var ret = this.pushStack( "", "find", selector ), length = 0;
+
+ for ( var i = 0, l = this.length; i < l; i++ ) {
+ length = ret.length;
+ jQuery.find( selector, this[i], ret );
+
+ if ( i > 0 ) {
+ // Make sure that the results are unique
+ for ( var n = length; n < ret.length; n++ ) {
+ for ( var r = 0; r < length; r++ ) {
+ if ( ret[r] === ret[n] ) {
+ ret.splice(n--, 1);
+ break;
+ }
+ }
+ }
+ }
+ }
- for ( ; cur; cur = cur[dir] )
- if ( cur.nodeType == 1 && ++num == result )
- break;
+ return ret;
+ },
- return cur;
-};
+ has: function( target ) {
+ var targets = jQuery( target );
+ return this.filter(function() {
+ for ( var i = 0, l = targets.length; i < l; i++ ) {
+ if ( jQuery.contains( this, targets[i] ) ) {
+ return true;
+ }
+ }
+ });
+ },
-jQuery.sibling = function(n, elem){
- var r = [];
+ not: function( selector ) {
+ return this.pushStack( winnow(this, selector, false), "not", selector);
+ },
- for ( ; n; n = n.nextSibling ) {
- if ( n.nodeType == 1 && n != elem )
- r.push( n );
- }
+ filter: function( selector ) {
+ return this.pushStack( winnow(this, selector, true), "filter", selector );
+ },
+
+ is: function( selector ) {
+ return !!selector && jQuery.filter( selector, this ).length > 0;
+ },
- return r;
-};
+ closest: function( selectors, context ) {
+ if ( jQuery.isArray( selectors ) ) {
+ var ret = [], cur = this[0], match, matches = {}, selector;
-return;
+ if ( cur && selectors.length ) {
+ for ( var i = 0, l = selectors.length; i < l; i++ ) {
+ selector = selectors[i];
-window.Sizzle = Sizzle;
+ if ( !matches[selector] ) {
+ matches[selector] = jQuery.expr.match.POS.test( selector ) ?
+ jQuery( selector, context || this.context ) :
+ selector;
+ }
+ }
-})();
-/*
- * A number of helper functions used for managing events.
- * Many of the ideas behind this code originated from
- * Dean Edwards' addEvent library.
- */
-jQuery.event = {
+ while ( cur && cur.ownerDocument && cur !== context ) {
+ for ( selector in matches ) {
+ match = matches[selector];
- // Bind an event to an element
- // Original by Dean Edwards
- add: function(elem, types, handler, data) {
- if ( elem.nodeType == 3 || elem.nodeType == 8 )
- return;
+ if ( match.jquery ? match.index(cur) > -1 : jQuery(cur).is(match) ) {
+ ret.push({ selector: selector, elem: cur });
+ delete matches[selector];
+ }
+ }
+ cur = cur.parentNode;
+ }
+ }
- // For whatever reason, IE has trouble passing the window object
- // around, causing it to be cloned in the process
- if ( elem.setInterval && elem != window )
- elem = window;
+ return ret;
+ }
- // Make sure that the function being executed has a unique ID
- if ( !handler.guid )
- handler.guid = this.guid++;
+ var pos = jQuery.expr.match.POS.test( selectors ) ?
+ jQuery( selectors, context || this.context ) : null;
- // if data is passed, bind to handler
- if ( data !== undefined ) {
- // Create temporary function pointer to original handler
- var fn = handler;
+ return this.map(function( i, cur ) {
+ while ( cur && cur.ownerDocument && cur !== context ) {
+ if ( pos ? pos.index(cur) > -1 : jQuery(cur).is(selectors) ) {
+ return cur;
+ }
+ cur = cur.parentNode;
+ }
+ return null;
+ });
+ },
+
+ // Determine the position of an element within
+ // the matched set of elements
+ index: function( elem ) {
+ if ( !elem || typeof elem === "string" ) {
+ return jQuery.inArray( this[0],
+ // If it receives a string, the selector is used
+ // If it receives nothing, the siblings are used
+ elem ? jQuery( elem ) : this.parent().children() );
+ }
+ // Locate the position of the desired element
+ return jQuery.inArray(
+ // If it receives a jQuery object, the first element is used
+ elem.jquery ? elem[0] : elem, this );
+ },
- // Create unique handler function, wrapped around original handler
- handler = this.proxy( fn );
+ add: function( selector, context ) {
+ var set = typeof selector === "string" ?
+ jQuery( selector, context || this.context ) :
+ jQuery.makeArray( selector ),
+ all = jQuery.merge( this.get(), set );
- // Store data in unique handler
- handler.data = data;
+ return this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ?
+ all :
+ jQuery.unique( all ) );
+ },
+
+ andSelf: function() {
+ return this.add( this.prevObject );
+ }
+});
+
+// A painfully simple check to see if an element is disconnected
+// from a document (should be improved, where feasible).
+function isDisconnected( node ) {
+ return !node || !node.parentNode || node.parentNode.nodeType === 11;
+}
+
+jQuery.each({
+ parent: function( elem ) {
+ var parent = elem.parentNode;
+ return parent && parent.nodeType !== 11 ? parent : null;
+ },
+ parents: function( elem ) {
+ return jQuery.dir( elem, "parentNode" );
+ },
+ parentsUntil: function( elem, i, until ) {
+ return jQuery.dir( elem, "parentNode", until );
+ },
+ next: function( elem ) {
+ return jQuery.nth( elem, 2, "nextSibling" );
+ },
+ prev: function( elem ) {
+ return jQuery.nth( elem, 2, "previousSibling" );
+ },
+ nextAll: function( elem ) {
+ return jQuery.dir( elem, "nextSibling" );
+ },
+ prevAll: function( elem ) {
+ return jQuery.dir( elem, "previousSibling" );
+ },
+ nextUntil: function( elem, i, until ) {
+ return jQuery.dir( elem, "nextSibling", until );
+ },
+ prevUntil: function( elem, i, until ) {
+ return jQuery.dir( elem, "previousSibling", until );
+ },
+ siblings: function( elem ) {
+ return jQuery.sibling( elem.parentNode.firstChild, elem );
+ },
+ children: function( elem ) {
+ return jQuery.sibling( elem.firstChild );
+ },
+ contents: function( elem ) {
+ return jQuery.nodeName( elem, "iframe" ) ?
+ elem.contentDocument || elem.contentWindow.document :
+ jQuery.makeArray( elem.childNodes );
+ }
+}, function( name, fn ) {
+ jQuery.fn[ name ] = function( until, selector ) {
+ var ret = jQuery.map( this, fn, until );
+
+ if ( !runtil.test( name ) ) {
+ selector = until;
}
- // Init the element's event structure
- var events = jQuery.data(elem, "events") || jQuery.data(elem, "events", {}),
- handle = jQuery.data(elem, "handle") || jQuery.data(elem, "handle", function(){
- // Handle the second event of a trigger and when
- // an event is called after a page has unloaded
- return typeof jQuery !== "undefined" && !jQuery.event.triggered ?
- jQuery.event.handle.apply(arguments.callee.elem, arguments) :
- undefined;
- });
- // Add elem as a property of the handle function
- // This is to prevent a memory leak with non-native
- // event in IE.
- handle.elem = elem;
+ if ( selector && typeof selector === "string" ) {
+ ret = jQuery.filter( selector, ret );
+ }
- // Handle multiple events separated by a space
- // jQuery(...).bind("mouseover mouseout", fn);
- jQuery.each(types.split(/\s+/), function(index, type) {
- // Namespaced event handlers
- var namespaces = type.split(".");
- type = namespaces.shift();
- handler.type = namespaces.slice().sort().join(".");
+ ret = this.length > 1 ? jQuery.unique( ret ) : ret;
- // Get the current list of functions bound to this event
- var handlers = events[type];
-
- if ( jQuery.event.specialAll[type] )
- jQuery.event.specialAll[type].setup.call(elem, data, namespaces);
+ if ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) {
+ ret = ret.reverse();
+ }
- // Init the event handler queue
- if (!handlers) {
- handlers = events[type] = {};
+ return this.pushStack( ret, name, slice.call(arguments).join(",") );
+ };
+});
- // Check for a special event handler
- // Only use addEventListener/attachEvent if the special
- // events handler returns false
- if ( !jQuery.event.special[type] || jQuery.event.special[type].setup.call(elem, data, namespaces) === false ) {
- // Bind the global event handler to the element
- if (elem.addEventListener)
- elem.addEventListener(type, handle, false);
- else if (elem.attachEvent)
- elem.attachEvent("on" + type, handle);
- }
+jQuery.extend({
+ filter: function( expr, elems, not ) {
+ if ( not ) {
+ expr = ":not(" + expr + ")";
+ }
+
+ return jQuery.find.matches(expr, elems);
+ },
+
+ dir: function( elem, dir, until ) {
+ var matched = [], cur = elem[dir];
+ while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) {
+ if ( cur.nodeType === 1 ) {
+ matched.push( cur );
}
+ cur = cur[dir];
+ }
+ return matched;
+ },
- // Add the function to the element's handler list
- handlers[handler.guid] = handler;
+ nth: function( cur, result, dir, elem ) {
+ result = result || 1;
+ var num = 0;
- // Keep track of which events have been used, for global triggering
- jQuery.event.global[type] = true;
- });
+ for ( ; cur; cur = cur[dir] ) {
+ if ( cur.nodeType === 1 && ++num === result ) {
+ break;
+ }
+ }
- // Nullify elem to prevent memory leaks in IE
- elem = null;
+ return cur;
},
- guid: 1,
- global: {},
+ sibling: function( n, elem ) {
+ var r = [];
- // Detach an event or set of events from an element
- remove: function(elem, types, handler) {
- // don't do events on text and comment nodes
- if ( elem.nodeType == 3 || elem.nodeType == 8 )
- return;
+ for ( ; n; n = n.nextSibling ) {
+ if ( n.nodeType === 1 && n !== elem ) {
+ r.push( n );
+ }
+ }
- var events = jQuery.data(elem, "events"), ret, index;
+ return r;
+ }
+});
+var rinlinejQuery = / jQuery\d+="(?:\d+|null)"/g,
+ rleadingWhitespace = /^\s+/,
+ rxhtmlTag = /(<([\w:]+)[^>]*?)\/>/g,
+ rselfClosing = /^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i,
+ rtagName = /<([\w:]+)/,
+ rtbody = /<tbody/i,
+ rhtml = /<|&\w+;/,
+ rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i, // checked="checked" or checked (html5)
+ fcloseTag = function( all, front, tag ) {
+ return rselfClosing.test( tag ) ?
+ all :
+ front + "></" + tag + ">";
+ },
+ wrapMap = {
+ option: [ 1, "<select multiple='multiple'>", "</select>" ],
+ legend: [ 1, "<fieldset>", "</fieldset>" ],
+ thead: [ 1, "<table>", "</table>" ],
+ tr: [ 2, "<table><tbody>", "</tbody></table>" ],
+ td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ],
+ col: [ 2, "<table><tbody></tbody><colgroup>", "</colgroup></table>" ],
+ area: [ 1, "<map>", "</map>" ],
+ _default: [ 0, "", "" ]
+ };
- if ( events ) {
- // Unbind all events for the element
- if ( types === undefined || (typeof types === "string" && types.charAt(0) == ".") )
- for ( var type in events )
- this.remove( elem, type + (types || "") );
- else {
- // types is actually an event object here
- if ( types.type ) {
- handler = types.handler;
- types = types.type;
- }
+wrapMap.optgroup = wrapMap.option;
+wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
+wrapMap.th = wrapMap.td;
- // Handle multiple events seperated by a space
- // jQuery(...).unbind("mouseover mouseout", fn);
- jQuery.each(types.split(/\s+/), function(index, type){
- // Namespaced event handlers
- var namespaces = type.split(".");
- type = namespaces.shift();
- var namespace = RegExp("(^|\\.)" + namespaces.slice().sort().join(".*\\.") + "(\\.|$)");
+// IE can't serialize <link> and <script> tags normally
+if ( !jQuery.support.htmlSerialize ) {
+ wrapMap._default = [ 1, "div<div>", "</div>" ];
+}
- if ( events[type] ) {
- // remove the given handler for the given type
- if ( handler )
- delete events[type][handler.guid];
+jQuery.fn.extend({
+ text: function( text ) {
+ if ( jQuery.isFunction(text) ) {
+ return this.each(function(i) {
+ var self = jQuery(this);
+ self.text( text.call(this, i, self.text()) );
+ });
+ }
- // remove all handlers for the given type
- else
- for ( var handle in events[type] )
- // Handle the removal of namespaced events
- if ( namespace.test(events[type][handle].type) )
- delete events[type][handle];
-
- if ( jQuery.event.specialAll[type] )
- jQuery.event.specialAll[type].teardown.call(elem, namespaces);
+ if ( typeof text !== "object" && text !== undefined ) {
+ return this.empty().append( (this[0] && this[0].ownerDocument || document).createTextNode( text ) );
+ }
- // remove generic event handler if no more handlers exist
- for ( ret in events[type] ) break;
- if ( !ret ) {
- if ( !jQuery.event.special[type] || jQuery.event.special[type].teardown.call(elem, namespaces) === false ) {
- if (elem.removeEventListener)
- elem.removeEventListener(type, jQuery.data(elem, "handle"), false);
- else if (elem.detachEvent)
- elem.detachEvent("on" + type, jQuery.data(elem, "handle"));
- }
- ret = null;
- delete events[type];
- }
- }
- });
- }
+ return jQuery.getText( this );
+ },
- // Remove the expando if it's no longer used
- for ( ret in events ) break;
- if ( !ret ) {
- var handle = jQuery.data( elem, "handle" );
- if ( handle ) handle.elem = null;
- jQuery.removeData( elem, "events" );
- jQuery.removeData( elem, "handle" );
+ wrapAll: function( html ) {
+ if ( jQuery.isFunction( html ) ) {
+ return this.each(function(i) {
+ jQuery(this).wrapAll( html.call(this, i) );
+ });
+ }
+
+ if ( this[0] ) {
+ // The elements to wrap the target around
+ var wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true);
+
+ if ( this[0].parentNode ) {
+ wrap.insertBefore( this[0] );
}
+
+ wrap.map(function() {
+ var elem = this;
+
+ while ( elem.firstChild && elem.firstChild.nodeType === 1 ) {
+ elem = elem.firstChild;
+ }
+
+ return elem;
+ }).append(this);
}
+
+ return this;
},
- // bubbling is internal
- trigger: function( event, data, elem, bubbling ) {
- // Event object or event type
- var type = event.type || event;
+ wrapInner: function( html ) {
+ if ( jQuery.isFunction( html ) ) {
+ return this.each(function(i) {
+ jQuery(this).wrapInner( html.call(this, i) );
+ });
+ }
- if( !bubbling ){
- event = typeof event === "object" ?
- // jQuery.Event object
- event[expando] ? event :
- // Object literal
- jQuery.extend( jQuery.Event(type), event ) :
- // Just the event type (string)
- jQuery.Event(type);
+ return this.each(function() {
+ var self = jQuery( this ), contents = self.contents();
- if ( type.indexOf("!") >= 0 ) {
- event.type = type = type.slice(0, -1);
- event.exclusive = true;
- }
+ if ( contents.length ) {
+ contents.wrapAll( html );
- // Handle a global trigger
- if ( !elem ) {
- // Don't bubble custom events when global (to avoid too much overhead)
- event.stopPropagation();
- // Only trigger if we've ever bound an event for it
- if ( this.global[type] )
- jQuery.each( jQuery.cache, function(){
- if ( this.events && this.events[type] )
- jQuery.event.trigger( event, data, this.handle.elem );
- });
+ } else {
+ self.append( html );
}
+ });
+ },
- // Handle triggering a single element
-
- // don't do events on text and comment nodes
- if ( !elem || elem.nodeType == 3 || elem.nodeType == 8 )
- return undefined;
-
- // Clean up in case it is reused
- event.result = undefined;
- event.target = elem;
-
- // Clone the incoming data, if any
- data = jQuery.makeArray(data);
- data.unshift( event );
- }
+ wrap: function( html ) {
+ return this.each(function() {
+ jQuery( this ).wrapAll( html );
+ });
+ },
- event.currentTarget = elem;
+ unwrap: function() {
+ return this.parent().each(function() {
+ if ( !jQuery.nodeName( this, "body" ) ) {
+ jQuery( this ).replaceWith( this.childNodes );
+ }
+ }).end();
+ },
- // Trigger the event, it is assumed that "handle" is a function
- var handle = jQuery.data(elem, "handle");
- if ( handle )
- handle.apply( elem, data );
+ append: function() {
+ return this.domManip(arguments, true, function( elem ) {
+ if ( this.nodeType === 1 ) {
+ this.appendChild( elem );
+ }
+ });
+ },
- // Handle triggering native .onfoo handlers (and on links since we don't call .click() for links)
- if ( (!elem[type] || (jQuery.nodeName(elem, 'a') && type == "click")) && elem["on"+type] && elem["on"+type].apply( elem, data ) === false )
- event.result = false;
+ prepend: function() {
+ return this.domManip(arguments, true, function( elem ) {
+ if ( this.nodeType === 1 ) {
+ this.insertBefore( elem, this.firstChild );
+ }
+ });
+ },
- // Trigger the native events (except for clicks on links)
- if ( !bubbling && elem[type] && !event.isDefaultPrevented() && !(jQuery.nodeName(elem, 'a') && type == "click") ) {
- this.triggered = true;
- try {
- elem[ type ]();
- // prevent IE from throwing an error for some hidden elements
- } catch (e) {}
+ before: function() {
+ if ( this[0] && this[0].parentNode ) {
+ return this.domManip(arguments, false, function( elem ) {
+ this.parentNode.insertBefore( elem, this );
+ });
+ } else if ( arguments.length ) {
+ var set = jQuery(arguments[0]);
+ set.push.apply( set, this.toArray() );
+ return this.pushStack( set, "before", arguments );
}
+ },
- this.triggered = false;
-
- if ( !event.isPropagationStopped() ) {
- var parent = elem.parentNode || elem.ownerDocument;
- if ( parent )
- jQuery.event.trigger(event, data, parent, true);
+ after: function() {
+ if ( this[0] && this[0].parentNode ) {
+ return this.domManip(arguments, false, function( elem ) {
+ this.parentNode.insertBefore( elem, this.nextSibling );
+ });
+ } else if ( arguments.length ) {
+ var set = this.pushStack( this, "after", arguments );
+ set.push.apply( set, jQuery(arguments[0]).toArray() );
+ return set;
}
},
- handle: function(event) {
- // returned undefined or false
- var all, handlers;
+ clone: function( events ) {
+ // Do the clone
+ var ret = this.map(function() {
+ if ( !jQuery.support.noCloneEvent && !jQuery.isXMLDoc(this) ) {
+ // IE copies events bound via attachEvent when
+ // using cloneNode. Calling detachEvent on the
+ // clone will also remove the events from the orignal
+ // In order to get around this, we use innerHTML.
+ // Unfortunately, this means some modifications to
+ // attributes in IE that are actually only stored
+ // as properties will not be copied (such as the
+ // the name attribute on an input).
+ var html = this.outerHTML, ownerDocument = this.ownerDocument;
+ if ( !html ) {
+ var div = ownerDocument.createElement("div");
+ div.appendChild( this.cloneNode(true) );
+ html = div.innerHTML;
+ }
- event = arguments[0] = jQuery.event.fix( event || window.event );
- event.currentTarget = this;
-
- // Namespaced event handlers
- var namespaces = event.type.split(".");
- event.type = namespaces.shift();
+ return jQuery.clean([html.replace(rinlinejQuery, "")
+ .replace(rleadingWhitespace, "")], ownerDocument)[0];
+ } else {
+ return this.cloneNode(true);
+ }
+ });
- // Cache this now, all = true means, any handler
- all = !namespaces.length && !event.exclusive;
-
- var namespace = RegExp("(^|\\.)" + namespaces.slice().sort().join(".*\\.") + "(\\.|$)");
+ // Copy the events from the original to the clone
+ if ( events === true ) {
+ cloneCopyEvent( this, ret );
+ cloneCopyEvent( this.find("*"), ret.find("*") );
+ }
- handlers = ( jQuery.data(this, "events") || {} )[event.type];
+ // Return the cloned set
+ return ret;
+ },
- for ( var j in handlers ) {
- var handler = handlers[j];
+ html: function( value ) {
+ if ( value === undefined ) {
+ return this[0] && this[0].nodeType === 1 ?
+ this[0].innerHTML.replace(rinlinejQuery, "") :
+ null;
- // Filter the functions by class
- if ( all || namespace.test(handler.type) ) {
- // Pass in a reference to the handler function itself
- // So that we can later remove it
- event.handler = handler;
- event.data = handler.data;
+ // See if we can take a shortcut and just use innerHTML
+ } else if ( typeof value === "string" && !/<script/i.test( value ) &&
+ (jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value )) &&
+ !wrapMap[ (rtagName.exec( value ) || ["", ""])[1].toLowerCase() ] ) {
- var ret = handler.apply(this, arguments);
+ value = value.replace(rxhtmlTag, fcloseTag);
- if( ret !== undefined ){
- event.result = ret;
- if ( ret === false ) {
- event.preventDefault();
- event.stopPropagation();
+ try {
+ for ( var i = 0, l = this.length; i < l; i++ ) {
+ // Remove element nodes and prevent memory leaks
+ if ( this[i].nodeType === 1 ) {
+ jQuery.cleanData( this[i].getElementsByTagName("*") );
+ this[i].innerHTML = value;
}
}
- if( event.isImmediatePropagationStopped() )
- break;
-
+ // If using innerHTML throws an exception, use the fallback method
+ } catch(e) {
+ this.empty().append( value );
}
+
+ } else if ( jQuery.isFunction( value ) ) {
+ this.each(function(i){
+ var self = jQuery(this), old = self.html();
+ self.empty().append(function(){
+ return value.call( this, i, old );
+ });
+ });
+
+ } else {
+ this.empty().append( value );
}
+
+ return this;
},
- props: "altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),
+ replaceWith: function( value ) {
+ if ( this[0] && this[0].parentNode ) {
+ // Make sure that the elements are removed from the DOM before they are inserted
+ // this can help fix replacing a parent with child elements
+ if ( !jQuery.isFunction( value ) ) {
+ value = jQuery( value ).detach();
- fix: function(event) {
- if ( event[expando] )
- return event;
+ } else {
+ return this.each(function(i) {
+ var self = jQuery(this), old = self.html();
+ self.replaceWith( value.call( this, i, old ) );
+ });
+ }
- // store a copy of the original event object
- // and "clone" to set read-only properties
- var originalEvent = event;
- event = jQuery.Event( originalEvent );
+ return this.each(function() {
+ var next = this.nextSibling, parent = this.parentNode;
- for ( var i = this.props.length, prop; i; ){
- prop = this.props[ --i ];
- event[ prop ] = originalEvent[ prop ];
+ jQuery(this).remove();
+
+ if ( next ) {
+ jQuery(next).before( value );
+ } else {
+ jQuery(parent).append( value );
+ }
+ });
+ } else {
+ return this.pushStack( jQuery(jQuery.isFunction(value) ? value() : value), "replaceWith", value );
}
+ },
- // Fix target property, if necessary
- if ( !event.target )
- event.target = event.srcElement || document; // Fixes #1925 where srcElement might not be defined either
+ detach: function( selector ) {
+ return this.remove( selector, true );
+ },
- // check if target is a textnode (safari)
- if ( event.target.nodeType == 3 )
- event.target = event.target.parentNode;
+ domManip: function( args, table, callback ) {
+ var results, first, value = args[0], scripts = [];
- // Add relatedTarget, if necessary
- if ( !event.relatedTarget && event.fromElement )
- event.relatedTarget = event.fromElement == event.target ? event.toElement : event.fromElement;
+ // We can't cloneNode fragments that contain checked, in WebKit
+ if ( !jQuery.support.checkClone && arguments.length === 3 && typeof value === "string" && rchecked.test( value ) ) {
+ return this.each(function() {
+ jQuery(this).domManip( args, table, callback, true );
+ });
+ }
- // Calculate pageX/Y if missing and clientX/Y available
- if ( event.pageX == null && event.clientX != null ) {
- var doc = document.documentElement, body = document.body;
- event.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc.clientLeft || 0);
- event.pageY = event.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc.clientTop || 0);
+ if ( jQuery.isFunction(value) ) {
+ return this.each(function(i) {
+ var self = jQuery(this);
+ args[0] = value.call(this, i, table ? self.html() : undefined);
+ self.domManip( args, table, callback );
+ });
}
- // Add which for key events
- if ( !event.which && ((event.charCode || event.charCode === 0) ? event.charCode : event.keyCode) )
- event.which = event.charCode || event.keyCode;
+ if ( this[0] ) {
+ // If we're in a fragment, just use that instead of building a new one
+ if ( args[0] && args[0].parentNode && args[0].parentNode.nodeType === 11 ) {
+ results = { fragment: args[0].parentNode };
+ } else {
+ results = buildFragment( args, this, scripts );
+ }
- // Add metaKey to non-Mac browsers (use ctrl for PC's and Meta for Macs)
- if ( !event.metaKey && event.ctrlKey )
- event.metaKey = event.ctrlKey;
+ first = results.fragment.firstChild;
- // Add which for click: 1 == left; 2 == middle; 3 == right
- // Note: button is not normalized, so don't use it
- if ( !event.which && event.button )
- event.which = (event.button & 1 ? 1 : ( event.button & 2 ? 3 : ( event.button & 4 ? 2 : 0 ) ));
+ if ( first ) {
+ table = table && jQuery.nodeName( first, "tr" );
- return event;
- },
+ for ( var i = 0, l = this.length; i < l; i++ ) {
+ callback.call(
+ table ?
+ root(this[i], first) :
+ this[i],
+ results.cacheable || this.length > 1 || i > 0 ?
+ results.fragment.cloneNode(true) :
+ results.fragment
+ );
+ }
+ }
- proxy: function( fn, proxy ){
- proxy = proxy || function(){ return fn.apply(this, arguments); };
- // Set the guid of unique handler to the same of original handler, so it can be removed
- proxy.guid = fn.guid = fn.guid || proxy.guid || this.guid++;
- // So proxy can be declared as an argument
- return proxy;
- },
+ if ( scripts ) {
+ jQuery.each( scripts, evalScript );
+ }
+ }
- special: {
- ready: {
- // Make sure the ready event is setup
- setup: bindReady,
- teardown: function() {}
+ return this;
+
+ function root( elem, cur ) {
+ return jQuery.nodeName(elem, "table") ?
+ (elem.getElementsByTagName("tbody")[0] ||
+ elem.appendChild(elem.ownerDocument.createElement("tbody"))) :
+ elem;
}
- },
-
- specialAll: {
- live: {
- setup: function( selector, namespaces ){
- jQuery.event.add( this, namespaces[0], liveHandler );
- },
- teardown: function( namespaces ){
- if ( namespaces.length ) {
- var remove = 0, name = RegExp("(^|\\.)" + namespaces[0] + "(\\.|$)");
-
- jQuery.each( (jQuery.data(this, "events").live || {}), function(){
- if ( name.test(this.type) )
- remove++;
- });
-
- if ( remove < 1 )
- jQuery.event.remove( this, namespaces[0], liveHandler );
+ }
+});
+
+function cloneCopyEvent(orig, ret) {
+ var i = 0;
+
+ ret.each(function() {
+ if ( this.nodeName !== (orig[i] && orig[i].nodeName) ) {
+ return;
+ }
+
+ var oldData = jQuery.data( orig[i++] ), curData = jQuery.data( this, oldData ), events = oldData && oldData.events;
+
+ if ( events ) {
+ delete curData.handle;
+ curData.events = {};
+
+ for ( var type in events ) {
+ for ( var handler in events[ type ] ) {
+ jQuery.event.add( this, type, events[ type ][ handler ], events[ type ][ handler ].data );
}
}
}
+ });
+}
+
+function buildFragment( args, nodes, scripts ) {
+ var fragment, cacheable, cacheresults, doc;
+
+ // webkit does not clone 'checked' attribute of radio inputs on cloneNode, so don't cache if string has a checked
+ if ( args.length === 1 && typeof args[0] === "string" && args[0].length < 512 && args[0].indexOf("<option") < 0 && (jQuery.support.checkClone || !rchecked.test( args[0] )) ) {
+ cacheable = true;
+ cacheresults = jQuery.fragments[ args[0] ];
+ if ( cacheresults ) {
+ if ( cacheresults !== 1 ) {
+ fragment = cacheresults;
+ }
+ }
}
-};
-jQuery.Event = function( src ){
- // Allow instantiation without the 'new' keyword
- if( !this.preventDefault )
- return new jQuery.Event(src);
-
- // Event object
- if( src && src.type ){
- this.originalEvent = src;
- this.type = src.type;
- // Event type
- }else
- this.type = src;
+ if ( !fragment ) {
+ doc = (nodes && nodes[0] ? nodes[0].ownerDocument || nodes[0] : document);
+ fragment = doc.createDocumentFragment();
+ jQuery.clean( args, doc, fragment, scripts );
+ }
- // timeStamp is buggy for some events on Firefox(#3843)
- // So we won't rely on the native value
- this.timeStamp = now();
-
- // Mark it as fixed
- this[expando] = true;
-};
+ if ( cacheable ) {
+ jQuery.fragments[ args[0] ] = cacheresults ? fragment : 1;
+ }
-function returnFalse(){
- return false;
-}
-function returnTrue(){
- return true;
+ return { fragment: fragment, cacheable: cacheable };
}
-// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
-// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
-jQuery.Event.prototype = {
- preventDefault: function() {
- this.isDefaultPrevented = returnTrue;
+jQuery.fragments = {};
- var e = this.originalEvent;
- if( !e )
- return;
- // if preventDefault exists run it on the original event
- if (e.preventDefault)
- e.preventDefault();
- // otherwise set the returnValue property of the original event to false (IE)
- e.returnValue = false;
- },
- stopPropagation: function() {
- this.isPropagationStopped = returnTrue;
+jQuery.each({
+ appendTo: "append",
+ prependTo: "prepend",
+ insertBefore: "before",
+ insertAfter: "after",
+ replaceAll: "replaceWith"
+}, function( name, original ) {
+ jQuery.fn[ name ] = function( selector ) {
+ var ret = [], insert = jQuery( selector );
- var e = this.originalEvent;
- if( !e )
- return;
- // if stopPropagation exists run it on the original event
- if (e.stopPropagation)
- e.stopPropagation();
- // otherwise set the cancelBubble property of the original event to true (IE)
- e.cancelBubble = true;
- },
- stopImmediatePropagation:function(){
- this.isImmediatePropagationStopped = returnTrue;
- this.stopPropagation();
- },
- isDefaultPrevented: returnFalse,
- isPropagationStopped: returnFalse,
- isImmediatePropagationStopped: returnFalse
-};
-// Checks if an event happened on an element within another element
-// Used in jQuery.event.special.mouseenter and mouseleave handlers
-var withinElement = function(event) {
- // Check if mouse(over|out) are still within the same parent element
- var parent = event.relatedTarget;
- // Traverse up the tree
- while ( parent && parent != this )
- try { parent = parent.parentNode; }
- catch(e) { parent = this; }
-
- if( parent != this ){
- // set the correct event type
- event.type = event.data;
- // handle event if we actually just moused on to a non sub-element
- jQuery.event.handle.apply( this, arguments );
- }
-};
-
-jQuery.each({
- mouseover: 'mouseenter',
- mouseout: 'mouseleave'
-}, function( orig, fix ){
- jQuery.event.special[ fix ] = {
- setup: function(){
- jQuery.event.add( this, orig, withinElement, fix );
- },
- teardown: function(){
- jQuery.event.remove( this, orig, withinElement );
+ for ( var i = 0, l = insert.length; i < l; i++ ) {
+ var elems = (i > 0 ? this.clone(true) : this).get();
+ jQuery.fn[ original ].apply( jQuery(insert[i]), elems );
+ ret = ret.concat( elems );
}
- };
+ return this.pushStack( ret, name, insert.selector );
+ };
});
-jQuery.fn.extend({
- bind: function( type, data, fn ) {
- return type == "unload" ? this.one(type, data, fn) : this.each(function(){
- jQuery.event.add( this, type, fn || data, fn && data );
- });
- },
+jQuery.each({
+ // keepData is for internal use only--do not document
+ remove: function( selector, keepData ) {
+ if ( !selector || jQuery.filter( selector, [ this ] ).length ) {
+ if ( !keepData && this.nodeType === 1 ) {
+ jQuery.cleanData( this.getElementsByTagName("*") );
+ jQuery.cleanData( [ this ] );
+ }
- one: function( type, data, fn ) {
- var one = jQuery.event.proxy( fn || data, function(event) {
- jQuery(this).unbind(event, one);
- return (fn || data).apply( this, arguments );
- });
- return this.each(function(){
- jQuery.event.add( this, type, one, fn && data);
- });
+ if ( this.parentNode ) {
+ this.parentNode.removeChild( this );
+ }
+ }
},
- unbind: function( type, fn ) {
- return this.each(function(){
- jQuery.event.remove( this, type, fn );
- });
- },
+ empty: function() {
+ // Remove element nodes and prevent memory leaks
+ if ( this.nodeType === 1 ) {
+ jQuery.cleanData( this.getElementsByTagName("*") );
+ }
- trigger: function( type, data ) {
- return this.each(function(){
- jQuery.event.trigger( type, data, this );
- });
- },
+ // Remove any remaining nodes
+ while ( this.firstChild ) {
+ this.removeChild( this.firstChild );
+ }
+ }
+}, function( name, fn ) {
+ jQuery.fn[ name ] = function() {
+ return this.each( fn, arguments );
+ };
+});
- triggerHandler: function( type, data ) {
- if( this[0] ){
- var event = jQuery.Event(type);
- event.preventDefault();
- event.stopPropagation();
- jQuery.event.trigger( event, data, this[0] );
- return event.result;
- }
- },
+jQuery.extend({
+ clean: function( elems, context, fragment, scripts ) {
+ context = context || document;
- toggle: function( fn ) {
- // Save reference to arguments for access in closure
- var args = arguments, i = 1;
+ // !context.createElement fails in IE with an error but returns typeof 'object'
+ if ( typeof context.createElement === "undefined" ) {
+ context = context.ownerDocument || context[0] && context[0].ownerDocument || document;
+ }
- // link all the functions, so any of them can unbind this click handler
- while( i < args.length )
- jQuery.event.proxy( fn, args[i++] );
+ var ret = [];
- return this.click( jQuery.event.proxy( fn, function(event) {
- // Figure out which function to execute
- this.lastToggle = ( this.lastToggle || 0 ) % i;
+ jQuery.each(elems, function( i, elem ) {
+ if ( typeof elem === "number" ) {
+ elem += "";
+ }
- // Make sure that clicks stop
- event.preventDefault();
+ if ( !elem ) {
+ return;
+ }
- // and execute the function
- return args[ this.lastToggle++ ].apply( this, arguments ) || false;
- }));
- },
+ // Convert html string into DOM nodes
+ if ( typeof elem === "string" && !rhtml.test( elem ) ) {
+ elem = context.createTextNode( elem );
- hover: function(fnOver, fnOut) {
- return this.mouseenter(fnOver).mouseleave(fnOut);
- },
+ } else if ( typeof elem === "string" ) {
+ // Fix "XHTML"-style tags in all browsers
+ elem = elem.replace(rxhtmlTag, fcloseTag);
- ready: function(fn) {
- // Attach the listeners
- bindReady();
+ // Trim whitespace, otherwise indexOf won't work as expected
+ var tag = (rtagName.exec( elem ) || ["", ""])[1].toLowerCase(),
+ wrap = wrapMap[ tag ] || wrapMap._default,
+ depth = wrap[0],
+ div = context.createElement("div");
- // If the DOM is already ready
- if ( jQuery.isReady )
- // Execute the function immediately
- fn.call( document, jQuery );
+ // Go to html and back, then peel off extra wrappers
+ div.innerHTML = wrap[1] + elem + wrap[2];
- // Otherwise, remember the function for later
- else
- // Add the function to the wait list
- jQuery.readyList.push( fn );
+ // Move to the right depth
+ while ( depth-- ) {
+ div = div.lastChild;
+ }
- return this;
- },
-
- live: function( type, fn ){
- var proxy = jQuery.event.proxy( fn );
- proxy.guid += this.selector + type;
+ // Remove IE's autoinserted <tbody> from table fragments
+ if ( !jQuery.support.tbody ) {
+
+ // String was a <table>, *may* have spurious <tbody>
+ var hasBody = rtbody.test(elem),
+ tbody = tag === "table" && !hasBody ?
+ div.firstChild && div.firstChild.childNodes :
- jQuery(document).bind( liveConvert(type, this.selector), this.selector, proxy );
+ // String was a bare <thead> or <tfoot>
+ wrap[1] === "<table>" && !hasBody ?
+ div.childNodes :
+ [];
- return this;
+ for ( var j = tbody.length - 1; j >= 0 ; --j ) {
+ if ( jQuery.nodeName( tbody[ j ], "tbody" ) && !tbody[ j ].childNodes.length ) {
+ tbody[ j ].parentNode.removeChild( tbody[ j ] );
+ }
+ }
+
+ }
+
+ // IE completely kills leading whitespace when innerHTML is used
+ if ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) {
+ div.insertBefore( context.createTextNode( rleadingWhitespace.exec(elem)[0] ), div.firstChild );
+ }
+
+ elem = jQuery.makeArray( div.childNodes );
+ }
+
+ if ( elem.nodeType ) {
+ ret.push( elem );
+ } else {
+ ret = jQuery.merge( ret, elem );
+ }
+
+ });
+
+ if ( fragment ) {
+ for ( var i = 0; ret[i]; i++ ) {
+ if ( scripts && jQuery.nodeName( ret[i], "script" ) && (!ret[i].type || ret[i].type.toLowerCase() === "text/javascript") ) {
+ scripts.push( ret[i].parentNode ? ret[i].parentNode.removeChild( ret[i] ) : ret[i] );
+ } else {
+ if ( ret[i].nodeType === 1 ) {
+ ret.splice.apply( ret, [i + 1, 0].concat(jQuery.makeArray(ret[i].getElementsByTagName("script"))) );
+ }
+ fragment.appendChild( ret[i] );
+ }
+ }
+ }
+
+ return ret;
},
- die: function( type, fn ){
- jQuery(document).unbind( liveConvert(type, this.selector), fn ? { guid: fn.guid + this.selector + type } : null );
- return this;
+ cleanData: function( elems ) {
+ for ( var i = 0, elem, id; (elem = elems[i]) != null; i++ ) {
+ jQuery.event.remove( elem );
+ jQuery.removeData( elem );
+ }
}
});
+// exclude the following css properties to add px
+var rexclude = /z-?index|font-?weight|opacity|zoom|line-?height/i,
+ ralpha = /alpha\([^)]*\)/,
+ ropacity = /opacity=([^)]*)/,
+ rfloat = /float/i,
+ rdashAlpha = /-([a-z])/ig,
+ rupper = /([A-Z])/g,
+ rnumpx = /^-?\d+(?:px)?$/i,
+ rnum = /^-?\d/,
+
+ cssShow = { position: "absolute", visibility: "hidden", display:"block" },
+ cssWidth = [ "Left", "Right" ],
+ cssHeight = [ "Top", "Bottom" ],
+
+ // cache check for defaultView.getComputedStyle
+ getComputedStyle = document.defaultView && document.defaultView.getComputedStyle,
+ // normalize float css property
+ styleFloat = jQuery.support.cssFloat ? "cssFloat" : "styleFloat",
+ fcamelCase = function( all, letter ) {
+ return letter.toUpperCase();
+ };
-function liveHandler( event ){
- var check = RegExp("(^|\\.)" + event.type + "(\\.|$)"),
- stop = true,
- elems = [];
-
- jQuery.each(jQuery.data(this, "events").live || [], function(i, fn){
- if ( check.test(fn.type) ) {
- var elem = jQuery(event.target).closest(fn.data)[0];
- if ( elem )
- elems.push({ elem: elem, fn: fn });
+jQuery.fn.css = function( name, value ) {
+ return access( this, name, value, true, function( elem, name, value ) {
+ if ( value === undefined ) {
+ return jQuery.curCSS( elem, name );
+ }
+
+ if ( typeof value === "number" && !rexclude.test(name) ) {
+ value += "px";
}
- });
- elems.sort(function(a,b) {
- return jQuery.data(a.elem, "closest") - jQuery.data(b.elem, "closest");
- });
-
- jQuery.each(elems, function(){
- if ( this.fn.call(this.elem, event, this.fn.data) === false )
- return (stop = false);
+ jQuery.style( elem, name, value );
});
+};
- return stop;
-}
+jQuery.extend({
+ style: function( elem, name, value ) {
+ // don't set styles on text and comment nodes
+ if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 ) {
+ return undefined;
+ }
-function liveConvert(type, selector){
- return ["live", type, selector.replace(/\./g, "`").replace(/ /g, "|")].join(".");
-}
+ // ignore negative width and height values #1599
+ if ( (name === "width" || name === "height") && parseFloat(value) < 0 ) {
+ value = undefined;
+ }
-jQuery.extend({
- isReady: false,
- readyList: [],
- // Handle when the DOM is ready
- ready: function() {
- // Make sure that the DOM is not already loaded
- if ( !jQuery.isReady ) {
- // Remember that the DOM is ready
- jQuery.isReady = true;
+ var style = elem.style || elem, set = value !== undefined;
- // If there are functions bound, to execute
- if ( jQuery.readyList ) {
- // Execute all of them
- jQuery.each( jQuery.readyList, function(){
- this.call( document, jQuery );
- });
+ // IE uses filters for opacity
+ if ( !jQuery.support.opacity && name === "opacity" ) {
+ if ( set ) {
+ // IE has trouble with opacity if it does not have layout
+ // Force it by setting the zoom level
+ style.zoom = 1;
- // Reset the list of functions
- jQuery.readyList = null;
+ // Set the alpha filter to set the opacity
+ var opacity = parseInt( value, 10 ) + "" === "NaN" ? "" : "alpha(opacity=" + value * 100 + ")";
+ var filter = style.filter || jQuery.curCSS( elem, "filter" ) || "";
+ style.filter = ralpha.test(filter) ? filter.replace(ralpha, opacity) : opacity;
}
- // Trigger any bound ready events
- jQuery(document).triggerHandler("ready");
+ return style.filter && style.filter.indexOf("opacity=") >= 0 ?
+ (parseFloat( ropacity.exec(style.filter)[1] ) / 100) + "":
+ "";
}
- }
-});
-var readyBound = false;
+ // Make sure we're using the right name for getting the float value
+ if ( rfloat.test( name ) ) {
+ name = styleFloat;
+ }
-function bindReady(){
- if ( readyBound ) return;
- readyBound = true;
+ name = name.replace(rdashAlpha, fcamelCase);
- // Mozilla, Opera and webkit nightlies currently support this event
- if ( document.addEventListener ) {
- // Use the handy event callback
- document.addEventListener( "DOMContentLoaded", function(){
- document.removeEventListener( "DOMContentLoaded", arguments.callee, false );
- jQuery.ready();
- }, false );
+ if ( set ) {
+ style[ name ] = value;
+ }
+
+ return style[ name ];
+ },
+
+ css: function( elem, name, force, extra ) {
+ if ( name === "width" || name === "height" ) {
+ var val, props = cssShow, which = name === "width" ? cssWidth : cssHeight;
+
+ function getWH() {
+ val = name === "width" ? elem.offsetWidth : elem.offsetHeight;
+
+ if ( extra === "border" ) {
+ return;
+ }
- // If IE event model is used
- } else if ( document.attachEvent ) {
- // ensure firing before onload,
- // maybe late but safe also for iframes
- document.attachEvent("onreadystatechange", function(){
- if ( document.readyState === "complete" ) {
- document.detachEvent( "onreadystatechange", arguments.callee );
- jQuery.ready();
+ jQuery.each( which, function() {
+ if ( !extra ) {
+ val -= parseFloat(jQuery.curCSS( elem, "padding" + this, true)) || 0;
+ }
+
+ if ( extra === "margin" ) {
+ val += parseFloat(jQuery.curCSS( elem, "margin" + this, true)) || 0;
+ } else {
+ val -= parseFloat(jQuery.curCSS( elem, "border" + this + "Width", true)) || 0;
+ }
+ });
}
- });
- // If IE and not an iframe
- // continually check to see if the document is ready
- if ( document.documentElement.doScroll && window == window.top ) (function(){
- if ( jQuery.isReady ) return;
+ if ( elem.offsetWidth !== 0 ) {
+ getWH();
+ } else {
+ jQuery.swap( elem, props, getWH );
+ }
- try {
- // If IE is used, use the trick by Diego Perini
- // http://javascript.nwbox.com/IEContentLoaded/
- document.documentElement.doScroll("left");
- } catch( error ) {
- setTimeout( arguments.callee, 0 );
- return;
+ return Math.max(0, Math.round(val));
+ }
+
+ return jQuery.curCSS( elem, name, force );
+ },
+
+ curCSS: function( elem, name, force ) {
+ var ret, style = elem.style, filter;
+
+ // IE uses filters for opacity
+ if ( !jQuery.support.opacity && name === "opacity" && elem.currentStyle ) {
+ ret = ropacity.test(elem.currentStyle.filter || "") ?
+ (parseFloat(RegExp.$1) / 100) + "" :
+ "";
+
+ return ret === "" ?
+ "1" :
+ ret;
+ }
+
+ // Make sure we're using the right name for getting the float value
+ if ( rfloat.test( name ) ) {
+ name = styleFloat;
+ }
+
+ if ( !force && style && style[ name ] ) {
+ ret = style[ name ];
+
+ } else if ( getComputedStyle ) {
+
+ // Only "float" is needed here
+ if ( rfloat.test( name ) ) {
+ name = "float";
}
- // and execute any waiting functions
- jQuery.ready();
- })();
- }
+ name = name.replace( rupper, "-$1" ).toLowerCase();
- // A fallback to window.onload, that will always work
- jQuery.event.add( window, "load", jQuery.ready );
-}
+ var defaultView = elem.ownerDocument.defaultView;
-jQuery.each( ("blur,focus,load,resize,scroll,unload,click,dblclick," +
- "mousedown,mouseup,mousemove,mouseover,mouseout,mouseenter,mouseleave," +
- "change,select,submit,keydown,keypress,keyup,error").split(","), function(i, name){
+ if ( !defaultView ) {
+ return null;
+ }
- // Handle event binding
- jQuery.fn[name] = function(fn){
- return fn ? this.bind(name, fn) : this.trigger(name);
- };
-});
+ var computedStyle = defaultView.getComputedStyle( elem, null );
-// Prevent memory leaks in IE
-// And prevent errors on refresh with events like mouseover in other browsers
-// Window isn't included so as not to unbind existing unload events
-jQuery( window ).bind( 'unload', function(){
- for ( var id in jQuery.cache )
- // Skip the window
- if ( id != 1 && jQuery.cache[ id ].handle )
- jQuery.event.remove( jQuery.cache[ id ].handle.elem );
-});
-(function(){
+ if ( computedStyle ) {
+ ret = computedStyle.getPropertyValue( name );
+ }
- jQuery.support = {};
+ // We should always get a number back from opacity
+ if ( name === "opacity" && ret === "" ) {
+ ret = "1";
+ }
- var root = document.documentElement,
- script = document.createElement("script"),
- div = document.createElement("div"),
- id = "script" + (new Date).getTime();
+ } else if ( elem.currentStyle ) {
+ var camelCase = name.replace(rdashAlpha, fcamelCase);
- div.style.display = "none";
- div.innerHTML = ' <link/><table></table><a href="/a" style="color:red;float:left;opacity:.5;">a</a><select><option>text</option></select><object><param/></object>';
+ ret = elem.currentStyle[ name ] || elem.currentStyle[ camelCase ];
- var all = div.getElementsByTagName("*"),
- a = div.getElementsByTagName("a")[0];
+ // From the awesome hack by Dean Edwards
+ // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291
- // Can't get basic test support
- if ( !all || !all.length || !a ) {
- return;
- }
+ // If we're not dealing with a regular pixel number
+ // but a number that has a weird ending, we need to convert it to pixels
+ if ( !rnumpx.test( ret ) && rnum.test( ret ) ) {
+ // Remember the original values
+ var left = style.left, rsLeft = elem.runtimeStyle.left;
- jQuery.support = {
- // IE strips leading whitespace when .innerHTML is used
- leadingWhitespace: div.firstChild.nodeType == 3,
-
- // Make sure that tbody elements aren't automatically inserted
- // IE will insert them into empty tables
- tbody: !div.getElementsByTagName("tbody").length,
-
- // Make sure that you can get all elements in an <object> element
- // IE 7 always returns no results
- objectAll: !!div.getElementsByTagName("object")[0]
- .getElementsByTagName("*").length,
-
- // Make sure that link elements get serialized correctly by innerHTML
- // This requires a wrapper element in IE
- htmlSerialize: !!div.getElementsByTagName("link").length,
-
- // Get the style information from getAttribute
- // (IE uses .cssText insted)
- style: /red/.test( a.getAttribute("style") ),
-
- // Make sure that URLs aren't manipulated
- // (IE normalizes it by default)
- hrefNormalized: a.getAttribute("href") === "/a",
-
- // Make sure that element opacity exists
- // (IE uses filter instead)
- opacity: a.style.opacity === "0.5",
-
- // Verify style float existence
- // (IE uses styleFloat instead of cssFloat)
- cssFloat: !!a.style.cssFloat,
+ // Put in the new values to get a computed value out
+ elem.runtimeStyle.left = elem.currentStyle.left;
+ style.left = camelCase === "fontSize" ? "1em" : (ret || 0);
+ ret = style.pixelLeft + "px";
- // Will be defined later
- scriptEval: false,
- noCloneEvent: true,
- boxModel: null
- };
-
- script.type = "text/javascript";
- try {
- script.appendChild( document.createTextNode( "window." + id + "=1;" ) );
- } catch(e){}
+ // Revert the changed values
+ style.left = left;
+ elem.runtimeStyle.left = rsLeft;
+ }
+ }
- root.insertBefore( script, root.firstChild );
-
- // Make sure that the execution of code works by injecting a script
- // tag with appendChild/createTextNode
- // (IE doesn't support this, fails, and uses .text instead)
- if ( window[ id ] ) {
- jQuery.support.scriptEval = true;
- delete window[ id ];
- }
+ return ret;
+ },
- root.removeChild( script );
+ // A method for quickly swapping in/out CSS properties to get correct calculations
+ swap: function( elem, options, callback ) {
+ var old = {};
- if ( div.attachEvent && div.fireEvent ) {
- div.attachEvent("onclick", function(){
- // Cloning a node shouldn't copy over any
- // bound event handlers (IE does this)
- jQuery.support.noCloneEvent = false;
- div.detachEvent("onclick", arguments.callee);
- });
- div.cloneNode(true).fireEvent("onclick");
+ // Remember the old values, and insert the new ones
+ for ( var name in options ) {
+ old[ name ] = elem.style[ name ];
+ elem.style[ name ] = options[ name ];
+ }
+
+ callback.call( elem );
+
+ // Revert the old values
+ for ( var name in options ) {
+ elem.style[ name ] = old[ name ];
+ }
}
+});
- // Figure out if the W3C box model works as expected
- // document.body must exist before we can do this
- jQuery(function(){
- var div = document.createElement("div");
- div.style.width = div.style.paddingLeft = "1px";
+if ( jQuery.expr && jQuery.expr.filters ) {
+ jQuery.expr.filters.hidden = function( elem ) {
+ var width = elem.offsetWidth, height = elem.offsetHeight,
+ skip = elem.nodeName.toLowerCase() === "tr";
- document.body.appendChild( div );
- jQuery.boxModel = jQuery.support.boxModel = div.offsetWidth === 2;
- document.body.removeChild( div ).style.display = 'none';
- });
-})();
+ return width === 0 && height === 0 && !skip ?
+ true :
+ width > 0 && height > 0 && !skip ?
+ false :
+ jQuery.curCSS(elem, "display") === "none";
+ };
-var styleFloat = jQuery.support.cssFloat ? "cssFloat" : "styleFloat";
+ jQuery.expr.filters.visible = function( elem ) {
+ return !jQuery.expr.filters.hidden( elem );
+ };
+}
+var jsc = now(),
+ rscript = /<script(.|\s)*?\/script>/gi,
+ rselectTextarea = /select|textarea/i,
+ rinput = /color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i,
+ jsre = /=\?(&|$)/,
+ rquery = /\?/,
+ rts = /(\?|&)_=.*?(&|$)/,
+ rurl = /^(\w+:)?\/\/([^\/?#]+)/,
+ r20 = /%20/g;
-jQuery.props = {
- "for": "htmlFor",
- "class": "className",
- "float": styleFloat,
- cssFloat: styleFloat,
- styleFloat: styleFloat,
- readonly: "readOnly",
- maxlength: "maxLength",
- cellspacing: "cellSpacing",
- rowspan: "rowSpan",
- tabindex: "tabIndex"
-};
jQuery.fn.extend({
// Keep a copy of the old load
_load: jQuery.fn.load,
load: function( url, params, callback ) {
- if ( typeof url !== "string" )
+ if ( typeof url !== "string" ) {
return this._load( url );
+ // Don't do a request if no elements are being requested
+ } else if ( !this.length ) {
+ return this;
+ }
+
var off = url.indexOf(" ");
if ( off >= 0 ) {
var selector = url.slice(off, url.length);
@@ -3239,7 +4639,7 @@ jQuery.fn.extend({
var type = "GET";
// If the second parameter was provided
- if ( params )
+ if ( params ) {
// If it's a function
if ( jQuery.isFunction( params ) ) {
// We assume that it's the callback
@@ -3247,10 +4647,11 @@ jQuery.fn.extend({
params = null;
// Otherwise, build a param string
- } else if( typeof params === "object" ) {
- params = jQuery.param( params );
+ } else if ( typeof params === "object" ) {
+ params = jQuery.param( params, jQuery.ajaxSettings.traditional );
type = "POST";
}
+ }
var self = this;
@@ -3260,27 +4661,30 @@ jQuery.fn.extend({
type: type,
dataType: "html",
data: params,
- complete: function(res, status){
+ complete: function( res, status ) {
// If successful, inject the HTML into all the matched elements
- if ( status == "success" || status == "notmodified" )
+ if ( status === "success" || status === "notmodified" ) {
// See if a selector was specified
self.html( selector ?
// Create a dummy div to hold the results
- jQuery("<div/>")
+ jQuery("<div />")
// inject the contents of the document in, removing the scripts
// to avoid any 'Permission Denied' errors in IE
- .append(res.responseText.replace(/<script(.|\s)*?\/script>/g, ""))
+ .append(res.responseText.replace(rscript, ""))
// Locate the specified elements
.find(selector) :
// If not, just inject the full result
res.responseText );
+ }
- if( callback )
+ if ( callback ) {
self.each( callback, [res.responseText, status, res] );
+ }
}
});
+
return this;
},
@@ -3288,40 +4692,41 @@ jQuery.fn.extend({
return jQuery.param(this.serializeArray());
},
serializeArray: function() {
- return this.map(function(){
+ return this.map(function() {
return this.elements ? jQuery.makeArray(this.elements) : this;
})
- .filter(function(){
+ .filter(function() {
return this.name && !this.disabled &&
- (this.checked || /select|textarea/i.test(this.nodeName) ||
- /text|hidden|password|search/i.test(this.type));
+ (this.checked || rselectTextarea.test(this.nodeName) ||
+ rinput.test(this.type));
})
- .map(function(i, elem){
+ .map(function( i, elem ) {
var val = jQuery(this).val();
- return val == null ? null :
+
+ return val == null ?
+ null :
jQuery.isArray(val) ?
- jQuery.map( val, function(val, i){
- return {name: elem.name, value: val};
+ jQuery.map( val, function( val, i ) {
+ return { name: elem.name, value: val };
}) :
- {name: elem.name, value: val};
+ { name: elem.name, value: val };
}).get();
}
});
// Attach a bunch of functions for handling common AJAX events
-jQuery.each( "ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","), function(i,o){
- jQuery.fn[o] = function(f){
+jQuery.each( "ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "), function( i, o ) {
+ jQuery.fn[o] = function( f ) {
return this.bind(o, f);
};
});
-var jsc = now();
-
jQuery.extend({
-
+
get: function( url, data, callback, type ) {
- // shift arguments if data argument was ommited
+ // shift arguments if data argument was omited
if ( jQuery.isFunction( data ) ) {
+ type = type || callback;
callback = data;
data = null;
}
@@ -3344,7 +4749,9 @@ jQuery.extend({
},
post: function( url, data, callback, type ) {
+ // shift arguments if data argument was omited
if ( jQuery.isFunction( data ) ) {
+ type = type || callback;
callback = data;
data = {};
}
@@ -3374,13 +4781,21 @@ jQuery.extend({
data: null,
username: null,
password: null,
+ traditional: false,
*/
// Create the request object; Microsoft failed to properly
- // implement the XMLHttpRequest in IE7, so we use the ActiveXObject when it is available
+ // implement the XMLHttpRequest in IE7 (can't request local files),
+ // so we use the ActiveXObject when it is available
// This function can be overriden by calling jQuery.ajaxSetup
- xhr:function(){
- return window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest();
- },
+ xhr: window.XMLHttpRequest && (window.location.protocol !== "file:" || !window.ActiveXObject) ?
+ function() {
+ return new window.XMLHttpRequest();
+ } :
+ function() {
+ try {
+ return new window.ActiveXObject("Microsoft.XMLHTTP");
+ } catch(e) {}
+ },
accepts: {
xml: "application/xml, text/xml",
html: "text/html",
@@ -3393,36 +4808,41 @@ jQuery.extend({
// Last-Modified header cache for next request
lastModified: {},
+ etag: {},
- ajax: function( s ) {
- // Extend the settings, but re-extend 's' so that it can be
- // checked again later (in the test suite, specifically)
- s = jQuery.extend(true, s, jQuery.extend(true, {}, jQuery.ajaxSettings, s));
-
- var jsonp, jsre = /=\?(&|$)/g, status, data,
+ ajax: function( origSettings ) {
+ var s = jQuery.extend(true, {}, jQuery.ajaxSettings, origSettings);
+
+ var jsonp, status, data,
+ callbackContext = origSettings && origSettings.context || s,
type = s.type.toUpperCase();
// convert data if not already a string
- if ( s.data && s.processData && typeof s.data !== "string" )
- s.data = jQuery.param(s.data);
+ if ( s.data && s.processData && typeof s.data !== "string" ) {
+ s.data = jQuery.param( s.data, s.traditional );
+ }
// Handle JSONP Parameter Callbacks
- if ( s.dataType == "jsonp" ) {
- if ( type == "GET" ) {
- if ( !s.url.match(jsre) )
- s.url += (s.url.match(/\?/) ? "&" : "?") + (s.jsonp || "callback") + "=?";
- } else if ( !s.data || !s.data.match(jsre) )
+ if ( s.dataType === "jsonp" ) {
+ if ( type === "GET" ) {
+ if ( !jsre.test( s.url ) ) {
+ s.url += (rquery.test( s.url ) ? "&" : "?") + (s.jsonp || "callback") + "=?";
+ }
+ } else if ( !s.data || !jsre.test(s.data) ) {
s.data = (s.data ? s.data + "&" : "") + (s.jsonp || "callback") + "=?";
+ }
s.dataType = "json";
}
// Build temporary JSONP function
- if ( s.dataType == "json" && (s.data && s.data.match(jsre) || s.url.match(jsre)) ) {
- jsonp = "jsonp" + jsc++;
+ if ( s.dataType === "json" && (s.data && jsre.test(s.data) || jsre.test(s.url)) ) {
+ jsonp = s.jsonpCallback || ("jsonp" + jsc++);
// Replace the =? sequence both in the query string and the data
- if ( s.data )
+ if ( s.data ) {
s.data = (s.data + "").replace(jsre, "=" + jsonp + "$1");
+ }
+
s.url = s.url.replace(jsre, "=" + jsonp + "$1");
// We need to make sure
@@ -3430,75 +4850,85 @@ jQuery.extend({
s.dataType = "script";
// Handle JSONP-style loading
- window[ jsonp ] = function(tmp){
+ window[ jsonp ] = window[ jsonp ] || function( tmp ) {
data = tmp;
success();
complete();
// Garbage collect
window[ jsonp ] = undefined;
- try{ delete window[ jsonp ]; } catch(e){}
- if ( head )
+
+ try {
+ delete window[ jsonp ];
+ } catch(e) {}
+
+ if ( head ) {
head.removeChild( script );
+ }
};
}
- if ( s.dataType == "script" && s.cache == null )
+ if ( s.dataType === "script" && s.cache === null ) {
s.cache = false;
+ }
- if ( s.cache === false && type == "GET" ) {
+ if ( s.cache === false && type === "GET" ) {
var ts = now();
+
// try replacing _= if it is there
- var ret = s.url.replace(/(\?|&)_=.*?(&|$)/, "$1_=" + ts + "$2");
+ var ret = s.url.replace(rts, "$1_=" + ts + "$2");
+
// if nothing was replaced, add timestamp to the end
- s.url = ret + ((ret == s.url) ? (s.url.match(/\?/) ? "&" : "?") + "_=" + ts : "");
+ s.url = ret + ((ret === s.url) ? (rquery.test(s.url) ? "&" : "?") + "_=" + ts : "");
}
// If data is available, append data to url for get requests
- if ( s.data && type == "GET" ) {
- s.url += (s.url.match(/\?/) ? "&" : "?") + s.data;
-
- // IE likes to send both get and post data, prevent this
- s.data = null;
+ if ( s.data && type === "GET" ) {
+ s.url += (rquery.test(s.url) ? "&" : "?") + s.data;
}
// Watch for a new set of requests
- if ( s.global && ! jQuery.active++ )
+ if ( s.global && ! jQuery.active++ ) {
jQuery.event.trigger( "ajaxStart" );
+ }
// Matches an absolute URL, and saves the domain
- var parts = /^(\w+:)?\/\/([^\/?#]+)/.exec( s.url );
+ var parts = rurl.exec( s.url ),
+ remote = parts && (parts[1] && parts[1] !== location.protocol || parts[2] !== location.host);
// If we're requesting a remote document
// and trying to load JSON or Script with a GET
- if ( s.dataType == "script" && type == "GET" && parts
- && ( parts[1] && parts[1] != location.protocol || parts[2] != location.host )){
-
- var head = document.getElementsByTagName("head")[0];
+ if ( s.dataType === "script" && type === "GET" && remote ) {
+ var head = document.getElementsByTagName("head")[0] || document.documentElement;
var script = document.createElement("script");
script.src = s.url;
- if (s.scriptCharset)
+ if ( s.scriptCharset ) {
script.charset = s.scriptCharset;
+ }
// Handle Script loading
if ( !jsonp ) {
var done = false;
// Attach handlers for all browsers
- script.onload = script.onreadystatechange = function(){
+ script.onload = script.onreadystatechange = function() {
if ( !done && (!this.readyState ||
- this.readyState == "loaded" || this.readyState == "complete") ) {
+ this.readyState === "loaded" || this.readyState === "complete") ) {
done = true;
success();
complete();
// Handle memory leak in IE
script.onload = script.onreadystatechange = null;
- head.removeChild( script );
+ if ( head && script.parentNode ) {
+ head.removeChild( script );
+ }
}
};
}
- head.appendChild(script);
+ // Use insertBefore instead of appendChild to circumvent an IE6 bug.
+ // This arises when a base node is used (#2709 and #4378).
+ head.insertBefore( script, head.firstChild );
// We handle everything using the script element injection
return undefined;
@@ -3509,158 +4939,197 @@ jQuery.extend({
// Create the request object
var xhr = s.xhr();
+ if ( !xhr ) {
+ return;
+ }
+
// Open the socket
// Passing null username, generates a login popup on Opera (#2865)
- if( s.username )
+ if ( s.username ) {
xhr.open(type, s.url, s.async, s.username, s.password);
- else
+ } else {
xhr.open(type, s.url, s.async);
+ }
// Need an extra try/catch for cross domain requests in Firefox 3
try {
// Set the correct header, if data is being sent
- if ( s.data )
+ if ( s.data || origSettings && origSettings.contentType ) {
xhr.setRequestHeader("Content-Type", s.contentType);
+ }
+
+ // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
+ if ( s.ifModified ) {
+ if ( jQuery.lastModified[s.url] ) {
+ xhr.setRequestHeader("If-Modified-Since", jQuery.lastModified[s.url]);
+ }
- // Set the If-Modified-Since header, if ifModified mode.
- if ( s.ifModified )
- xhr.setRequestHeader("If-Modified-Since",
- jQuery.lastModified[s.url] || "Thu, 01 Jan 1970 00:00:00 GMT" );
+ if ( jQuery.etag[s.url] ) {
+ xhr.setRequestHeader("If-None-Match", jQuery.etag[s.url]);
+ }
+ }
// Set header so the called script knows that it's an XMLHttpRequest
- xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
+ // Only send the header if it's not a remote XHR
+ if ( !remote ) {
+ xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
+ }
// Set the Accepts header for the server, depending on the dataType
xhr.setRequestHeader("Accept", s.dataType && s.accepts[ s.dataType ] ?
s.accepts[ s.dataType ] + ", */*" :
s.accepts._default );
- } catch(e){}
+ } catch(e) {}
// Allow custom headers/mimetypes and early abort
- if ( s.beforeSend && s.beforeSend(xhr, s) === false ) {
+ if ( s.beforeSend && s.beforeSend.call(callbackContext, xhr, s) === false ) {
// Handle the global AJAX counter
- if ( s.global && ! --jQuery.active )
+ if ( s.global && ! --jQuery.active ) {
jQuery.event.trigger( "ajaxStop" );
+ }
+
// close opended socket
xhr.abort();
return false;
}
- if ( s.global )
- jQuery.event.trigger("ajaxSend", [xhr, s]);
+ if ( s.global ) {
+ trigger("ajaxSend", [xhr, s]);
+ }
// Wait for a response to come back
- var onreadystatechange = function(isTimeout){
- // The request was aborted, clear the interval and decrement jQuery.active
- if (xhr.readyState == 0) {
- if (ival) {
- // clear poll interval
- clearInterval(ival);
- ival = null;
- // Handle the global AJAX counter
- if ( s.global && ! --jQuery.active )
- jQuery.event.trigger( "ajaxStop" );
+ var onreadystatechange = xhr.onreadystatechange = function( isTimeout ) {
+ // The request was aborted
+ if ( !xhr || xhr.readyState === 0 || isTimeout === "abort" ) {
+ // Opera doesn't call onreadystatechange before this point
+ // so we simulate the call
+ if ( !requestDone ) {
+ complete();
+ }
+
+ requestDone = true;
+ if ( xhr ) {
+ xhr.onreadystatechange = jQuery.noop;
}
+
// The transfer is complete and the data is available, or the request timed out
- } else if ( !requestDone && xhr && (xhr.readyState == 4 || isTimeout == "timeout") ) {
+ } else if ( !requestDone && xhr && (xhr.readyState === 4 || isTimeout === "timeout") ) {
requestDone = true;
+ xhr.onreadystatechange = jQuery.noop;
- // clear poll interval
- if (ival) {
- clearInterval(ival);
- ival = null;
- }
+ status = isTimeout === "timeout" ?
+ "timeout" :
+ !jQuery.httpSuccess( xhr ) ?
+ "error" :
+ s.ifModified && jQuery.httpNotModified( xhr, s.url ) ?
+ "notmodified" :
+ "success";
- status = isTimeout == "timeout" ? "timeout" :
- !jQuery.httpSuccess( xhr ) ? "error" :
- s.ifModified && jQuery.httpNotModified( xhr, s.url ) ? "notmodified" :
- "success";
+ var errMsg;
- if ( status == "success" ) {
+ if ( status === "success" ) {
// Watch for, and catch, XML document parse errors
try {
// process the data (runs the xml through httpData regardless of callback)
data = jQuery.httpData( xhr, s.dataType, s );
- } catch(e) {
+ } catch(err) {
status = "parsererror";
+ errMsg = err;
}
}
// Make sure that the request was successful or notmodified
- if ( status == "success" ) {
- // Cache Last-Modified header, if ifModified mode.
- var modRes;
- try {
- modRes = xhr.getResponseHeader("Last-Modified");
- } catch(e) {} // swallow exception thrown by FF if header is not available
-
- if ( s.ifModified && modRes )
- jQuery.lastModified[s.url] = modRes;
-
+ if ( status === "success" || status === "notmodified" ) {
// JSONP handles its own success callback
- if ( !jsonp )
+ if ( !jsonp ) {
success();
- } else
- jQuery.handleError(s, xhr, status);
+ }
+ } else {
+ jQuery.handleError(s, xhr, status, errMsg);
+ }
// Fire the complete handlers
complete();
- if ( isTimeout )
+ if ( isTimeout === "timeout" ) {
xhr.abort();
+ }
// Stop memory leaks
- if ( s.async )
+ if ( s.async ) {
xhr = null;
+ }
}
};
- if ( s.async ) {
- // don't attach the handler to the request, just poll it instead
- var ival = setInterval(onreadystatechange, 13);
+ // Override the abort handler, if we can (IE doesn't allow it, but that's OK)
+ // Opera doesn't fire onreadystatechange at all on abort
+ try {
+ var oldAbort = xhr.abort;
+ xhr.abort = function() {
+ if ( xhr ) {
+ oldAbort.call( xhr );
+ }
- // Timeout checker
- if ( s.timeout > 0 )
- setTimeout(function(){
- // Check to see if the request is still happening
- if ( xhr && !requestDone )
- onreadystatechange( "timeout" );
- }, s.timeout);
+ onreadystatechange( "abort" );
+ };
+ } catch(e) { }
+
+ // Timeout checker
+ if ( s.async && s.timeout > 0 ) {
+ setTimeout(function() {
+ // Check to see if the request is still happening
+ if ( xhr && !requestDone ) {
+ onreadystatechange( "timeout" );
+ }
+ }, s.timeout);
}
// Send the data
try {
- xhr.send(s.data);
+ xhr.send( type === "POST" || type === "PUT" || type === "DELETE" ? s.data : null );
} catch(e) {
jQuery.handleError(s, xhr, null, e);
+ // Fire the complete handlers
+ complete();
}
// firefox 1.5 doesn't fire statechange for sync requests
- if ( !s.async )
+ if ( !s.async ) {
onreadystatechange();
+ }
- function success(){
+ function success() {
// If a local callback was specified, fire it and pass it the data
- if ( s.success )
- s.success( data, status );
+ if ( s.success ) {
+ s.success.call( callbackContext, data, status, xhr );
+ }
// Fire the global callback
- if ( s.global )
- jQuery.event.trigger( "ajaxSuccess", [xhr, s] );
+ if ( s.global ) {
+ trigger( "ajaxSuccess", [xhr, s] );
+ }
}
- function complete(){
+ function complete() {
// Process result
- if ( s.complete )
- s.complete(xhr, status);
+ if ( s.complete ) {
+ s.complete.call( callbackContext, xhr, status);
+ }
// The request was completed
- if ( s.global )
- jQuery.event.trigger( "ajaxComplete", [xhr, s] );
+ if ( s.global ) {
+ trigger( "ajaxComplete", [xhr, s] );
+ }
// Handle the global AJAX counter
- if ( s.global && ! --jQuery.active )
+ if ( s.global && ! --jQuery.active ) {
jQuery.event.trigger( "ajaxStop" );
+ }
+ }
+
+ function trigger(type, args) {
+ (s.context ? jQuery(s.context) : jQuery.event).trigger(type, args);
}
// return XMLHttpRequest to allow aborting the request etc.
@@ -3669,11 +5138,14 @@ jQuery.extend({
handleError: function( s, xhr, status, e ) {
// If a local callback was specified, fire it
- if ( s.error ) s.error( xhr, status, e );
+ if ( s.error ) {
+ s.error.call( s.context || s, xhr, status, e );
+ }
// Fire the global callback
- if ( s.global )
- jQuery.event.trigger( "ajaxError", [xhr, s, e] );
+ if ( s.global ) {
+ (s.context ? jQuery(s.context) : jQuery.event).trigger( "ajaxError", [xhr, s, e] );
+ }
},
// Counter for holding the number of active queries
@@ -3683,86 +5155,131 @@ jQuery.extend({
httpSuccess: function( xhr ) {
try {
// IE error sometimes returns 1223 when it should be 204 so treat it as success, see #1450
- return !xhr.status && location.protocol == "file:" ||
- ( xhr.status >= 200 && xhr.status < 300 ) || xhr.status == 304 || xhr.status == 1223;
- } catch(e){}
+ return !xhr.status && location.protocol === "file:" ||
+ // Opera returns 0 when status is 304
+ ( xhr.status >= 200 && xhr.status < 300 ) ||
+ xhr.status === 304 || xhr.status === 1223 || xhr.status === 0;
+ } catch(e) {}
+
return false;
},
// Determines if an XMLHttpRequest returns NotModified
httpNotModified: function( xhr, url ) {
- try {
- var xhrRes = xhr.getResponseHeader("Last-Modified");
+ var lastModified = xhr.getResponseHeader("Last-Modified"),
+ etag = xhr.getResponseHeader("Etag");
- // Firefox always returns 200. check Last-Modified date
- return xhr.status == 304 || xhrRes == jQuery.lastModified[url];
- } catch(e){}
- return false;
+ if ( lastModified ) {
+ jQuery.lastModified[url] = lastModified;
+ }
+
+ if ( etag ) {
+ jQuery.etag[url] = etag;
+ }
+
+ // Opera returns 0 when status is 304
+ return xhr.status === 304 || xhr.status === 0;
},
httpData: function( xhr, type, s ) {
- var ct = xhr.getResponseHeader("content-type"),
- xml = type == "xml" || !type && ct && ct.indexOf("xml") >= 0,
+ var ct = xhr.getResponseHeader("content-type") || "",
+ xml = type === "xml" || !type && ct.indexOf("xml") >= 0,
data = xml ? xhr.responseXML : xhr.responseText;
- if ( xml && data.documentElement.tagName == "parsererror" )
- throw "parsererror";
-
+ if ( xml && data.documentElement.nodeName === "parsererror" ) {
+ jQuery.error( "parsererror" );
+ }
+
// Allow a pre-filtering function to sanitize the response
- // s != null is checked to keep backwards compatibility
- if( s && s.dataFilter )
+ // s is checked to keep backwards compatibility
+ if ( s && s.dataFilter ) {
data = s.dataFilter( data, type );
+ }
// The filter can actually parse the response
- if( typeof data === "string" ){
+ if ( typeof data === "string" ) {
+ // Get the JavaScript object, if JSON is used.
+ if ( type === "json" || !type && ct.indexOf("json") >= 0 ) {
+ data = jQuery.parseJSON( data );
// If the type is "script", eval it in global context
- if ( type == "script" )
+ } else if ( type === "script" || !type && ct.indexOf("javascript") >= 0 ) {
jQuery.globalEval( data );
-
- // Get the JavaScript object, if JSON is used.
- if ( type == "json" )
- data = window["eval"]("(" + data + ")");
+ }
}
-
+
return data;
},
// Serialize an array of form elements or a set of
// key/values into a query string
- param: function( a ) {
- var s = [ ];
-
- function add( key, value ){
- s[ s.length ] = encodeURIComponent(key) + '=' + encodeURIComponent(value);
- };
-
- // If an array was passed in, assume that it is an array
- // of form elements
- if ( jQuery.isArray(a) || a.jquery )
+ param: function( a, traditional ) {
+ var s = [];
+
+ // Set traditional to true for jQuery <= 1.3.2 behavior.
+ if ( traditional === undefined ) {
+ traditional = jQuery.ajaxSettings.traditional;
+ }
+
+ // If an array was passed in, assume that it is an array of form elements.
+ if ( jQuery.isArray(a) || a.jquery ) {
// Serialize the form elements
- jQuery.each( a, function(){
+ jQuery.each( a, function() {
add( this.name, this.value );
});
-
- // Otherwise, assume that it's an object of key/value pairs
- else
- // Serialize the key/values
- for ( var j in a )
- // If the value is an array then the key names need to be repeated
- if ( jQuery.isArray(a[j]) )
- jQuery.each( a[j], function(){
- add( j, this );
- });
- else
- add( j, jQuery.isFunction(a[j]) ? a[j]() : a[j] );
+
+ } else {
+ // If traditional, encode the "old" way (the way 1.3.2 or older
+ // did it), otherwise encode params recursively.
+ for ( var prefix in a ) {
+ buildParams( prefix, a[prefix] );
+ }
+ }
// Return the resulting serialization
- return s.join("&").replace(/%20/g, "+");
- }
+ return s.join("&").replace(r20, "+");
+
+ function buildParams( prefix, obj ) {
+ if ( jQuery.isArray(obj) ) {
+ // Serialize array item.
+ jQuery.each( obj, function( i, v ) {
+ if ( traditional ) {
+ // Treat each array item as a scalar.
+ add( prefix, v );
+ } else {
+ // If array item is non-scalar (array or object), encode its
+ // numeric index to resolve deserialization ambiguity issues.
+ // Note that rack (as of 1.0.0) can't currently deserialize
+ // nested arrays properly, and attempting to do so may cause
+ // a server error. Possible fixes are to modify rack's
+ // deserialization algorithm or to provide an option or flag
+ // to force array serialization to be shallow.
+ buildParams( prefix + "[" + ( typeof v === "object" || jQuery.isArray(v) ? i : "" ) + "]", v );
+ }
+ });
+
+ } else if ( !traditional && obj != null && typeof obj === "object" ) {
+ // Serialize object item.
+ jQuery.each( obj, function( k, v ) {
+ buildParams( prefix + "[" + k + "]", v );
+ });
+
+ } else {
+ // Serialize scalar item.
+ add( prefix, obj );
+ }
+ }
+ function add( key, value ) {
+ // If value is a function, invoke it and return its value
+ value = jQuery.isFunction(value) ? value() : value;
+ s[ s.length ] = encodeURIComponent(key) + "=" + encodeURIComponent(value);
+ }
+ }
});
var elemdisplay = {},
+ rfxtypes = /toggle|show|hide/,
+ rfxnum = /^([+-]=)?([\d+-.]+)(.*)$/,
timerId,
fxAttrs = [
// height animations
@@ -3773,69 +5290,67 @@ var elemdisplay = {},
[ "opacity" ]
];
-function genFx( type, num ){
- var obj = {};
- jQuery.each( fxAttrs.concat.apply([], fxAttrs.slice(0,num)), function(){
- obj[ this ] = type;
- });
- return obj;
-}
-
jQuery.fn.extend({
- show: function(speed,callback){
- if ( speed ) {
+ show: function( speed, callback ) {
+ if ( speed || speed === 0) {
return this.animate( genFx("show", 3), speed, callback);
+
} else {
- for ( var i = 0, l = this.length; i < l; i++ ){
+ for ( var i = 0, l = this.length; i < l; i++ ) {
var old = jQuery.data(this[i], "olddisplay");
-
+
this[i].style.display = old || "";
-
+
if ( jQuery.css(this[i], "display") === "none" ) {
- var tagName = this[i].tagName, display;
-
- if ( elemdisplay[ tagName ] ) {
- display = elemdisplay[ tagName ];
+ var nodeName = this[i].nodeName, display;
+
+ if ( elemdisplay[ nodeName ] ) {
+ display = elemdisplay[ nodeName ];
+
} else {
- var elem = jQuery("<" + tagName + " />").appendTo("body");
-
+ var elem = jQuery("<" + nodeName + " />").appendTo("body");
+
display = elem.css("display");
- if ( display === "none" )
+
+ if ( display === "none" ) {
display = "block";
-
+ }
+
elem.remove();
-
- elemdisplay[ tagName ] = display;
+
+ elemdisplay[ nodeName ] = display;
}
-
+
jQuery.data(this[i], "olddisplay", display);
}
}
// Set the display of the elements in a second loop
// to avoid the constant reflow
- for ( var i = 0, l = this.length; i < l; i++ ){
- this[i].style.display = jQuery.data(this[i], "olddisplay") || "";
+ for ( var j = 0, k = this.length; j < k; j++ ) {
+ this[j].style.display = jQuery.data(this[j], "olddisplay") || "";
}
-
+
return this;
}
},
- hide: function(speed,callback){
- if ( speed ) {
+ hide: function( speed, callback ) {
+ if ( speed || speed === 0 ) {
return this.animate( genFx("hide", 3), speed, callback);
+
} else {
- for ( var i = 0, l = this.length; i < l; i++ ){
+ for ( var i = 0, l = this.length; i < l; i++ ) {
var old = jQuery.data(this[i], "olddisplay");
- if ( !old && old !== "none" )
+ if ( !old && old !== "none" ) {
jQuery.data(this[i], "olddisplay", jQuery.css(this[i], "display"));
+ }
}
// Set the display of the elements in a second loop
// to avoid the constant reflow
- for ( var i = 0, l = this.length; i < l; i++ ){
- this[i].style.display = "none";
+ for ( var j = 0, k = this.length; j < k; j++ ) {
+ this[j].style.display = "none";
}
return this;
@@ -3845,77 +5360,107 @@ jQuery.fn.extend({
// Save the old toggle function
_toggle: jQuery.fn.toggle,
- toggle: function( fn, fn2 ){
+ toggle: function( fn, fn2 ) {
var bool = typeof fn === "boolean";
- return jQuery.isFunction(fn) && jQuery.isFunction(fn2) ?
- this._toggle.apply( this, arguments ) :
- fn == null || bool ?
- this.each(function(){
- var state = bool ? fn : jQuery(this).is(":hidden");
- jQuery(this)[ state ? "show" : "hide" ]();
- }) :
- this.animate(genFx("toggle", 3), fn, fn2);
+ if ( jQuery.isFunction(fn) && jQuery.isFunction(fn2) ) {
+ this._toggle.apply( this, arguments );
+
+ } else if ( fn == null || bool ) {
+ this.each(function() {
+ var state = bool ? fn : jQuery(this).is(":hidden");
+ jQuery(this)[ state ? "show" : "hide" ]();
+ });
+
+ } else {
+ this.animate(genFx("toggle", 3), fn, fn2);
+ }
+
+ return this;
},
- fadeTo: function(speed,to,callback){
- return this.animate({opacity: to}, speed, callback);
+ fadeTo: function( speed, to, callback ) {
+ return this.filter(":hidden").css("opacity", 0).show().end()
+ .animate({opacity: to}, speed, callback);
},
animate: function( prop, speed, easing, callback ) {
var optall = jQuery.speed(speed, easing, callback);
- return this[ optall.queue === false ? "each" : "queue" ](function(){
-
+ if ( jQuery.isEmptyObject( prop ) ) {
+ return this.each( optall.complete );
+ }
+
+ return this[ optall.queue === false ? "each" : "queue" ](function() {
var opt = jQuery.extend({}, optall), p,
- hidden = this.nodeType == 1 && jQuery(this).is(":hidden"),
+ hidden = this.nodeType === 1 && jQuery(this).is(":hidden"),
self = this;
-
+
for ( p in prop ) {
- if ( prop[p] == "hide" && hidden || prop[p] == "show" && !hidden )
+ var name = p.replace(rdashAlpha, fcamelCase);
+
+ if ( p !== name ) {
+ prop[ name ] = prop[ p ];
+ delete prop[ p ];
+ p = name;
+ }
+
+ if ( prop[p] === "hide" && hidden || prop[p] === "show" && !hidden ) {
return opt.complete.call(this);
+ }
- if ( ( p == "height" || p == "width" ) && this.style ) {
+ if ( ( p === "height" || p === "width" ) && this.style ) {
// Store display property
opt.display = jQuery.css(this, "display");
// Make sure that nothing sneaks out
opt.overflow = this.style.overflow;
}
+
+ if ( jQuery.isArray( prop[p] ) ) {
+ // Create (if needed) and add to specialEasing
+ (opt.specialEasing = opt.specialEasing || {})[p] = prop[p][1];
+ prop[p] = prop[p][0];
+ }
}
- if ( opt.overflow != null )
+ if ( opt.overflow != null ) {
this.style.overflow = "hidden";
+ }
opt.curAnim = jQuery.extend({}, prop);
- jQuery.each( prop, function(name, val){
+ jQuery.each( prop, function( name, val ) {
var e = new jQuery.fx( self, opt, name );
- if ( /toggle|show|hide/.test(val) )
- e[ val == "toggle" ? hidden ? "show" : "hide" : val ]( prop );
- else {
- var parts = val.toString().match(/^([+-]=)?([\d+-.]+)(.*)$/),
+ if ( rfxtypes.test(val) ) {
+ e[ val === "toggle" ? hidden ? "show" : "hide" : val ]( prop );
+
+ } else {
+ var parts = rfxnum.exec(val),
start = e.cur(true) || 0;
if ( parts ) {
- var end = parseFloat(parts[2]),
+ var end = parseFloat( parts[2] ),
unit = parts[3] || "px";
// We need to compute starting value
- if ( unit != "px" ) {
+ if ( unit !== "px" ) {
self.style[ name ] = (end || 1) + unit;
start = ((end || 1) / e.cur(true)) * start;
self.style[ name ] = start + unit;
}
// If a +=/-= token was provided, we're doing a relative animation
- if ( parts[1] )
- end = ((parts[1] == "-=" ? -1 : 1) * end) + start;
+ if ( parts[1] ) {
+ end = ((parts[1] === "-=" ? -1 : 1) * end) + start;
+ }
e.custom( start, end, unit );
- } else
+
+ } else {
e.custom( start, val, "" );
+ }
}
});
@@ -3924,26 +5469,31 @@ jQuery.fn.extend({
});
},
- stop: function(clearQueue, gotoEnd){
+ stop: function( clearQueue, gotoEnd ) {
var timers = jQuery.timers;
- if (clearQueue)
+ if ( clearQueue ) {
this.queue([]);
+ }
- this.each(function(){
+ this.each(function() {
// go in reverse order so anything added to the queue during the loop is ignored
- for ( var i = timers.length - 1; i >= 0; i-- )
- if ( timers[i].elem == this ) {
- if (gotoEnd)
+ for ( var i = timers.length - 1; i >= 0; i-- ) {
+ if ( timers[i].elem === this ) {
+ if (gotoEnd) {
// force the next step to be the last
timers[i](true);
+ }
+
timers.splice(i, 1);
}
+ }
});
// start the next in the queue if the last step wasn't forced
- if (!gotoEnd)
+ if ( !gotoEnd ) {
this.dequeue();
+ }
return this;
}
@@ -3957,16 +5507,15 @@ jQuery.each({
slideToggle: genFx("toggle", 1),
fadeIn: { opacity: "show" },
fadeOut: { opacity: "hide" }
-}, function( name, props ){
- jQuery.fn[ name ] = function( speed, callback ){
+}, function( name, props ) {
+ jQuery.fn[ name ] = function( speed, callback ) {
return this.animate( props, speed, callback );
};
});
jQuery.extend({
-
- speed: function(speed, easing, fn) {
- var opt = typeof speed === "object" ? speed : {
+ speed: function( speed, easing, fn ) {
+ var opt = speed && typeof speed === "object" ? speed : {
complete: fn || !fn && easing ||
jQuery.isFunction( speed ) && speed,
duration: speed,
@@ -3978,11 +5527,13 @@ jQuery.extend({
// Queueing
opt.old = opt.complete;
- opt.complete = function(){
- if ( opt.queue !== false )
+ opt.complete = function() {
+ if ( opt.queue !== false ) {
jQuery(this).dequeue();
- if ( jQuery.isFunction( opt.old ) )
+ }
+ if ( jQuery.isFunction( opt.old ) ) {
opt.old.call( this );
+ }
};
return opt;
@@ -3999,42 +5550,45 @@ jQuery.extend({
timers: [],
- fx: function( elem, options, prop ){
+ fx: function( elem, options, prop ) {
this.options = options;
this.elem = elem;
this.prop = prop;
- if ( !options.orig )
+ if ( !options.orig ) {
options.orig = {};
+ }
}
});
jQuery.fx.prototype = {
-
// Simple function for setting a style value
- update: function(){
- if ( this.options.step )
+ update: function() {
+ if ( this.options.step ) {
this.options.step.call( this.elem, this.now, this );
+ }
(jQuery.fx.step[this.prop] || jQuery.fx.step._default)( this );
// Set display property to block for height/width animations
- if ( ( this.prop == "height" || this.prop == "width" ) && this.elem.style )
+ if ( ( this.prop === "height" || this.prop === "width" ) && this.elem.style ) {
this.elem.style.display = "block";
+ }
},
// Get the current size
- cur: function(force){
- if ( this.elem[this.prop] != null && (!this.elem.style || this.elem.style[this.prop] == null) )
+ cur: function( force ) {
+ if ( this.elem[this.prop] != null && (!this.elem.style || this.elem.style[this.prop] == null) ) {
return this.elem[ this.prop ];
+ }
var r = parseFloat(jQuery.css(this.elem, this.prop, force));
return r && r > -10000 ? r : parseFloat(jQuery.curCSS(this.elem, this.prop)) || 0;
},
// Start an animation from one number to another
- custom: function(from, to, unit){
+ custom: function( from, to, unit ) {
this.startTime = now();
this.start = from;
this.end = to;
@@ -4043,47 +5597,36 @@ jQuery.fx.prototype = {
this.pos = this.state = 0;
var self = this;
- function t(gotoEnd){
+ function t( gotoEnd ) {
return self.step(gotoEnd);
}
t.elem = this.elem;
if ( t() && jQuery.timers.push(t) && !timerId ) {
- timerId = setInterval(function(){
- var timers = jQuery.timers;
-
- for ( var i = 0; i < timers.length; i++ )
- if ( !timers[i]() )
- timers.splice(i--, 1);
-
- if ( !timers.length ) {
- clearInterval( timerId );
- timerId = undefined;
- }
- }, 13);
+ timerId = setInterval(jQuery.fx.tick, 13);
}
},
// Simple 'show' function
- show: function(){
+ show: function() {
// Remember where we started, so that we can go back to it later
- this.options.orig[this.prop] = jQuery.attr( this.elem.style, this.prop );
+ this.options.orig[this.prop] = jQuery.style( this.elem, this.prop );
this.options.show = true;
// Begin the animation
// Make sure that we start at a small width/height to avoid any
// flash of content
- this.custom(this.prop == "width" || this.prop == "height" ? 1 : 0, this.cur());
+ this.custom(this.prop === "width" || this.prop === "height" ? 1 : 0, this.cur());
// Start by showing the element
- jQuery(this.elem).show();
+ jQuery( this.elem ).show();
},
// Simple 'hide' function
- hide: function(){
+ hide: function() {
// Remember where we started, so that we can go back to it later
- this.options.orig[this.prop] = jQuery.attr( this.elem.style, this.prop );
+ this.options.orig[this.prop] = jQuery.style( this.elem, this.prop );
this.options.hide = true;
// Begin the animation
@@ -4091,8 +5634,8 @@ jQuery.fx.prototype = {
},
// Each step of an animation
- step: function(gotoEnd){
- var t = now();
+ step: function( gotoEnd ) {
+ var t = now(), done = true;
if ( gotoEnd || t >= this.options.duration + this.startTime ) {
this.now = this.end;
@@ -4101,10 +5644,11 @@ jQuery.fx.prototype = {
this.options.curAnim[ this.prop ] = true;
- var done = true;
- for ( var i in this.options.curAnim )
- if ( this.options.curAnim[i] !== true )
+ for ( var i in this.options.curAnim ) {
+ if ( this.options.curAnim[i] !== true ) {
done = false;
+ }
+ }
if ( done ) {
if ( this.options.display != null ) {
@@ -4112,31 +5656,40 @@ jQuery.fx.prototype = {
this.elem.style.overflow = this.options.overflow;
// Reset the display
- this.elem.style.display = this.options.display;
- if ( jQuery.css(this.elem, "display") == "none" )
+ var old = jQuery.data(this.elem, "olddisplay");
+ this.elem.style.display = old ? old : this.options.display;
+
+ if ( jQuery.css(this.elem, "display") === "none" ) {
this.elem.style.display = "block";
+ }
}
// Hide the element if the "hide" operation was done
- if ( this.options.hide )
+ if ( this.options.hide ) {
jQuery(this.elem).hide();
+ }
// Reset the properties, if the item has been hidden or shown
- if ( this.options.hide || this.options.show )
- for ( var p in this.options.curAnim )
- jQuery.attr(this.elem.style, p, this.options.orig[p]);
-
+ if ( this.options.hide || this.options.show ) {
+ for ( var p in this.options.curAnim ) {
+ jQuery.style(this.elem, p, this.options.orig[p]);
+ }
+ }
+
// Execute the complete function
this.options.complete.call( this.elem );
}
return false;
+
} else {
var n = t - this.startTime;
this.state = n / this.options.duration;
// Perform the easing function, defaults to swing
- this.pos = jQuery.easing[this.options.easing || (jQuery.easing.swing ? "swing" : "linear")](this.state, n, 0, 1, this.options.duration);
+ var specialEasing = this.options.specialEasing && this.options.specialEasing[this.prop];
+ var defaultEasing = this.options.easing || (jQuery.easing.swing ? "swing" : "linear");
+ this.pos = jQuery.easing[specialEasing || defaultEasing](this.state, n, 0, 1, this.options.duration);
this.now = this.start + ((this.end - this.start) * this.pos);
// Perform the next step of the animation
@@ -4145,232 +5698,382 @@ jQuery.fx.prototype = {
return true;
}
-
};
jQuery.extend( jQuery.fx, {
- speeds:{
+ tick: function() {
+ var timers = jQuery.timers;
+
+ for ( var i = 0; i < timers.length; i++ ) {
+ if ( !timers[i]() ) {
+ timers.splice(i--, 1);
+ }
+ }
+
+ if ( !timers.length ) {
+ jQuery.fx.stop();
+ }
+ },
+
+ stop: function() {
+ clearInterval( timerId );
+ timerId = null;
+ },
+
+ speeds: {
slow: 600,
fast: 200,
// Default speed
_default: 400
},
- step: {
- opacity: function(fx){
- jQuery.attr(fx.elem.style, "opacity", fx.now);
+ step: {
+ opacity: function( fx ) {
+ jQuery.style(fx.elem, "opacity", fx.now);
},
- _default: function(fx){
- if ( fx.elem.style && fx.elem.style[ fx.prop ] != null )
- fx.elem.style[ fx.prop ] = fx.now + fx.unit;
- else
+ _default: function( fx ) {
+ if ( fx.elem.style && fx.elem.style[ fx.prop ] != null ) {
+ fx.elem.style[ fx.prop ] = (fx.prop === "width" || fx.prop === "height" ? Math.max(0, fx.now) : fx.now) + fx.unit;
+ } else {
fx.elem[ fx.prop ] = fx.now;
+ }
}
}
});
-if ( document.documentElement["getBoundingClientRect"] )
- jQuery.fn.offset = function() {
- if ( !this[0] ) return { top: 0, left: 0 };
- if ( this[0] === this[0].ownerDocument.body ) return jQuery.offset.bodyOffset( this[0] );
- var box = this[0].getBoundingClientRect(), doc = this[0].ownerDocument, body = doc.body, docElem = doc.documentElement,
+
+if ( jQuery.expr && jQuery.expr.filters ) {
+ jQuery.expr.filters.animated = function( elem ) {
+ return jQuery.grep(jQuery.timers, function( fn ) {
+ return elem === fn.elem;
+ }).length;
+ };
+}
+
+function genFx( type, num ) {
+ var obj = {};
+
+ jQuery.each( fxAttrs.concat.apply([], fxAttrs.slice(0,num)), function() {
+ obj[ this ] = type;
+ });
+
+ return obj;
+}
+if ( "getBoundingClientRect" in document.documentElement ) {
+ jQuery.fn.offset = function( options ) {
+ var elem = this[0];
+
+ if ( options ) {
+ return this.each(function( i ) {
+ jQuery.offset.setOffset( this, options, i );
+ });
+ }
+
+ if ( !elem || !elem.ownerDocument ) {
+ return null;
+ }
+
+ if ( elem === elem.ownerDocument.body ) {
+ return jQuery.offset.bodyOffset( elem );
+ }
+
+ var box = elem.getBoundingClientRect(), doc = elem.ownerDocument, body = doc.body, docElem = doc.documentElement,
clientTop = docElem.clientTop || body.clientTop || 0, clientLeft = docElem.clientLeft || body.clientLeft || 0,
- top = box.top + (self.pageYOffset || jQuery.boxModel && docElem.scrollTop || body.scrollTop ) - clientTop,
- left = box.left + (self.pageXOffset || jQuery.boxModel && docElem.scrollLeft || body.scrollLeft) - clientLeft;
+ top = box.top + (self.pageYOffset || jQuery.support.boxModel && docElem.scrollTop || body.scrollTop ) - clientTop,
+ left = box.left + (self.pageXOffset || jQuery.support.boxModel && docElem.scrollLeft || body.scrollLeft) - clientLeft;
+
return { top: top, left: left };
};
-else
- jQuery.fn.offset = function() {
- if ( !this[0] ) return { top: 0, left: 0 };
- if ( this[0] === this[0].ownerDocument.body ) return jQuery.offset.bodyOffset( this[0] );
- jQuery.offset.initialized || jQuery.offset.initialize();
- var elem = this[0], offsetParent = elem.offsetParent, prevOffsetParent = elem,
+} else {
+ jQuery.fn.offset = function( options ) {
+ var elem = this[0];
+
+ if ( options ) {
+ return this.each(function( i ) {
+ jQuery.offset.setOffset( this, options, i );
+ });
+ }
+
+ if ( !elem || !elem.ownerDocument ) {
+ return null;
+ }
+
+ if ( elem === elem.ownerDocument.body ) {
+ return jQuery.offset.bodyOffset( elem );
+ }
+
+ jQuery.offset.initialize();
+
+ var offsetParent = elem.offsetParent, prevOffsetParent = elem,
doc = elem.ownerDocument, computedStyle, docElem = doc.documentElement,
body = doc.body, defaultView = doc.defaultView,
- prevComputedStyle = defaultView.getComputedStyle(elem, null),
+ prevComputedStyle = defaultView ? defaultView.getComputedStyle( elem, null ) : elem.currentStyle,
top = elem.offsetTop, left = elem.offsetLeft;
while ( (elem = elem.parentNode) && elem !== body && elem !== docElem ) {
- computedStyle = defaultView.getComputedStyle(elem, null);
- top -= elem.scrollTop, left -= elem.scrollLeft;
+ if ( jQuery.offset.supportsFixedPosition && prevComputedStyle.position === "fixed" ) {
+ break;
+ }
+
+ computedStyle = defaultView ? defaultView.getComputedStyle(elem, null) : elem.currentStyle;
+ top -= elem.scrollTop;
+ left -= elem.scrollLeft;
+
if ( elem === offsetParent ) {
- top += elem.offsetTop, left += elem.offsetLeft;
- if ( jQuery.offset.doesNotAddBorder && !(jQuery.offset.doesAddBorderForTableAndCells && /^t(able|d|h)$/i.test(elem.tagName)) )
- top += parseInt( computedStyle.borderTopWidth, 10) || 0,
- left += parseInt( computedStyle.borderLeftWidth, 10) || 0;
+ top += elem.offsetTop;
+ left += elem.offsetLeft;
+
+ if ( jQuery.offset.doesNotAddBorder && !(jQuery.offset.doesAddBorderForTableAndCells && /^t(able|d|h)$/i.test(elem.nodeName)) ) {
+ top += parseFloat( computedStyle.borderTopWidth ) || 0;
+ left += parseFloat( computedStyle.borderLeftWidth ) || 0;
+ }
+
prevOffsetParent = offsetParent, offsetParent = elem.offsetParent;
}
- if ( jQuery.offset.subtractsBorderForOverflowNotVisible && computedStyle.overflow !== "visible" )
- top += parseInt( computedStyle.borderTopWidth, 10) || 0,
- left += parseInt( computedStyle.borderLeftWidth, 10) || 0;
+
+ if ( jQuery.offset.subtractsBorderForOverflowNotVisible && computedStyle.overflow !== "visible" ) {
+ top += parseFloat( computedStyle.borderTopWidth ) || 0;
+ left += parseFloat( computedStyle.borderLeftWidth ) || 0;
+ }
+
prevComputedStyle = computedStyle;
}
- if ( prevComputedStyle.position === "relative" || prevComputedStyle.position === "static" )
- top += body.offsetTop,
+ if ( prevComputedStyle.position === "relative" || prevComputedStyle.position === "static" ) {
+ top += body.offsetTop;
left += body.offsetLeft;
+ }
- if ( prevComputedStyle.position === "fixed" )
- top += Math.max(docElem.scrollTop, body.scrollTop),
- left += Math.max(docElem.scrollLeft, body.scrollLeft);
+ if ( jQuery.offset.supportsFixedPosition && prevComputedStyle.position === "fixed" ) {
+ top += Math.max( docElem.scrollTop, body.scrollTop );
+ left += Math.max( docElem.scrollLeft, body.scrollLeft );
+ }
return { top: top, left: left };
};
+}
jQuery.offset = {
initialize: function() {
- if ( this.initialized ) return;
- var body = document.body, container = document.createElement('div'), innerDiv, checkDiv, table, td, rules, prop, bodyMarginTop = body.style.marginTop,
- html = '<div style="position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;"><div></div></div><table style="position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;" cellpadding="0" cellspacing="0"><tr><td></td></tr></table>';
+ var body = document.body, container = document.createElement("div"), innerDiv, checkDiv, table, td, bodyMarginTop = parseFloat( jQuery.curCSS(body, "marginTop", true) ) || 0,
+ html = "<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";
- rules = { position: 'absolute', top: 0, left: 0, margin: 0, border: 0, width: '1px', height: '1px', visibility: 'hidden' };
- for ( prop in rules ) container.style[prop] = rules[prop];
+ jQuery.extend( container.style, { position: "absolute", top: 0, left: 0, margin: 0, border: 0, width: "1px", height: "1px", visibility: "hidden" } );
container.innerHTML = html;
- body.insertBefore(container, body.firstChild);
- innerDiv = container.firstChild, checkDiv = innerDiv.firstChild, td = innerDiv.nextSibling.firstChild.firstChild;
+ body.insertBefore( container, body.firstChild );
+ innerDiv = container.firstChild;
+ checkDiv = innerDiv.firstChild;
+ td = innerDiv.nextSibling.firstChild.firstChild;
this.doesNotAddBorder = (checkDiv.offsetTop !== 5);
this.doesAddBorderForTableAndCells = (td.offsetTop === 5);
- innerDiv.style.overflow = 'hidden', innerDiv.style.position = 'relative';
+ checkDiv.style.position = "fixed", checkDiv.style.top = "20px";
+ // safari subtracts parent border width here which is 5px
+ this.supportsFixedPosition = (checkDiv.offsetTop === 20 || checkDiv.offsetTop === 15);
+ checkDiv.style.position = checkDiv.style.top = "";
+
+ innerDiv.style.overflow = "hidden", innerDiv.style.position = "relative";
this.subtractsBorderForOverflowNotVisible = (checkDiv.offsetTop === -5);
- body.style.marginTop = '1px';
- this.doesNotIncludeMarginInBodyOffset = (body.offsetTop === 0);
- body.style.marginTop = bodyMarginTop;
+ this.doesNotIncludeMarginInBodyOffset = (body.offsetTop !== bodyMarginTop);
- body.removeChild(container);
- this.initialized = true;
+ body.removeChild( container );
+ body = container = innerDiv = checkDiv = table = td = null;
+ jQuery.offset.initialize = jQuery.noop;
},
- bodyOffset: function(body) {
- jQuery.offset.initialized || jQuery.offset.initialize();
+ bodyOffset: function( body ) {
var top = body.offsetTop, left = body.offsetLeft;
- if ( jQuery.offset.doesNotIncludeMarginInBodyOffset )
- top += parseInt( jQuery.curCSS(body, 'marginTop', true), 10 ) || 0,
- left += parseInt( jQuery.curCSS(body, 'marginLeft', true), 10 ) || 0;
+
+ jQuery.offset.initialize();
+
+ if ( jQuery.offset.doesNotIncludeMarginInBodyOffset ) {
+ top += parseFloat( jQuery.curCSS(body, "marginTop", true) ) || 0;
+ left += parseFloat( jQuery.curCSS(body, "marginLeft", true) ) || 0;
+ }
+
return { top: top, left: left };
+ },
+
+ setOffset: function( elem, options, i ) {
+ // set position first, in-case top/left are set even on static elem
+ if ( /static/.test( jQuery.curCSS( elem, "position" ) ) ) {
+ elem.style.position = "relative";
+ }
+ var curElem = jQuery( elem ),
+ curOffset = curElem.offset(),
+ curTop = parseInt( jQuery.curCSS( elem, "top", true ), 10 ) || 0,
+ curLeft = parseInt( jQuery.curCSS( elem, "left", true ), 10 ) || 0;
+
+ if ( jQuery.isFunction( options ) ) {
+ options = options.call( elem, i, curOffset );
+ }
+
+ var props = {
+ top: (options.top - curOffset.top) + curTop,
+ left: (options.left - curOffset.left) + curLeft
+ };
+
+ if ( "using" in options ) {
+ options.using.call( elem, props );
+ } else {
+ curElem.css( props );
+ }
}
};
jQuery.fn.extend({
position: function() {
- var left = 0, top = 0, results;
-
- if ( this[0] ) {
- // Get *real* offsetParent
- var offsetParent = this.offsetParent(),
-
- // Get correct offsets
- offset = this.offset(),
- parentOffset = /^body|html$/i.test(offsetParent[0].tagName) ? { top: 0, left: 0 } : offsetParent.offset();
-
- // Subtract element margins
- // note: when an element has margin: auto the offsetLeft and marginLeft
- // are the same in Safari causing offset.left to incorrectly be 0
- offset.top -= num( this, 'marginTop' );
- offset.left -= num( this, 'marginLeft' );
-
- // Add offsetParent borders
- parentOffset.top += num( offsetParent, 'borderTopWidth' );
- parentOffset.left += num( offsetParent, 'borderLeftWidth' );
-
- // Subtract the two offsets
- results = {
- top: offset.top - parentOffset.top,
- left: offset.left - parentOffset.left
- };
+ if ( !this[0] ) {
+ return null;
}
- return results;
+ var elem = this[0],
+
+ // Get *real* offsetParent
+ offsetParent = this.offsetParent(),
+
+ // Get correct offsets
+ offset = this.offset(),
+ parentOffset = /^body|html$/i.test(offsetParent[0].nodeName) ? { top: 0, left: 0 } : offsetParent.offset();
+
+ // Subtract element margins
+ // note: when an element has margin: auto the offsetLeft and marginLeft
+ // are the same in Safari causing offset.left to incorrectly be 0
+ offset.top -= parseFloat( jQuery.curCSS(elem, "marginTop", true) ) || 0;
+ offset.left -= parseFloat( jQuery.curCSS(elem, "marginLeft", true) ) || 0;
+
+ // Add offsetParent borders
+ parentOffset.top += parseFloat( jQuery.curCSS(offsetParent[0], "borderTopWidth", true) ) || 0;
+ parentOffset.left += parseFloat( jQuery.curCSS(offsetParent[0], "borderLeftWidth", true) ) || 0;
+
+ // Subtract the two offsets
+ return {
+ top: offset.top - parentOffset.top,
+ left: offset.left - parentOffset.left
+ };
},
offsetParent: function() {
- var offsetParent = this[0].offsetParent || document.body;
- while ( offsetParent && (!/^body|html$/i.test(offsetParent.tagName) && jQuery.css(offsetParent, 'position') == 'static') )
- offsetParent = offsetParent.offsetParent;
- return jQuery(offsetParent);
+ return this.map(function() {
+ var offsetParent = this.offsetParent || document.body;
+ while ( offsetParent && (!/^body|html$/i.test(offsetParent.nodeName) && jQuery.css(offsetParent, "position") === "static") ) {
+ offsetParent = offsetParent.offsetParent;
+ }
+ return offsetParent;
+ });
}
});
// Create scrollLeft and scrollTop methods
-jQuery.each( ['Left', 'Top'], function(i, name) {
- var method = 'scroll' + name;
-
- jQuery.fn[ method ] = function(val) {
- if (!this[0]) return null;
+jQuery.each( ["Left", "Top"], function( i, name ) {
+ var method = "scroll" + name;
- return val !== undefined ?
+ jQuery.fn[ method ] = function(val) {
+ var elem = this[0], win;
+
+ if ( !elem ) {
+ return null;
+ }
+ if ( val !== undefined ) {
// Set the scroll offset
- this.each(function() {
- this == window || this == document ?
- window.scrollTo(
- !i ? val : jQuery(window).scrollLeft(),
- i ? val : jQuery(window).scrollTop()
- ) :
+ return this.each(function() {
+ win = getWindow( this );
+
+ if ( win ) {
+ win.scrollTo(
+ !i ? val : jQuery(win).scrollLeft(),
+ i ? val : jQuery(win).scrollTop()
+ );
+
+ } else {
this[ method ] = val;
- }) :
+ }
+ });
+ } else {
+ win = getWindow( elem );
// Return the scroll offset
- this[0] == window || this[0] == document ?
- self[ i ? 'pageYOffset' : 'pageXOffset' ] ||
- jQuery.boxModel && document.documentElement[ method ] ||
- document.body[ method ] :
- this[0][ method ];
+ return win ? ("pageXOffset" in win) ? win[ i ? "pageYOffset" : "pageXOffset" ] :
+ jQuery.support.boxModel && win.document.documentElement[ method ] ||
+ win.document.body[ method ] :
+ elem[ method ];
+ }
};
});
+
+function getWindow( elem ) {
+ return ("scrollTo" in elem && elem.document) ?
+ elem :
+ elem.nodeType === 9 ?
+ elem.defaultView || elem.parentWindow :
+ false;
+}
// Create innerHeight, innerWidth, outerHeight and outerWidth methods
-jQuery.each([ "Height", "Width" ], function(i, name){
+jQuery.each([ "Height", "Width" ], function( i, name ) {
- var tl = i ? "Left" : "Top", // top or left
- br = i ? "Right" : "Bottom", // bottom or right
- lower = name.toLowerCase();
+ var type = name.toLowerCase();
// innerHeight and innerWidth
- jQuery.fn["inner" + name] = function(){
+ jQuery.fn["inner" + name] = function() {
return this[0] ?
- jQuery.css( this[0], lower, false, "padding" ) :
+ jQuery.css( this[0], type, false, "padding" ) :
null;
};
// outerHeight and outerWidth
- jQuery.fn["outer" + name] = function(margin) {
+ jQuery.fn["outer" + name] = function( margin ) {
return this[0] ?
- jQuery.css( this[0], lower, false, margin ? "margin" : "border" ) :
+ jQuery.css( this[0], type, false, margin ? "margin" : "border" ) :
null;
};
-
- var type = name.toLowerCase();
jQuery.fn[ type ] = function( size ) {
// Get window width or height
- return this[0] == window ?
+ var elem = this[0];
+ if ( !elem ) {
+ return size == null ? null : this;
+ }
+
+ if ( jQuery.isFunction( size ) ) {
+ return this.each(function( i ) {
+ var self = jQuery( this );
+ self[ type ]( size.call( this, i, self[ type ]() ) );
+ });
+ }
+
+ return ("scrollTo" in elem && elem.document) ? // does it walk and quack like a window?
// Everyone else use document.documentElement or document.body depending on Quirks vs Standards mode
- document.compatMode == "CSS1Compat" && document.documentElement[ "client" + name ] ||
- document.body[ "client" + name ] :
+ elem.document.compatMode === "CSS1Compat" && elem.document.documentElement[ "client" + name ] ||
+ elem.document.body[ "client" + name ] :
// Get document width or height
- this[0] == document ?
+ (elem.nodeType === 9) ? // is it a document
// Either scroll[Width/Height] or offset[Width/Height], whichever is greater
Math.max(
- document.documentElement["client" + name],
- document.body["scroll" + name], document.documentElement["scroll" + name],
- document.body["offset" + name], document.documentElement["offset" + name]
+ elem.documentElement["client" + name],
+ elem.body["scroll" + name], elem.documentElement["scroll" + name],
+ elem.body["offset" + name], elem.documentElement["offset" + name]
) :
// Get or set width or height on the element
size === undefined ?
// Get width or height on the element
- (this.length ? jQuery.css( this[0], type ) : null) :
+ jQuery.css( elem, type ) :
// Set the width or height on the element (default to pixels if value is unitless)
this.css( type, typeof size === "string" ? size : size + "px" );
};
});
-})();
+// Expose jQuery to the global object
+window.jQuery = window.$ = jQuery;
+
+})(window);
+
diff --git a/js/jquery.min.js b/js/jquery.min.js
index b1ae21d8b..950198f47 100644
--- a/js/jquery.min.js
+++ b/js/jquery.min.js
@@ -1,19 +1,153 @@
-/*
- * jQuery JavaScript Library v1.3.2
+/*!
+ * jQuery JavaScript Library v1.4.1
* http://jquery.com/
*
- * Copyright (c) 2009 John Resig
- * Dual licensed under the MIT and GPL licenses.
- * http://docs.jquery.com/License
+ * Copyright 2010, John Resig
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
*
- * Date: 2009-02-19 17:34:21 -0500 (Thu, 19 Feb 2009)
- * Revision: 6246
- */
-(function(){var l=this,g,y=l.jQuery,p=l.$,o=l.jQuery=l.$=function(E,F){return new o.fn.init(E,F)},D=/^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-]+)$/,f=/^.[^:#\[\.,]*$/;o.fn=o.prototype={init:function(E,H){E=E||document;if(E.nodeType){this[0]=E;this.length=1;this.context=E;return this}if(typeof E==="string"){var G=D.exec(E);if(G&&(G[1]||!H)){if(G[1]){E=o.clean([G[1]],H)}else{var I=document.getElementById(G[3]);if(I&&I.id!=G[3]){return o().find(E)}var F=o(I||[]);F.context=document;F.selector=E;return F}}else{return o(H).find(E)}}else{if(o.isFunction(E)){return o(document).ready(E)}}if(E.selector&&E.context){this.selector=E.selector;this.context=E.context}return this.setArray(o.isArray(E)?E:o.makeArray(E))},selector:"",jquery:"1.3.2",size:function(){return this.length},get:function(E){return E===g?Array.prototype.slice.call(this):this[E]},pushStack:function(F,H,E){var G=o(F);G.prevObject=this;G.context=this.context;if(H==="find"){G.selector=this.selector+(this.selector?" ":"")+E}else{if(H){G.selector=this.selector+"."+H+"("+E+")"}}return G},setArray:function(E){this.length=0;Array.prototype.push.apply(this,E);return this},each:function(F,E){return o.each(this,F,E)},index:function(E){return o.inArray(E&&E.jquery?E[0]:E,this)},attr:function(F,H,G){var E=F;if(typeof F==="string"){if(H===g){return this[0]&&o[G||"attr"](this[0],F)}else{E={};E[F]=H}}return this.each(function(I){for(F in E){o.attr(G?this.style:this,F,o.prop(this,E[F],G,I,F))}})},css:function(E,F){if((E=="width"||E=="height")&&parseFloat(F)<0){F=g}return this.attr(E,F,"curCSS")},text:function(F){if(typeof F!=="object"&&F!=null){return this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(F))}var E="";o.each(F||this,function(){o.each(this.childNodes,function(){if(this.nodeType!=8){E+=this.nodeType!=1?this.nodeValue:o.fn.text([this])}})});return E},wrapAll:function(E){if(this[0]){var F=o(E,this[0].ownerDocument).clone();if(this[0].parentNode){F.insertBefore(this[0])}F.map(function(){var G=this;while(G.firstChild){G=G.firstChild}return G}).append(this)}return this},wrapInner:function(E){return this.each(function(){o(this).contents().wrapAll(E)})},wrap:function(E){return this.each(function(){o(this).wrapAll(E)})},append:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.appendChild(E)}})},prepend:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.insertBefore(E,this.firstChild)}})},before:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this)})},after:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this.nextSibling)})},end:function(){return this.prevObject||o([])},push:[].push,sort:[].sort,splice:[].splice,find:function(E){if(this.length===1){var F=this.pushStack([],"find",E);F.length=0;o.find(E,this[0],F);return F}else{return this.pushStack(o.unique(o.map(this,function(G){return o.find(E,G)})),"find",E)}},clone:function(G){var E=this.map(function(){if(!o.support.noCloneEvent&&!o.isXMLDoc(this)){var I=this.outerHTML;if(!I){var J=this.ownerDocument.createElement("div");J.appendChild(this.cloneNode(true));I=J.innerHTML}return o.clean([I.replace(/ jQuery\d+="(?:\d+|null)"/g,"").replace(/^\s*/,"")])[0]}else{return this.cloneNode(true)}});if(G===true){var H=this.find("*").andSelf(),F=0;E.find("*").andSelf().each(function(){if(this.nodeName!==H[F].nodeName){return}var I=o.data(H[F],"events");for(var K in I){for(var J in I[K]){o.event.add(this,K,I[K][J],I[K][J].data)}}F++})}return E},filter:function(E){return this.pushStack(o.isFunction(E)&&o.grep(this,function(G,F){return E.call(G,F)})||o.multiFilter(E,o.grep(this,function(F){return F.nodeType===1})),"filter",E)},closest:function(E){var G=o.expr.match.POS.test(E)?o(E):null,F=0;return this.map(function(){var H=this;while(H&&H.ownerDocument){if(G?G.index(H)>-1:o(H).is(E)){o.data(H,"closest",F);return H}H=H.parentNode;F++}})},not:function(E){if(typeof E==="string"){if(f.test(E)){return this.pushStack(o.multiFilter(E,this,true),"not",E)}else{E=o.multiFilter(E,this)}}var F=E.length&&E[E.length-1]!==g&&!E.nodeType;return this.filter(function(){return F?o.inArray(this,E)<0:this!=E})},add:function(E){return this.pushStack(o.unique(o.merge(this.get(),typeof E==="string"?o(E):o.makeArray(E))))},is:function(E){return !!E&&o.multiFilter(E,this).length>0},hasClass:function(E){return !!E&&this.is("."+E)},val:function(K){if(K===g){var E=this[0];if(E){if(o.nodeName(E,"option")){return(E.attributes.value||{}).specified?E.value:E.text}if(o.nodeName(E,"select")){var I=E.selectedIndex,L=[],M=E.options,H=E.type=="select-one";if(I<0){return null}for(var F=H?I:0,J=H?I+1:M.length;F<J;F++){var G=M[F];if(G.selected){K=o(G).val();if(H){return K}L.push(K)}}return L}return(E.value||"").replace(/\r/g,"")}return g}if(typeof K==="number"){K+=""}return this.each(function(){if(this.nodeType!=1){return}if(o.isArray(K)&&/radio|checkbox/.test(this.type)){this.checked=(o.inArray(this.value,K)>=0||o.inArray(this.name,K)>=0)}else{if(o.nodeName(this,"select")){var N=o.makeArray(K);o("option",this).each(function(){this.selected=(o.inArray(this.value,N)>=0||o.inArray(this.text,N)>=0)});if(!N.length){this.selectedIndex=-1}}else{this.value=K}}})},html:function(E){return E===g?(this[0]?this[0].innerHTML.replace(/ jQuery\d+="(?:\d+|null)"/g,""):null):this.empty().append(E)},replaceWith:function(E){return this.after(E).remove()},eq:function(E){return this.slice(E,+E+1)},slice:function(){return this.pushStack(Array.prototype.slice.apply(this,arguments),"slice",Array.prototype.slice.call(arguments).join(","))},map:function(E){return this.pushStack(o.map(this,function(G,F){return E.call(G,F,G)}))},andSelf:function(){return this.add(this.prevObject)},domManip:function(J,M,L){if(this[0]){var I=(this[0].ownerDocument||this[0]).createDocumentFragment(),F=o.clean(J,(this[0].ownerDocument||this[0]),I),H=I.firstChild;if(H){for(var G=0,E=this.length;G<E;G++){L.call(K(this[G],H),this.length>1||G>0?I.cloneNode(true):I)}}if(F){o.each(F,z)}}return this;function K(N,O){return M&&o.nodeName(N,"table")&&o.nodeName(O,"tr")?(N.getElementsByTagName("tbody")[0]||N.appendChild(N.ownerDocument.createElement("tbody"))):N}}};o.fn.init.prototype=o.fn;function z(E,F){if(F.src){o.ajax({url:F.src,async:false,dataType:"script"})}else{o.globalEval(F.text||F.textContent||F.innerHTML||"")}if(F.parentNode){F.parentNode.removeChild(F)}}function e(){return +new Date}o.extend=o.fn.extend=function(){var J=arguments[0]||{},H=1,I=arguments.length,E=false,G;if(typeof J==="boolean"){E=J;J=arguments[1]||{};H=2}if(typeof J!=="object"&&!o.isFunction(J)){J={}}if(I==H){J=this;--H}for(;H<I;H++){if((G=arguments[H])!=null){for(var F in G){var K=J[F],L=G[F];if(J===L){continue}if(E&&L&&typeof L==="object"&&!L.nodeType){J[F]=o.extend(E,K||(L.length!=null?[]:{}),L)}else{if(L!==g){J[F]=L}}}}}return J};var b=/z-?index|font-?weight|opacity|zoom|line-?height/i,q=document.defaultView||{},s=Object.prototype.toString;o.extend({noConflict:function(E){l.$=p;if(E){l.jQuery=y}return o},isFunction:function(E){return s.call(E)==="[object Function]"},isArray:function(E){return s.call(E)==="[object Array]"},isXMLDoc:function(E){return E.nodeType===9&&E.documentElement.nodeName!=="HTML"||!!E.ownerDocument&&o.isXMLDoc(E.ownerDocument)},globalEval:function(G){if(G&&/\S/.test(G)){var F=document.getElementsByTagName("head")[0]||document.documentElement,E=document.createElement("script");E.type="text/javascript";if(o.support.scriptEval){E.appendChild(document.createTextNode(G))}else{E.text=G}F.insertBefore(E,F.firstChild);F.removeChild(E)}},nodeName:function(F,E){return F.nodeName&&F.nodeName.toUpperCase()==E.toUpperCase()},each:function(G,K,F){var E,H=0,I=G.length;if(F){if(I===g){for(E in G){if(K.apply(G[E],F)===false){break}}}else{for(;H<I;){if(K.apply(G[H++],F)===false){break}}}}else{if(I===g){for(E in G){if(K.call(G[E],E,G[E])===false){break}}}else{for(var J=G[0];H<I&&K.call(J,H,J)!==false;J=G[++H]){}}}return G},prop:function(H,I,G,F,E){if(o.isFunction(I)){I=I.call(H,F)}return typeof I==="number"&&G=="curCSS"&&!b.test(E)?I+"px":I},className:{add:function(E,F){o.each((F||"").split(/\s+/),function(G,H){if(E.nodeType==1&&!o.className.has(E.className,H)){E.className+=(E.className?" ":"")+H}})},remove:function(E,F){if(E.nodeType==1){E.className=F!==g?o.grep(E.className.split(/\s+/),function(G){return !o.className.has(F,G)}).join(" "):""}},has:function(F,E){return F&&o.inArray(E,(F.className||F).toString().split(/\s+/))>-1}},swap:function(H,G,I){var E={};for(var F in G){E[F]=H.style[F];H.style[F]=G[F]}I.call(H);for(var F in G){H.style[F]=E[F]}},css:function(H,F,J,E){if(F=="width"||F=="height"){var L,G={position:"absolute",visibility:"hidden",display:"block"},K=F=="width"?["Left","Right"]:["Top","Bottom"];function I(){L=F=="width"?H.offsetWidth:H.offsetHeight;if(E==="border"){return}o.each(K,function(){if(!E){L-=parseFloat(o.curCSS(H,"padding"+this,true))||0}if(E==="margin"){L+=parseFloat(o.curCSS(H,"margin"+this,true))||0}else{L-=parseFloat(o.curCSS(H,"border"+this+"Width",true))||0}})}if(H.offsetWidth!==0){I()}else{o.swap(H,G,I)}return Math.max(0,Math.round(L))}return o.curCSS(H,F,J)},curCSS:function(I,F,G){var L,E=I.style;if(F=="opacity"&&!o.support.opacity){L=o.attr(E,"opacity");return L==""?"1":L}if(F.match(/float/i)){F=w}if(!G&&E&&E[F]){L=E[F]}else{if(q.getComputedStyle){if(F.match(/float/i)){F="float"}F=F.replace(/([A-Z])/g,"-$1").toLowerCase();var M=q.getComputedStyle(I,null);if(M){L=M.getPropertyValue(F)}if(F=="opacity"&&L==""){L="1"}}else{if(I.currentStyle){var J=F.replace(/\-(\w)/g,function(N,O){return O.toUpperCase()});L=I.currentStyle[F]||I.currentStyle[J];if(!/^\d+(px)?$/i.test(L)&&/^\d/.test(L)){var H=E.left,K=I.runtimeStyle.left;I.runtimeStyle.left=I.currentStyle.left;E.left=L||0;L=E.pixelLeft+"px";E.left=H;I.runtimeStyle.left=K}}}}return L},clean:function(F,K,I){K=K||document;if(typeof K.createElement==="undefined"){K=K.ownerDocument||K[0]&&K[0].ownerDocument||document}if(!I&&F.length===1&&typeof F[0]==="string"){var H=/^<(\w+)\s*\/?>$/.exec(F[0]);if(H){return[K.createElement(H[1])]}}var G=[],E=[],L=K.createElement("div");o.each(F,function(P,S){if(typeof S==="number"){S+=""}if(!S){return}if(typeof S==="string"){S=S.replace(/(<(\w+)[^>]*?)\/>/g,function(U,V,T){return T.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?U:V+"></"+T+">"});var O=S.replace(/^\s+/,"").substring(0,10).toLowerCase();var Q=!O.indexOf("<opt")&&[1,"<select multiple='multiple'>","</select>"]||!O.indexOf("<leg")&&[1,"<fieldset>","</fieldset>"]||O.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"<table>","</table>"]||!O.indexOf("<tr")&&[2,"<table><tbody>","</tbody></table>"]||(!O.indexOf("<td")||!O.indexOf("<th"))&&[3,"<table><tbody><tr>","</tr></tbody></table>"]||!O.indexOf("<col")&&[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"]||!o.support.htmlSerialize&&[1,"div<div>","</div>"]||[0,"",""];L.innerHTML=Q[1]+S+Q[2];while(Q[0]--){L=L.lastChild}if(!o.support.tbody){var R=/<tbody/i.test(S),N=!O.indexOf("<table")&&!R?L.firstChild&&L.firstChild.childNodes:Q[1]=="<table>"&&!R?L.childNodes:[];for(var M=N.length-1;M>=0;--M){if(o.nodeName(N[M],"tbody")&&!N[M].childNodes.length){N[M].parentNode.removeChild(N[M])}}}if(!o.support.leadingWhitespace&&/^\s/.test(S)){L.insertBefore(K.createTextNode(S.match(/^\s*/)[0]),L.firstChild)}S=o.makeArray(L.childNodes)}if(S.nodeType){G.push(S)}else{G=o.merge(G,S)}});if(I){for(var J=0;G[J];J++){if(o.nodeName(G[J],"script")&&(!G[J].type||G[J].type.toLowerCase()==="text/javascript")){E.push(G[J].parentNode?G[J].parentNode.removeChild(G[J]):G[J])}else{if(G[J].nodeType===1){G.splice.apply(G,[J+1,0].concat(o.makeArray(G[J].getElementsByTagName("script"))))}I.appendChild(G[J])}}return E}return G},attr:function(J,G,K){if(!J||J.nodeType==3||J.nodeType==8){return g}var H=!o.isXMLDoc(J),L=K!==g;G=H&&o.props[G]||G;if(J.tagName){var F=/href|src|style/.test(G);if(G=="selected"&&J.parentNode){J.parentNode.selectedIndex}if(G in J&&H&&!F){if(L){if(G=="type"&&o.nodeName(J,"input")&&J.parentNode){throw"type property can't be changed"}J[G]=K}if(o.nodeName(J,"form")&&J.getAttributeNode(G)){return J.getAttributeNode(G).nodeValue}if(G=="tabIndex"){var I=J.getAttributeNode("tabIndex");return I&&I.specified?I.value:J.nodeName.match(/(button|input|object|select|textarea)/i)?0:J.nodeName.match(/^(a|area)$/i)&&J.href?0:g}return J[G]}if(!o.support.style&&H&&G=="style"){return o.attr(J.style,"cssText",K)}if(L){J.setAttribute(G,""+K)}var E=!o.support.hrefNormalized&&H&&F?J.getAttribute(G,2):J.getAttribute(G);return E===null?g:E}if(!o.support.opacity&&G=="opacity"){if(L){J.zoom=1;J.filter=(J.filter||"").replace(/alpha\([^)]*\)/,"")+(parseInt(K)+""=="NaN"?"":"alpha(opacity="+K*100+")")}return J.filter&&J.filter.indexOf("opacity=")>=0?(parseFloat(J.filter.match(/opacity=([^)]*)/)[1])/100)+"":""}G=G.replace(/-([a-z])/ig,function(M,N){return N.toUpperCase()});if(L){J[G]=K}return J[G]},trim:function(E){return(E||"").replace(/^\s+|\s+$/g,"")},makeArray:function(G){var E=[];if(G!=null){var F=G.length;if(F==null||typeof G==="string"||o.isFunction(G)||G.setInterval){E[0]=G}else{while(F){E[--F]=G[F]}}}return E},inArray:function(G,H){for(var E=0,F=H.length;E<F;E++){if(H[E]===G){return E}}return -1},merge:function(H,E){var F=0,G,I=H.length;if(!o.support.getAll){while((G=E[F++])!=null){if(G.nodeType!=8){H[I++]=G}}}else{while((G=E[F++])!=null){H[I++]=G}}return H},unique:function(K){var F=[],E={};try{for(var G=0,H=K.length;G<H;G++){var J=o.data(K[G]);if(!E[J]){E[J]=true;F.push(K[G])}}}catch(I){F=K}return F},grep:function(F,J,E){var G=[];for(var H=0,I=F.length;H<I;H++){if(!E!=!J(F[H],H)){G.push(F[H])}}return G},map:function(E,J){var F=[];for(var G=0,H=E.length;G<H;G++){var I=J(E[G],G);if(I!=null){F[F.length]=I}}return F.concat.apply([],F)}});var C=navigator.userAgent.toLowerCase();o.browser={version:(C.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/)||[0,"0"])[1],safari:/webkit/.test(C),opera:/opera/.test(C),msie:/msie/.test(C)&&!/opera/.test(C),mozilla:/mozilla/.test(C)&&!/(compatible|webkit)/.test(C)};o.each({parent:function(E){return E.parentNode},parents:function(E){return o.dir(E,"parentNode")},next:function(E){return o.nth(E,2,"nextSibling")},prev:function(E){return o.nth(E,2,"previousSibling")},nextAll:function(E){return o.dir(E,"nextSibling")},prevAll:function(E){return o.dir(E,"previousSibling")},siblings:function(E){return o.sibling(E.parentNode.firstChild,E)},children:function(E){return o.sibling(E.firstChild)},contents:function(E){return o.nodeName(E,"iframe")?E.contentDocument||E.contentWindow.document:o.makeArray(E.childNodes)}},function(E,F){o.fn[E]=function(G){var H=o.map(this,F);if(G&&typeof G=="string"){H=o.multiFilter(G,H)}return this.pushStack(o.unique(H),E,G)}});o.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(E,F){o.fn[E]=function(G){var J=[],L=o(G);for(var K=0,H=L.length;K<H;K++){var I=(K>0?this.clone(true):this).get();o.fn[F].apply(o(L[K]),I);J=J.concat(I)}return this.pushStack(J,E,G)}});o.each({removeAttr:function(E){o.attr(this,E,"");if(this.nodeType==1){this.removeAttribute(E)}},addClass:function(E){o.className.add(this,E)},removeClass:function(E){o.className.remove(this,E)},toggleClass:function(F,E){if(typeof E!=="boolean"){E=!o.className.has(this,F)}o.className[E?"add":"remove"](this,F)},remove:function(E){if(!E||o.filter(E,[this]).length){o("*",this).add([this]).each(function(){o.event.remove(this);o.removeData(this)});if(this.parentNode){this.parentNode.removeChild(this)}}},empty:function(){o(this).children().remove();while(this.firstChild){this.removeChild(this.firstChild)}}},function(E,F){o.fn[E]=function(){return this.each(F,arguments)}});function j(E,F){return E[0]&&parseInt(o.curCSS(E[0],F,true),10)||0}var h="jQuery"+e(),v=0,A={};o.extend({cache:{},data:function(F,E,G){F=F==l?A:F;var H=F[h];if(!H){H=F[h]=++v}if(E&&!o.cache[H]){o.cache[H]={}}if(G!==g){o.cache[H][E]=G}return E?o.cache[H][E]:H},removeData:function(F,E){F=F==l?A:F;var H=F[h];if(E){if(o.cache[H]){delete o.cache[H][E];E="";for(E in o.cache[H]){break}if(!E){o.removeData(F)}}}else{try{delete F[h]}catch(G){if(F.removeAttribute){F.removeAttribute(h)}}delete o.cache[H]}},queue:function(F,E,H){if(F){E=(E||"fx")+"queue";var G=o.data(F,E);if(!G||o.isArray(H)){G=o.data(F,E,o.makeArray(H))}else{if(H){G.push(H)}}}return G},dequeue:function(H,G){var E=o.queue(H,G),F=E.shift();if(!G||G==="fx"){F=E[0]}if(F!==g){F.call(H)}}});o.fn.extend({data:function(E,G){var H=E.split(".");H[1]=H[1]?"."+H[1]:"";if(G===g){var F=this.triggerHandler("getData"+H[1]+"!",[H[0]]);if(F===g&&this.length){F=o.data(this[0],E)}return F===g&&H[1]?this.data(H[0]):F}else{return this.trigger("setData"+H[1]+"!",[H[0],G]).each(function(){o.data(this,E,G)})}},removeData:function(E){return this.each(function(){o.removeData(this,E)})},queue:function(E,F){if(typeof E!=="string"){F=E;E="fx"}if(F===g){return o.queue(this[0],E)}return this.each(function(){var G=o.queue(this,E,F);if(E=="fx"&&G.length==1){G[0].call(this)}})},dequeue:function(E){return this.each(function(){o.dequeue(this,E)})}});
-/*
- * Sizzle CSS Selector Engine - v0.9.3
- * Copyright 2009, The Dojo Foundation
- * Released under the MIT, BSD, and GPL Licenses.
- * More information: http://sizzlejs.com/
+ * Includes Sizzle.js
+ * http://sizzlejs.com/
+ * Copyright 2010, The Dojo Foundation
+ * Released under the MIT, BSD, and GPL Licenses.
+ *
+ * Date: Mon Jan 25 19:43:33 2010 -0500
*/
-(function(){var R=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g,L=0,H=Object.prototype.toString;var F=function(Y,U,ab,ac){ab=ab||[];U=U||document;if(U.nodeType!==1&&U.nodeType!==9){return[]}if(!Y||typeof Y!=="string"){return ab}var Z=[],W,af,ai,T,ad,V,X=true;R.lastIndex=0;while((W=R.exec(Y))!==null){Z.push(W[1]);if(W[2]){V=RegExp.rightContext;break}}if(Z.length>1&&M.exec(Y)){if(Z.length===2&&I.relative[Z[0]]){af=J(Z[0]+Z[1],U)}else{af=I.relative[Z[0]]?[U]:F(Z.shift(),U);while(Z.length){Y=Z.shift();if(I.relative[Y]){Y+=Z.shift()}af=J(Y,af)}}}else{var ae=ac?{expr:Z.pop(),set:E(ac)}:F.find(Z.pop(),Z.length===1&&U.parentNode?U.parentNode:U,Q(U));af=F.filter(ae.expr,ae.set);if(Z.length>0){ai=E(af)}else{X=false}while(Z.length){var ah=Z.pop(),ag=ah;if(!I.relative[ah]){ah=""}else{ag=Z.pop()}if(ag==null){ag=U}I.relative[ah](ai,ag,Q(U))}}if(!ai){ai=af}if(!ai){throw"Syntax error, unrecognized expression: "+(ah||Y)}if(H.call(ai)==="[object Array]"){if(!X){ab.push.apply(ab,ai)}else{if(U.nodeType===1){for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&(ai[aa]===true||ai[aa].nodeType===1&&K(U,ai[aa]))){ab.push(af[aa])}}}else{for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&ai[aa].nodeType===1){ab.push(af[aa])}}}}}else{E(ai,ab)}if(V){F(V,U,ab,ac);if(G){hasDuplicate=false;ab.sort(G);if(hasDuplicate){for(var aa=1;aa<ab.length;aa++){if(ab[aa]===ab[aa-1]){ab.splice(aa--,1)}}}}}return ab};F.matches=function(T,U){return F(T,null,null,U)};F.find=function(aa,T,ab){var Z,X;if(!aa){return[]}for(var W=0,V=I.order.length;W<V;W++){var Y=I.order[W],X;if((X=I.match[Y].exec(aa))){var U=RegExp.leftContext;if(U.substr(U.length-1)!=="\\"){X[1]=(X[1]||"").replace(/\\/g,"");Z=I.find[Y](X,T,ab);if(Z!=null){aa=aa.replace(I.match[Y],"");break}}}}if(!Z){Z=T.getElementsByTagName("*")}return{set:Z,expr:aa}};F.filter=function(ad,ac,ag,W){var V=ad,ai=[],aa=ac,Y,T,Z=ac&&ac[0]&&Q(ac[0]);while(ad&&ac.length){for(var ab in I.filter){if((Y=I.match[ab].exec(ad))!=null){var U=I.filter[ab],ah,af;T=false;if(aa==ai){ai=[]}if(I.preFilter[ab]){Y=I.preFilter[ab](Y,aa,ag,ai,W,Z);if(!Y){T=ah=true}else{if(Y===true){continue}}}if(Y){for(var X=0;(af=aa[X])!=null;X++){if(af){ah=U(af,Y,X,aa);var ae=W^!!ah;if(ag&&ah!=null){if(ae){T=true}else{aa[X]=false}}else{if(ae){ai.push(af);T=true}}}}}if(ah!==g){if(!ag){aa=ai}ad=ad.replace(I.match[ab],"");if(!T){return[]}break}}}if(ad==V){if(T==null){throw"Syntax error, unrecognized expression: "+ad}else{break}}V=ad}return aa};var I=F.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF_-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF_-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*_-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF_-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(T){return T.getAttribute("href")}},relative:{"+":function(aa,T,Z){var X=typeof T==="string",ab=X&&!/\W/.test(T),Y=X&&!ab;if(ab&&!Z){T=T.toUpperCase()}for(var W=0,V=aa.length,U;W<V;W++){if((U=aa[W])){while((U=U.previousSibling)&&U.nodeType!==1){}aa[W]=Y||U&&U.nodeName===T?U||false:U===T}}if(Y){F.filter(T,aa,true)}},">":function(Z,U,aa){var X=typeof U==="string";if(X&&!/\W/.test(U)){U=aa?U:U.toUpperCase();for(var V=0,T=Z.length;V<T;V++){var Y=Z[V];if(Y){var W=Y.parentNode;Z[V]=W.nodeName===U?W:false}}}else{for(var V=0,T=Z.length;V<T;V++){var Y=Z[V];if(Y){Z[V]=X?Y.parentNode:Y.parentNode===U}}if(X){F.filter(U,Z,true)}}},"":function(W,U,Y){var V=L++,T=S;if(!U.match(/\W/)){var X=U=Y?U:U.toUpperCase();T=P}T("parentNode",U,V,W,X,Y)},"~":function(W,U,Y){var V=L++,T=S;if(typeof U==="string"&&!U.match(/\W/)){var X=U=Y?U:U.toUpperCase();T=P}T("previousSibling",U,V,W,X,Y)}},find:{ID:function(U,V,W){if(typeof V.getElementById!=="undefined"&&!W){var T=V.getElementById(U[1]);return T?[T]:[]}},NAME:function(V,Y,Z){if(typeof Y.getElementsByName!=="undefined"){var U=[],X=Y.getElementsByName(V[1]);for(var W=0,T=X.length;W<T;W++){if(X[W].getAttribute("name")===V[1]){U.push(X[W])}}return U.length===0?null:U}},TAG:function(T,U){return U.getElementsByTagName(T[1])}},preFilter:{CLASS:function(W,U,V,T,Z,aa){W=" "+W[1].replace(/\\/g,"")+" ";if(aa){return W}for(var X=0,Y;(Y=U[X])!=null;X++){if(Y){if(Z^(Y.className&&(" "+Y.className+" ").indexOf(W)>=0)){if(!V){T.push(Y)}}else{if(V){U[X]=false}}}}return false},ID:function(T){return T[1].replace(/\\/g,"")},TAG:function(U,T){for(var V=0;T[V]===false;V++){}return T[V]&&Q(T[V])?U[1]:U[1].toUpperCase()},CHILD:function(T){if(T[1]=="nth"){var U=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(T[2]=="even"&&"2n"||T[2]=="odd"&&"2n+1"||!/\D/.test(T[2])&&"0n+"+T[2]||T[2]);T[2]=(U[1]+(U[2]||1))-0;T[3]=U[3]-0}T[0]=L++;return T},ATTR:function(X,U,V,T,Y,Z){var W=X[1].replace(/\\/g,"");if(!Z&&I.attrMap[W]){X[1]=I.attrMap[W]}if(X[2]==="~="){X[4]=" "+X[4]+" "}return X},PSEUDO:function(X,U,V,T,Y){if(X[1]==="not"){if(X[3].match(R).length>1||/^\w/.test(X[3])){X[3]=F(X[3],null,null,U)}else{var W=F.filter(X[3],U,V,true^Y);if(!V){T.push.apply(T,W)}return false}}else{if(I.match.POS.test(X[0])||I.match.CHILD.test(X[0])){return true}}return X},POS:function(T){T.unshift(true);return T}},filters:{enabled:function(T){return T.disabled===false&&T.type!=="hidden"},disabled:function(T){return T.disabled===true},checked:function(T){return T.checked===true},selected:function(T){T.parentNode.selectedIndex;return T.selected===true},parent:function(T){return !!T.firstChild},empty:function(T){return !T.firstChild},has:function(V,U,T){return !!F(T[3],V).length},header:function(T){return/h\d/i.test(T.nodeName)},text:function(T){return"text"===T.type},radio:function(T){return"radio"===T.type},checkbox:function(T){return"checkbox"===T.type},file:function(T){return"file"===T.type},password:function(T){return"password"===T.type},submit:function(T){return"submit"===T.type},image:function(T){return"image"===T.type},reset:function(T){return"reset"===T.type},button:function(T){return"button"===T.type||T.nodeName.toUpperCase()==="BUTTON"},input:function(T){return/input|select|textarea|button/i.test(T.nodeName)}},setFilters:{first:function(U,T){return T===0},last:function(V,U,T,W){return U===W.length-1},even:function(U,T){return T%2===0},odd:function(U,T){return T%2===1},lt:function(V,U,T){return U<T[3]-0},gt:function(V,U,T){return U>T[3]-0},nth:function(V,U,T){return T[3]-0==U},eq:function(V,U,T){return T[3]-0==U}},filter:{PSEUDO:function(Z,V,W,aa){var U=V[1],X=I.filters[U];if(X){return X(Z,W,V,aa)}else{if(U==="contains"){return(Z.textContent||Z.innerText||"").indexOf(V[3])>=0}else{if(U==="not"){var Y=V[3];for(var W=0,T=Y.length;W<T;W++){if(Y[W]===Z){return false}}return true}}}},CHILD:function(T,W){var Z=W[1],U=T;switch(Z){case"only":case"first":while(U=U.previousSibling){if(U.nodeType===1){return false}}if(Z=="first"){return true}U=T;case"last":while(U=U.nextSibling){if(U.nodeType===1){return false}}return true;case"nth":var V=W[2],ac=W[3];if(V==1&&ac==0){return true}var Y=W[0],ab=T.parentNode;if(ab&&(ab.sizcache!==Y||!T.nodeIndex)){var X=0;for(U=ab.firstChild;U;U=U.nextSibling){if(U.nodeType===1){U.nodeIndex=++X}}ab.sizcache=Y}var aa=T.nodeIndex-ac;if(V==0){return aa==0}else{return(aa%V==0&&aa/V>=0)}}},ID:function(U,T){return U.nodeType===1&&U.getAttribute("id")===T},TAG:function(U,T){return(T==="*"&&U.nodeType===1)||U.nodeName===T},CLASS:function(U,T){return(" "+(U.className||U.getAttribute("class"))+" ").indexOf(T)>-1},ATTR:function(Y,W){var V=W[1],T=I.attrHandle[V]?I.attrHandle[V](Y):Y[V]!=null?Y[V]:Y.getAttribute(V),Z=T+"",X=W[2],U=W[4];return T==null?X==="!=":X==="="?Z===U:X==="*="?Z.indexOf(U)>=0:X==="~="?(" "+Z+" ").indexOf(U)>=0:!U?Z&&T!==false:X==="!="?Z!=U:X==="^="?Z.indexOf(U)===0:X==="$="?Z.substr(Z.length-U.length)===U:X==="|="?Z===U||Z.substr(0,U.length+1)===U+"-":false},POS:function(X,U,V,Y){var T=U[2],W=I.setFilters[T];if(W){return W(X,V,U,Y)}}}};var M=I.match.POS;for(var O in I.match){I.match[O]=RegExp(I.match[O].source+/(?![^\[]*\])(?![^\(]*\))/.source)}var E=function(U,T){U=Array.prototype.slice.call(U);if(T){T.push.apply(T,U);return T}return U};try{Array.prototype.slice.call(document.documentElement.childNodes)}catch(N){E=function(X,W){var U=W||[];if(H.call(X)==="[object Array]"){Array.prototype.push.apply(U,X)}else{if(typeof X.length==="number"){for(var V=0,T=X.length;V<T;V++){U.push(X[V])}}else{for(var V=0;X[V];V++){U.push(X[V])}}}return U}}var G;if(document.documentElement.compareDocumentPosition){G=function(U,T){var V=U.compareDocumentPosition(T)&4?-1:U===T?0:1;if(V===0){hasDuplicate=true}return V}}else{if("sourceIndex" in document.documentElement){G=function(U,T){var V=U.sourceIndex-T.sourceIndex;if(V===0){hasDuplicate=true}return V}}else{if(document.createRange){G=function(W,U){var V=W.ownerDocument.createRange(),T=U.ownerDocument.createRange();V.selectNode(W);V.collapse(true);T.selectNode(U);T.collapse(true);var X=V.compareBoundaryPoints(Range.START_TO_END,T);if(X===0){hasDuplicate=true}return X}}}}(function(){var U=document.createElement("form"),V="script"+(new Date).getTime();U.innerHTML="<input name='"+V+"'/>";var T=document.documentElement;T.insertBefore(U,T.firstChild);if(!!document.getElementById(V)){I.find.ID=function(X,Y,Z){if(typeof Y.getElementById!=="undefined"&&!Z){var W=Y.getElementById(X[1]);return W?W.id===X[1]||typeof W.getAttributeNode!=="undefined"&&W.getAttributeNode("id").nodeValue===X[1]?[W]:g:[]}};I.filter.ID=function(Y,W){var X=typeof Y.getAttributeNode!=="undefined"&&Y.getAttributeNode("id");return Y.nodeType===1&&X&&X.nodeValue===W}}T.removeChild(U)})();(function(){var T=document.createElement("div");T.appendChild(document.createComment(""));if(T.getElementsByTagName("*").length>0){I.find.TAG=function(U,Y){var X=Y.getElementsByTagName(U[1]);if(U[1]==="*"){var W=[];for(var V=0;X[V];V++){if(X[V].nodeType===1){W.push(X[V])}}X=W}return X}}T.innerHTML="<a href='#'></a>";if(T.firstChild&&typeof T.firstChild.getAttribute!=="undefined"&&T.firstChild.getAttribute("href")!=="#"){I.attrHandle.href=function(U){return U.getAttribute("href",2)}}})();if(document.querySelectorAll){(function(){var T=F,U=document.createElement("div");U.innerHTML="<p class='TEST'></p>";if(U.querySelectorAll&&U.querySelectorAll(".TEST").length===0){return}F=function(Y,X,V,W){X=X||document;if(!W&&X.nodeType===9&&!Q(X)){try{return E(X.querySelectorAll(Y),V)}catch(Z){}}return T(Y,X,V,W)};F.find=T.find;F.filter=T.filter;F.selectors=T.selectors;F.matches=T.matches})()}if(document.getElementsByClassName&&document.documentElement.getElementsByClassName){(function(){var T=document.createElement("div");T.innerHTML="<div class='test e'></div><div class='test'></div>";if(T.getElementsByClassName("e").length===0){return}T.lastChild.className="e";if(T.getElementsByClassName("e").length===1){return}I.order.splice(1,0,"CLASS");I.find.CLASS=function(U,V,W){if(typeof V.getElementsByClassName!=="undefined"&&!W){return V.getElementsByClassName(U[1])}}})()}function P(U,Z,Y,ad,aa,ac){var ab=U=="previousSibling"&&!ac;for(var W=0,V=ad.length;W<V;W++){var T=ad[W];if(T){if(ab&&T.nodeType===1){T.sizcache=Y;T.sizset=W}T=T[U];var X=false;while(T){if(T.sizcache===Y){X=ad[T.sizset];break}if(T.nodeType===1&&!ac){T.sizcache=Y;T.sizset=W}if(T.nodeName===Z){X=T;break}T=T[U]}ad[W]=X}}}function S(U,Z,Y,ad,aa,ac){var ab=U=="previousSibling"&&!ac;for(var W=0,V=ad.length;W<V;W++){var T=ad[W];if(T){if(ab&&T.nodeType===1){T.sizcache=Y;T.sizset=W}T=T[U];var X=false;while(T){if(T.sizcache===Y){X=ad[T.sizset];break}if(T.nodeType===1){if(!ac){T.sizcache=Y;T.sizset=W}if(typeof Z!=="string"){if(T===Z){X=true;break}}else{if(F.filter(Z,[T]).length>0){X=T;break}}}T=T[U]}ad[W]=X}}}var K=document.compareDocumentPosition?function(U,T){return U.compareDocumentPosition(T)&16}:function(U,T){return U!==T&&(U.contains?U.contains(T):true)};var Q=function(T){return T.nodeType===9&&T.documentElement.nodeName!=="HTML"||!!T.ownerDocument&&Q(T.ownerDocument)};var J=function(T,aa){var W=[],X="",Y,V=aa.nodeType?[aa]:aa;while((Y=I.match.PSEUDO.exec(T))){X+=Y[0];T=T.replace(I.match.PSEUDO,"")}T=I.relative[T]?T+"*":T;for(var Z=0,U=V.length;Z<U;Z++){F(T,V[Z],W)}return F.filter(X,W)};o.find=F;o.filter=F.filter;o.expr=F.selectors;o.expr[":"]=o.expr.filters;F.selectors.filters.hidden=function(T){return T.offsetWidth===0||T.offsetHeight===0};F.selectors.filters.visible=function(T){return T.offsetWidth>0||T.offsetHeight>0};F.selectors.filters.animated=function(T){return o.grep(o.timers,function(U){return T===U.elem}).length};o.multiFilter=function(V,T,U){if(U){V=":not("+V+")"}return F.matches(V,T)};o.dir=function(V,U){var T=[],W=V[U];while(W&&W!=document){if(W.nodeType==1){T.push(W)}W=W[U]}return T};o.nth=function(X,T,V,W){T=T||1;var U=0;for(;X;X=X[V]){if(X.nodeType==1&&++U==T){break}}return X};o.sibling=function(V,U){var T=[];for(;V;V=V.nextSibling){if(V.nodeType==1&&V!=U){T.push(V)}}return T};return;l.Sizzle=F})();o.event={add:function(I,F,H,K){if(I.nodeType==3||I.nodeType==8){return}if(I.setInterval&&I!=l){I=l}if(!H.guid){H.guid=this.guid++}if(K!==g){var G=H;H=this.proxy(G);H.data=K}var E=o.data(I,"events")||o.data(I,"events",{}),J=o.data(I,"handle")||o.data(I,"handle",function(){return typeof o!=="undefined"&&!o.event.triggered?o.event.handle.apply(arguments.callee.elem,arguments):g});J.elem=I;o.each(F.split(/\s+/),function(M,N){var O=N.split(".");N=O.shift();H.type=O.slice().sort().join(".");var L=E[N];if(o.event.specialAll[N]){o.event.specialAll[N].setup.call(I,K,O)}if(!L){L=E[N]={};if(!o.event.special[N]||o.event.special[N].setup.call(I,K,O)===false){if(I.addEventListener){I.addEventListener(N,J,false)}else{if(I.attachEvent){I.attachEvent("on"+N,J)}}}}L[H.guid]=H;o.event.global[N]=true});I=null},guid:1,global:{},remove:function(K,H,J){if(K.nodeType==3||K.nodeType==8){return}var G=o.data(K,"events"),F,E;if(G){if(H===g||(typeof H==="string"&&H.charAt(0)==".")){for(var I in G){this.remove(K,I+(H||""))}}else{if(H.type){J=H.handler;H=H.type}o.each(H.split(/\s+/),function(M,O){var Q=O.split(".");O=Q.shift();var N=RegExp("(^|\\.)"+Q.slice().sort().join(".*\\.")+"(\\.|$)");if(G[O]){if(J){delete G[O][J.guid]}else{for(var P in G[O]){if(N.test(G[O][P].type)){delete G[O][P]}}}if(o.event.specialAll[O]){o.event.specialAll[O].teardown.call(K,Q)}for(F in G[O]){break}if(!F){if(!o.event.special[O]||o.event.special[O].teardown.call(K,Q)===false){if(K.removeEventListener){K.removeEventListener(O,o.data(K,"handle"),false)}else{if(K.detachEvent){K.detachEvent("on"+O,o.data(K,"handle"))}}}F=null;delete G[O]}}})}for(F in G){break}if(!F){var L=o.data(K,"handle");if(L){L.elem=null}o.removeData(K,"events");o.removeData(K,"handle")}}},trigger:function(I,K,H,E){var G=I.type||I;if(!E){I=typeof I==="object"?I[h]?I:o.extend(o.Event(G),I):o.Event(G);if(G.indexOf("!")>=0){I.type=G=G.slice(0,-1);I.exclusive=true}if(!H){I.stopPropagation();if(this.global[G]){o.each(o.cache,function(){if(this.events&&this.events[G]){o.event.trigger(I,K,this.handle.elem)}})}}if(!H||H.nodeType==3||H.nodeType==8){return g}I.result=g;I.target=H;K=o.makeArray(K);K.unshift(I)}I.currentTarget=H;var J=o.data(H,"handle");if(J){J.apply(H,K)}if((!H[G]||(o.nodeName(H,"a")&&G=="click"))&&H["on"+G]&&H["on"+G].apply(H,K)===false){I.result=false}if(!E&&H[G]&&!I.isDefaultPrevented()&&!(o.nodeName(H,"a")&&G=="click")){this.triggered=true;try{H[G]()}catch(L){}}this.triggered=false;if(!I.isPropagationStopped()){var F=H.parentNode||H.ownerDocument;if(F){o.event.trigger(I,K,F,true)}}},handle:function(K){var J,E;K=arguments[0]=o.event.fix(K||l.event);K.currentTarget=this;var L=K.type.split(".");K.type=L.shift();J=!L.length&&!K.exclusive;var I=RegExp("(^|\\.)"+L.slice().sort().join(".*\\.")+"(\\.|$)");E=(o.data(this,"events")||{})[K.type];for(var G in E){var H=E[G];if(J||I.test(H.type)){K.handler=H;K.data=H.data;var F=H.apply(this,arguments);if(F!==g){K.result=F;if(F===false){K.preventDefault();K.stopPropagation()}}if(K.isImmediatePropagationStopped()){break}}}},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(H){if(H[h]){return H}var F=H;H=o.Event(F);for(var G=this.props.length,J;G;){J=this.props[--G];H[J]=F[J]}if(!H.target){H.target=H.srcElement||document}if(H.target.nodeType==3){H.target=H.target.parentNode}if(!H.relatedTarget&&H.fromElement){H.relatedTarget=H.fromElement==H.target?H.toElement:H.fromElement}if(H.pageX==null&&H.clientX!=null){var I=document.documentElement,E=document.body;H.pageX=H.clientX+(I&&I.scrollLeft||E&&E.scrollLeft||0)-(I.clientLeft||0);H.pageY=H.clientY+(I&&I.scrollTop||E&&E.scrollTop||0)-(I.clientTop||0)}if(!H.which&&((H.charCode||H.charCode===0)?H.charCode:H.keyCode)){H.which=H.charCode||H.keyCode}if(!H.metaKey&&H.ctrlKey){H.metaKey=H.ctrlKey}if(!H.which&&H.button){H.which=(H.button&1?1:(H.button&2?3:(H.button&4?2:0)))}return H},proxy:function(F,E){E=E||function(){return F.apply(this,arguments)};E.guid=F.guid=F.guid||E.guid||this.guid++;return E},special:{ready:{setup:B,teardown:function(){}}},specialAll:{live:{setup:function(E,F){o.event.add(this,F[0],c)},teardown:function(G){if(G.length){var E=0,F=RegExp("(^|\\.)"+G[0]+"(\\.|$)");o.each((o.data(this,"events").live||{}),function(){if(F.test(this.type)){E++}});if(E<1){o.event.remove(this,G[0],c)}}}}}};o.Event=function(E){if(!this.preventDefault){return new o.Event(E)}if(E&&E.type){this.originalEvent=E;this.type=E.type}else{this.type=E}this.timeStamp=e();this[h]=true};function k(){return false}function u(){return true}o.Event.prototype={preventDefault:function(){this.isDefaultPrevented=u;var E=this.originalEvent;if(!E){return}if(E.preventDefault){E.preventDefault()}E.returnValue=false},stopPropagation:function(){this.isPropagationStopped=u;var E=this.originalEvent;if(!E){return}if(E.stopPropagation){E.stopPropagation()}E.cancelBubble=true},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=u;this.stopPropagation()},isDefaultPrevented:k,isPropagationStopped:k,isImmediatePropagationStopped:k};var a=function(F){var E=F.relatedTarget;while(E&&E!=this){try{E=E.parentNode}catch(G){E=this}}if(E!=this){F.type=F.data;o.event.handle.apply(this,arguments)}};o.each({mouseover:"mouseenter",mouseout:"mouseleave"},function(F,E){o.event.special[E]={setup:function(){o.event.add(this,F,a,E)},teardown:function(){o.event.remove(this,F,a)}}});o.fn.extend({bind:function(F,G,E){return F=="unload"?this.one(F,G,E):this.each(function(){o.event.add(this,F,E||G,E&&G)})},one:function(G,H,F){var E=o.event.proxy(F||H,function(I){o(this).unbind(I,E);return(F||H).apply(this,arguments)});return this.each(function(){o.event.add(this,G,E,F&&H)})},unbind:function(F,E){return this.each(function(){o.event.remove(this,F,E)})},trigger:function(E,F){return this.each(function(){o.event.trigger(E,F,this)})},triggerHandler:function(E,G){if(this[0]){var F=o.Event(E);F.preventDefault();F.stopPropagation();o.event.trigger(F,G,this[0]);return F.result}},toggle:function(G){var E=arguments,F=1;while(F<E.length){o.event.proxy(G,E[F++])}return this.click(o.event.proxy(G,function(H){this.lastToggle=(this.lastToggle||0)%F;H.preventDefault();return E[this.lastToggle++].apply(this,arguments)||false}))},hover:function(E,F){return this.mouseenter(E).mouseleave(F)},ready:function(E){B();if(o.isReady){E.call(document,o)}else{o.readyList.push(E)}return this},live:function(G,F){var E=o.event.proxy(F);E.guid+=this.selector+G;o(document).bind(i(G,this.selector),this.selector,E);return this},die:function(F,E){o(document).unbind(i(F,this.selector),E?{guid:E.guid+this.selector+F}:null);return this}});function c(H){var E=RegExp("(^|\\.)"+H.type+"(\\.|$)"),G=true,F=[];o.each(o.data(this,"events").live||[],function(I,J){if(E.test(J.type)){var K=o(H.target).closest(J.data)[0];if(K){F.push({elem:K,fn:J})}}});F.sort(function(J,I){return o.data(J.elem,"closest")-o.data(I.elem,"closest")});o.each(F,function(){if(this.fn.call(this.elem,H,this.fn.data)===false){return(G=false)}});return G}function i(F,E){return["live",F,E.replace(/\./g,"`").replace(/ /g,"|")].join(".")}o.extend({isReady:false,readyList:[],ready:function(){if(!o.isReady){o.isReady=true;if(o.readyList){o.each(o.readyList,function(){this.call(document,o)});o.readyList=null}o(document).triggerHandler("ready")}}});var x=false;function B(){if(x){return}x=true;if(document.addEventListener){document.addEventListener("DOMContentLoaded",function(){document.removeEventListener("DOMContentLoaded",arguments.callee,false);o.ready()},false)}else{if(document.attachEvent){document.attachEvent("onreadystatechange",function(){if(document.readyState==="complete"){document.detachEvent("onreadystatechange",arguments.callee);o.ready()}});if(document.documentElement.doScroll&&l==l.top){(function(){if(o.isReady){return}try{document.documentElement.doScroll("left")}catch(E){setTimeout(arguments.callee,0);return}o.ready()})()}}}o.event.add(l,"load",o.ready)}o.each(("blur,focus,load,resize,scroll,unload,click,dblclick,mousedown,mouseup,mousemove,mouseover,mouseout,mouseenter,mouseleave,change,select,submit,keydown,keypress,keyup,error").split(","),function(F,E){o.fn[E]=function(G){return G?this.bind(E,G):this.trigger(E)}});o(l).bind("unload",function(){for(var E in o.cache){if(E!=1&&o.cache[E].handle){o.event.remove(o.cache[E].handle.elem)}}});(function(){o.support={};var F=document.documentElement,G=document.createElement("script"),K=document.createElement("div"),J="script"+(new Date).getTime();K.style.display="none";K.innerHTML=' <link/><table></table><a href="/a" style="color:red;float:left;opacity:.5;">a</a><select><option>text</option></select><object><param/></object>';var H=K.getElementsByTagName("*"),E=K.getElementsByTagName("a")[0];if(!H||!H.length||!E){return}o.support={leadingWhitespace:K.firstChild.nodeType==3,tbody:!K.getElementsByTagName("tbody").length,objectAll:!!K.getElementsByTagName("object")[0].getElementsByTagName("*").length,htmlSerialize:!!K.getElementsByTagName("link").length,style:/red/.test(E.getAttribute("style")),hrefNormalized:E.getAttribute("href")==="/a",opacity:E.style.opacity==="0.5",cssFloat:!!E.style.cssFloat,scriptEval:false,noCloneEvent:true,boxModel:null};G.type="text/javascript";try{G.appendChild(document.createTextNode("window."+J+"=1;"))}catch(I){}F.insertBefore(G,F.firstChild);if(l[J]){o.support.scriptEval=true;delete l[J]}F.removeChild(G);if(K.attachEvent&&K.fireEvent){K.attachEvent("onclick",function(){o.support.noCloneEvent=false;K.detachEvent("onclick",arguments.callee)});K.cloneNode(true).fireEvent("onclick")}o(function(){var L=document.createElement("div");L.style.width=L.style.paddingLeft="1px";document.body.appendChild(L);o.boxModel=o.support.boxModel=L.offsetWidth===2;document.body.removeChild(L).style.display="none"})})();var w=o.support.cssFloat?"cssFloat":"styleFloat";o.props={"for":"htmlFor","class":"className","float":w,cssFloat:w,styleFloat:w,readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",tabindex:"tabIndex"};o.fn.extend({_load:o.fn.load,load:function(G,J,K){if(typeof G!=="string"){return this._load(G)}var I=G.indexOf(" ");if(I>=0){var E=G.slice(I,G.length);G=G.slice(0,I)}var H="GET";if(J){if(o.isFunction(J)){K=J;J=null}else{if(typeof J==="object"){J=o.param(J);H="POST"}}}var F=this;o.ajax({url:G,type:H,dataType:"html",data:J,complete:function(M,L){if(L=="success"||L=="notmodified"){F.html(E?o("<div/>").append(M.responseText.replace(/<script(.|\s)*?\/script>/g,"")).find(E):M.responseText)}if(K){F.each(K,[M.responseText,L,M])}}});return this},serialize:function(){return o.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?o.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password|search/i.test(this.type))}).map(function(E,F){var G=o(this).val();return G==null?null:o.isArray(G)?o.map(G,function(I,H){return{name:F.name,value:I}}):{name:F.name,value:G}}).get()}});o.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(E,F){o.fn[F]=function(G){return this.bind(F,G)}});var r=e();o.extend({get:function(E,G,H,F){if(o.isFunction(G)){H=G;G=null}return o.ajax({type:"GET",url:E,data:G,success:H,dataType:F})},getScript:function(E,F){return o.get(E,null,F,"script")},getJSON:function(E,F,G){return o.get(E,F,G,"json")},post:function(E,G,H,F){if(o.isFunction(G)){H=G;G={}}return o.ajax({type:"POST",url:E,data:G,success:H,dataType:F})},ajaxSetup:function(E){o.extend(o.ajaxSettings,E)},ajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:function(){return l.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest()},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:function(M){M=o.extend(true,M,o.extend(true,{},o.ajaxSettings,M));var W,F=/=\?(&|$)/g,R,V,G=M.type.toUpperCase();if(M.data&&M.processData&&typeof M.data!=="string"){M.data=o.param(M.data)}if(M.dataType=="jsonp"){if(G=="GET"){if(!M.url.match(F)){M.url+=(M.url.match(/\?/)?"&":"?")+(M.jsonp||"callback")+"=?"}}else{if(!M.data||!M.data.match(F)){M.data=(M.data?M.data+"&":"")+(M.jsonp||"callback")+"=?"}}M.dataType="json"}if(M.dataType=="json"&&(M.data&&M.data.match(F)||M.url.match(F))){W="jsonp"+r++;if(M.data){M.data=(M.data+"").replace(F,"="+W+"$1")}M.url=M.url.replace(F,"="+W+"$1");M.dataType="script";l[W]=function(X){V=X;I();L();l[W]=g;try{delete l[W]}catch(Y){}if(H){H.removeChild(T)}}}if(M.dataType=="script"&&M.cache==null){M.cache=false}if(M.cache===false&&G=="GET"){var E=e();var U=M.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+E+"$2");M.url=U+((U==M.url)?(M.url.match(/\?/)?"&":"?")+"_="+E:"")}if(M.data&&G=="GET"){M.url+=(M.url.match(/\?/)?"&":"?")+M.data;M.data=null}if(M.global&&!o.active++){o.event.trigger("ajaxStart")}var Q=/^(\w+:)?\/\/([^\/?#]+)/.exec(M.url);if(M.dataType=="script"&&G=="GET"&&Q&&(Q[1]&&Q[1]!=location.protocol||Q[2]!=location.host)){var H=document.getElementsByTagName("head")[0];var T=document.createElement("script");T.src=M.url;if(M.scriptCharset){T.charset=M.scriptCharset}if(!W){var O=false;T.onload=T.onreadystatechange=function(){if(!O&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){O=true;I();L();T.onload=T.onreadystatechange=null;H.removeChild(T)}}}H.appendChild(T);return g}var K=false;var J=M.xhr();if(M.username){J.open(G,M.url,M.async,M.username,M.password)}else{J.open(G,M.url,M.async)}try{if(M.data){J.setRequestHeader("Content-Type",M.contentType)}if(M.ifModified){J.setRequestHeader("If-Modified-Since",o.lastModified[M.url]||"Thu, 01 Jan 1970 00:00:00 GMT")}J.setRequestHeader("X-Requested-With","XMLHttpRequest");J.setRequestHeader("Accept",M.dataType&&M.accepts[M.dataType]?M.accepts[M.dataType]+", */*":M.accepts._default)}catch(S){}if(M.beforeSend&&M.beforeSend(J,M)===false){if(M.global&&!--o.active){o.event.trigger("ajaxStop")}J.abort();return false}if(M.global){o.event.trigger("ajaxSend",[J,M])}var N=function(X){if(J.readyState==0){if(P){clearInterval(P);P=null;if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}}else{if(!K&&J&&(J.readyState==4||X=="timeout")){K=true;if(P){clearInterval(P);P=null}R=X=="timeout"?"timeout":!o.httpSuccess(J)?"error":M.ifModified&&o.httpNotModified(J,M.url)?"notmodified":"success";if(R=="success"){try{V=o.httpData(J,M.dataType,M)}catch(Z){R="parsererror"}}if(R=="success"){var Y;try{Y=J.getResponseHeader("Last-Modified")}catch(Z){}if(M.ifModified&&Y){o.lastModified[M.url]=Y}if(!W){I()}}else{o.handleError(M,J,R)}L();if(X){J.abort()}if(M.async){J=null}}}};if(M.async){var P=setInterval(N,13);if(M.timeout>0){setTimeout(function(){if(J&&!K){N("timeout")}},M.timeout)}}try{J.send(M.data)}catch(S){o.handleError(M,J,null,S)}if(!M.async){N()}function I(){if(M.success){M.success(V,R)}if(M.global){o.event.trigger("ajaxSuccess",[J,M])}}function L(){if(M.complete){M.complete(J,R)}if(M.global){o.event.trigger("ajaxComplete",[J,M])}if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}return J},handleError:function(F,H,E,G){if(F.error){F.error(H,E,G)}if(F.global){o.event.trigger("ajaxError",[H,F,G])}},active:0,httpSuccess:function(F){try{return !F.status&&location.protocol=="file:"||(F.status>=200&&F.status<300)||F.status==304||F.status==1223}catch(E){}return false},httpNotModified:function(G,E){try{var H=G.getResponseHeader("Last-Modified");return G.status==304||H==o.lastModified[E]}catch(F){}return false},httpData:function(J,H,G){var F=J.getResponseHeader("content-type"),E=H=="xml"||!H&&F&&F.indexOf("xml")>=0,I=E?J.responseXML:J.responseText;if(E&&I.documentElement.tagName=="parsererror"){throw"parsererror"}if(G&&G.dataFilter){I=G.dataFilter(I,H)}if(typeof I==="string"){if(H=="script"){o.globalEval(I)}if(H=="json"){I=l["eval"]("("+I+")")}}return I},param:function(E){var G=[];function H(I,J){G[G.length]=encodeURIComponent(I)+"="+encodeURIComponent(J)}if(o.isArray(E)||E.jquery){o.each(E,function(){H(this.name,this.value)})}else{for(var F in E){if(o.isArray(E[F])){o.each(E[F],function(){H(F,this)})}else{H(F,o.isFunction(E[F])?E[F]():E[F])}}}return G.join("&").replace(/%20/g,"+")}});var m={},n,d=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];function t(F,E){var G={};o.each(d.concat.apply([],d.slice(0,E)),function(){G[this]=F});return G}o.fn.extend({show:function(J,L){if(J){return this.animate(t("show",3),J,L)}else{for(var H=0,F=this.length;H<F;H++){var E=o.data(this[H],"olddisplay");this[H].style.display=E||"";if(o.css(this[H],"display")==="none"){var G=this[H].tagName,K;if(m[G]){K=m[G]}else{var I=o("<"+G+" />").appendTo("body");K=I.css("display");if(K==="none"){K="block"}I.remove();m[G]=K}o.data(this[H],"olddisplay",K)}}for(var H=0,F=this.length;H<F;H++){this[H].style.display=o.data(this[H],"olddisplay")||""}return this}},hide:function(H,I){if(H){return this.animate(t("hide",3),H,I)}else{for(var G=0,F=this.length;G<F;G++){var E=o.data(this[G],"olddisplay");if(!E&&E!=="none"){o.data(this[G],"olddisplay",o.css(this[G],"display"))}}for(var G=0,F=this.length;G<F;G++){this[G].style.display="none"}return this}},_toggle:o.fn.toggle,toggle:function(G,F){var E=typeof G==="boolean";return o.isFunction(G)&&o.isFunction(F)?this._toggle.apply(this,arguments):G==null||E?this.each(function(){var H=E?G:o(this).is(":hidden");o(this)[H?"show":"hide"]()}):this.animate(t("toggle",3),G,F)},fadeTo:function(E,G,F){return this.animate({opacity:G},E,F)},animate:function(I,F,H,G){var E=o.speed(F,H,G);return this[E.queue===false?"each":"queue"](function(){var K=o.extend({},E),M,L=this.nodeType==1&&o(this).is(":hidden"),J=this;for(M in I){if(I[M]=="hide"&&L||I[M]=="show"&&!L){return K.complete.call(this)}if((M=="height"||M=="width")&&this.style){K.display=o.css(this,"display");K.overflow=this.style.overflow}}if(K.overflow!=null){this.style.overflow="hidden"}K.curAnim=o.extend({},I);o.each(I,function(O,S){var R=new o.fx(J,K,O);if(/toggle|show|hide/.test(S)){R[S=="toggle"?L?"show":"hide":S](I)}else{var Q=S.toString().match(/^([+-]=)?([\d+-.]+)(.*)$/),T=R.cur(true)||0;if(Q){var N=parseFloat(Q[2]),P=Q[3]||"px";if(P!="px"){J.style[O]=(N||1)+P;T=((N||1)/R.cur(true))*T;J.style[O]=T+P}if(Q[1]){N=((Q[1]=="-="?-1:1)*N)+T}R.custom(T,N,P)}else{R.custom(T,S,"")}}});return true})},stop:function(F,E){var G=o.timers;if(F){this.queue([])}this.each(function(){for(var H=G.length-1;H>=0;H--){if(G[H].elem==this){if(E){G[H](true)}G.splice(H,1)}}});if(!E){this.dequeue()}return this}});o.each({slideDown:t("show",1),slideUp:t("hide",1),slideToggle:t("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(E,F){o.fn[E]=function(G,H){return this.animate(F,G,H)}});o.extend({speed:function(G,H,F){var E=typeof G==="object"?G:{complete:F||!F&&H||o.isFunction(G)&&G,duration:G,easing:F&&H||H&&!o.isFunction(H)&&H};E.duration=o.fx.off?0:typeof E.duration==="number"?E.duration:o.fx.speeds[E.duration]||o.fx.speeds._default;E.old=E.complete;E.complete=function(){if(E.queue!==false){o(this).dequeue()}if(o.isFunction(E.old)){E.old.call(this)}};return E},easing:{linear:function(G,H,E,F){return E+F*G},swing:function(G,H,E,F){return((-Math.cos(G*Math.PI)/2)+0.5)*F+E}},timers:[],fx:function(F,E,G){this.options=E;this.elem=F;this.prop=G;if(!E.orig){E.orig={}}}});o.fx.prototype={update:function(){if(this.options.step){this.options.step.call(this.elem,this.now,this)}(o.fx.step[this.prop]||o.fx.step._default)(this);if((this.prop=="height"||this.prop=="width")&&this.elem.style){this.elem.style.display="block"}},cur:function(F){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null)){return this.elem[this.prop]}var E=parseFloat(o.css(this.elem,this.prop,F));return E&&E>-10000?E:parseFloat(o.curCSS(this.elem,this.prop))||0},custom:function(I,H,G){this.startTime=e();this.start=I;this.end=H;this.unit=G||this.unit||"px";this.now=this.start;this.pos=this.state=0;var E=this;function F(J){return E.step(J)}F.elem=this.elem;if(F()&&o.timers.push(F)&&!n){n=setInterval(function(){var K=o.timers;for(var J=0;J<K.length;J++){if(!K[J]()){K.splice(J--,1)}}if(!K.length){clearInterval(n);n=g}},13)}},show:function(){this.options.orig[this.prop]=o.attr(this.elem.style,this.prop);this.options.show=true;this.custom(this.prop=="width"||this.prop=="height"?1:0,this.cur());o(this.elem).show()},hide:function(){this.options.orig[this.prop]=o.attr(this.elem.style,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(H){var G=e();if(H||G>=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var E=true;for(var F in this.options.curAnim){if(this.options.curAnim[F]!==true){E=false}}if(E){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(o.css(this.elem,"display")=="none"){this.elem.style.display="block"}}if(this.options.hide){o(this.elem).hide()}if(this.options.hide||this.options.show){for(var I in this.options.curAnim){o.attr(this.elem.style,I,this.options.orig[I])}}this.options.complete.call(this.elem)}return false}else{var J=G-this.startTime;this.state=J/this.options.duration;this.pos=o.easing[this.options.easing||(o.easing.swing?"swing":"linear")](this.state,J,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update()}return true}};o.extend(o.fx,{speeds:{slow:600,fast:200,_default:400},step:{opacity:function(E){o.attr(E.elem.style,"opacity",E.now)},_default:function(E){if(E.elem.style&&E.elem.style[E.prop]!=null){E.elem.style[E.prop]=E.now+E.unit}else{E.elem[E.prop]=E.now}}}});if(document.documentElement.getBoundingClientRect){o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}var G=this[0].getBoundingClientRect(),J=this[0].ownerDocument,F=J.body,E=J.documentElement,L=E.clientTop||F.clientTop||0,K=E.clientLeft||F.clientLeft||0,I=G.top+(self.pageYOffset||o.boxModel&&E.scrollTop||F.scrollTop)-L,H=G.left+(self.pageXOffset||o.boxModel&&E.scrollLeft||F.scrollLeft)-K;return{top:I,left:H}}}else{o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}o.offset.initialized||o.offset.initialize();var J=this[0],G=J.offsetParent,F=J,O=J.ownerDocument,M,H=O.documentElement,K=O.body,L=O.defaultView,E=L.getComputedStyle(J,null),N=J.offsetTop,I=J.offsetLeft;while((J=J.parentNode)&&J!==K&&J!==H){M=L.getComputedStyle(J,null);N-=J.scrollTop,I-=J.scrollLeft;if(J===G){N+=J.offsetTop,I+=J.offsetLeft;if(o.offset.doesNotAddBorder&&!(o.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(J.tagName))){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}F=G,G=J.offsetParent}if(o.offset.subtractsBorderForOverflowNotVisible&&M.overflow!=="visible"){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}E=M}if(E.position==="relative"||E.position==="static"){N+=K.offsetTop,I+=K.offsetLeft}if(E.position==="fixed"){N+=Math.max(H.scrollTop,K.scrollTop),I+=Math.max(H.scrollLeft,K.scrollLeft)}return{top:N,left:I}}}o.offset={initialize:function(){if(this.initialized){return}var L=document.body,F=document.createElement("div"),H,G,N,I,M,E,J=L.style.marginTop,K='<div style="position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;"><div></div></div><table style="position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;" cellpadding="0" cellspacing="0"><tr><td></td></tr></table>';M={position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"};for(E in M){F.style[E]=M[E]}F.innerHTML=K;L.insertBefore(F,L.firstChild);H=F.firstChild,G=H.firstChild,I=H.nextSibling.firstChild.firstChild;this.doesNotAddBorder=(G.offsetTop!==5);this.doesAddBorderForTableAndCells=(I.offsetTop===5);H.style.overflow="hidden",H.style.position="relative";this.subtractsBorderForOverflowNotVisible=(G.offsetTop===-5);L.style.marginTop="1px";this.doesNotIncludeMarginInBodyOffset=(L.offsetTop===0);L.style.marginTop=J;L.removeChild(F);this.initialized=true},bodyOffset:function(E){o.offset.initialized||o.offset.initialize();var G=E.offsetTop,F=E.offsetLeft;if(o.offset.doesNotIncludeMarginInBodyOffset){G+=parseInt(o.curCSS(E,"marginTop",true),10)||0,F+=parseInt(o.curCSS(E,"marginLeft",true),10)||0}return{top:G,left:F}}};o.fn.extend({position:function(){var I=0,H=0,F;if(this[0]){var G=this.offsetParent(),J=this.offset(),E=/^body|html$/i.test(G[0].tagName)?{top:0,left:0}:G.offset();J.top-=j(this,"marginTop");J.left-=j(this,"marginLeft");E.top+=j(G,"borderTopWidth");E.left+=j(G,"borderLeftWidth");F={top:J.top-E.top,left:J.left-E.left}}return F},offsetParent:function(){var E=this[0].offsetParent||document.body;while(E&&(!/^body|html$/i.test(E.tagName)&&o.css(E,"position")=="static")){E=E.offsetParent}return o(E)}});o.each(["Left","Top"],function(F,E){var G="scroll"+E;o.fn[G]=function(H){if(!this[0]){return null}return H!==g?this.each(function(){this==l||this==document?l.scrollTo(!F?H:o(l).scrollLeft(),F?H:o(l).scrollTop()):this[G]=H}):this[0]==l||this[0]==document?self[F?"pageYOffset":"pageXOffset"]||o.boxModel&&document.documentElement[G]||document.body[G]:this[0][G]}});o.each(["Height","Width"],function(I,G){var E=I?"Left":"Top",H=I?"Right":"Bottom",F=G.toLowerCase();o.fn["inner"+G]=function(){return this[0]?o.css(this[0],F,false,"padding"):null};o.fn["outer"+G]=function(K){return this[0]?o.css(this[0],F,false,K?"margin":"border"):null};var J=G.toLowerCase();o.fn[J]=function(K){return this[0]==l?document.compatMode=="CSS1Compat"&&document.documentElement["client"+G]||document.body["client"+G]:this[0]==document?Math.max(document.documentElement["client"+G],document.body["scroll"+G],document.documentElement["scroll"+G],document.body["offset"+G],document.documentElement["offset"+G]):K===g?(this.length?o.css(this[0],J):null):this.css(J,typeof K==="string"?K:K+"px")}})})(); \ No newline at end of file
+(function(z,v){function la(){if(!c.isReady){try{r.documentElement.doScroll("left")}catch(a){setTimeout(la,1);return}c.ready()}}function Ma(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}function X(a,b,d,f,e,i){var j=a.length;if(typeof b==="object"){for(var n in b)X(a,n,b[n],f,e,d);return a}if(d!==v){f=!i&&f&&c.isFunction(d);for(n=0;n<j;n++)e(a[n],b,f?d.call(a[n],n,e(a[n],b)):d,i);return a}return j?
+e(a[0],b):null}function J(){return(new Date).getTime()}function Y(){return false}function Z(){return true}function ma(a,b,d){d[0].type=a;return c.event.handle.apply(b,d)}function na(a){var b,d=[],f=[],e=arguments,i,j,n,o,m,s,x=c.extend({},c.data(this,"events").live);if(!(a.button&&a.type==="click")){for(o in x){j=x[o];if(j.live===a.type||j.altLive&&c.inArray(a.type,j.altLive)>-1){i=j.data;i.beforeFilter&&i.beforeFilter[a.type]&&!i.beforeFilter[a.type](a)||f.push(j.selector)}else delete x[o]}i=c(a.target).closest(f,
+a.currentTarget);m=0;for(s=i.length;m<s;m++)for(o in x){j=x[o];n=i[m].elem;f=null;if(i[m].selector===j.selector){if(j.live==="mouseenter"||j.live==="mouseleave")f=c(a.relatedTarget).closest(j.selector)[0];if(!f||f!==n)d.push({elem:n,fn:j})}}m=0;for(s=d.length;m<s;m++){i=d[m];a.currentTarget=i.elem;a.data=i.fn.data;if(i.fn.apply(i.elem,e)===false){b=false;break}}return b}}function oa(a,b){return"live."+(a?a+".":"")+b.replace(/\./g,"`").replace(/ /g,"&")}function pa(a){return!a||!a.parentNode||a.parentNode.nodeType===
+11}function qa(a,b){var d=0;b.each(function(){if(this.nodeName===(a[d]&&a[d].nodeName)){var f=c.data(a[d++]),e=c.data(this,f);if(f=f&&f.events){delete e.handle;e.events={};for(var i in f)for(var j in f[i])c.event.add(this,i,f[i][j],f[i][j].data)}}})}function ra(a,b,d){var f,e,i;if(a.length===1&&typeof a[0]==="string"&&a[0].length<512&&a[0].indexOf("<option")<0&&(c.support.checkClone||!sa.test(a[0]))){e=true;if(i=c.fragments[a[0]])if(i!==1)f=i}if(!f){b=b&&b[0]?b[0].ownerDocument||b[0]:r;f=b.createDocumentFragment();
+c.clean(a,b,f,d)}if(e)c.fragments[a[0]]=i?f:1;return{fragment:f,cacheable:e}}function K(a,b){var d={};c.each(ta.concat.apply([],ta.slice(0,b)),function(){d[this]=a});return d}function ua(a){return"scrollTo"in a&&a.document?a:a.nodeType===9?a.defaultView||a.parentWindow:false}var c=function(a,b){return new c.fn.init(a,b)},Na=z.jQuery,Oa=z.$,r=z.document,S,Pa=/^[^<]*(<[\w\W]+>)[^>]*$|^#([\w-]+)$/,Qa=/^.[^:#\[\.,]*$/,Ra=/\S/,Sa=/^(\s|\u00A0)+|(\s|\u00A0)+$/g,Ta=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,O=navigator.userAgent,
+va=false,P=[],L,$=Object.prototype.toString,aa=Object.prototype.hasOwnProperty,ba=Array.prototype.push,Q=Array.prototype.slice,wa=Array.prototype.indexOf;c.fn=c.prototype={init:function(a,b){var d,f;if(!a)return this;if(a.nodeType){this.context=this[0]=a;this.length=1;return this}if(typeof a==="string")if((d=Pa.exec(a))&&(d[1]||!b))if(d[1]){f=b?b.ownerDocument||b:r;if(a=Ta.exec(a))if(c.isPlainObject(b)){a=[r.createElement(a[1])];c.fn.attr.call(a,b,true)}else a=[f.createElement(a[1])];else{a=ra([d[1]],
+[f]);a=(a.cacheable?a.fragment.cloneNode(true):a.fragment).childNodes}}else{if(b=r.getElementById(d[2])){if(b.id!==d[2])return S.find(a);this.length=1;this[0]=b}this.context=r;this.selector=a;return this}else if(!b&&/^\w+$/.test(a)){this.selector=a;this.context=r;a=r.getElementsByTagName(a)}else return!b||b.jquery?(b||S).find(a):c(b).find(a);else if(c.isFunction(a))return S.ready(a);if(a.selector!==v){this.selector=a.selector;this.context=a.context}return c.isArray(a)?this.setArray(a):c.makeArray(a,
+this)},selector:"",jquery:"1.4.1",length:0,size:function(){return this.length},toArray:function(){return Q.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this.slice(a)[0]:this[a]},pushStack:function(a,b,d){a=c(a||null);a.prevObject=this;a.context=this.context;if(b==="find")a.selector=this.selector+(this.selector?" ":"")+d;else if(b)a.selector=this.selector+"."+b+"("+d+")";return a},setArray:function(a){this.length=0;ba.apply(this,a);return this},each:function(a,b){return c.each(this,
+a,b)},ready:function(a){c.bindReady();if(c.isReady)a.call(r,c);else P&&P.push(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(Q.apply(this,arguments),"slice",Q.call(arguments).join(","))},map:function(a){return this.pushStack(c.map(this,function(b,d){return a.call(b,d,b)}))},end:function(){return this.prevObject||c(null)},push:ba,sort:[].sort,splice:[].splice};
+c.fn.init.prototype=c.fn;c.extend=c.fn.extend=function(){var a=arguments[0]||{},b=1,d=arguments.length,f=false,e,i,j,n;if(typeof a==="boolean"){f=a;a=arguments[1]||{};b=2}if(typeof a!=="object"&&!c.isFunction(a))a={};if(d===b){a=this;--b}for(;b<d;b++)if((e=arguments[b])!=null)for(i in e){j=a[i];n=e[i];if(a!==n)if(f&&n&&(c.isPlainObject(n)||c.isArray(n))){j=j&&(c.isPlainObject(j)||c.isArray(j))?j:c.isArray(n)?[]:{};a[i]=c.extend(f,j,n)}else if(n!==v)a[i]=n}return a};c.extend({noConflict:function(a){z.$=
+Oa;if(a)z.jQuery=Na;return c},isReady:false,ready:function(){if(!c.isReady){if(!r.body)return setTimeout(c.ready,13);c.isReady=true;if(P){for(var a,b=0;a=P[b++];)a.call(r,c);P=null}c.fn.triggerHandler&&c(r).triggerHandler("ready")}},bindReady:function(){if(!va){va=true;if(r.readyState==="complete")return c.ready();if(r.addEventListener){r.addEventListener("DOMContentLoaded",L,false);z.addEventListener("load",c.ready,false)}else if(r.attachEvent){r.attachEvent("onreadystatechange",L);z.attachEvent("onload",
+c.ready);var a=false;try{a=z.frameElement==null}catch(b){}r.documentElement.doScroll&&a&&la()}}},isFunction:function(a){return $.call(a)==="[object Function]"},isArray:function(a){return $.call(a)==="[object Array]"},isPlainObject:function(a){if(!a||$.call(a)!=="[object Object]"||a.nodeType||a.setInterval)return false;if(a.constructor&&!aa.call(a,"constructor")&&!aa.call(a.constructor.prototype,"isPrototypeOf"))return false;var b;for(b in a);return b===v||aa.call(a,b)},isEmptyObject:function(a){for(var b in a)return false;
+return true},error:function(a){throw a;},parseJSON:function(a){if(typeof a!=="string"||!a)return null;if(/^[\],:{}\s]*$/.test(a.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,"")))return z.JSON&&z.JSON.parse?z.JSON.parse(a):(new Function("return "+a))();else c.error("Invalid JSON: "+a)},noop:function(){},globalEval:function(a){if(a&&Ra.test(a)){var b=r.getElementsByTagName("head")[0]||
+r.documentElement,d=r.createElement("script");d.type="text/javascript";if(c.support.scriptEval)d.appendChild(r.createTextNode(a));else d.text=a;b.insertBefore(d,b.firstChild);b.removeChild(d)}},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,b,d){var f,e=0,i=a.length,j=i===v||c.isFunction(a);if(d)if(j)for(f in a){if(b.apply(a[f],d)===false)break}else for(;e<i;){if(b.apply(a[e++],d)===false)break}else if(j)for(f in a){if(b.call(a[f],f,a[f])===false)break}else for(d=
+a[0];e<i&&b.call(d,e,d)!==false;d=a[++e]);return a},trim:function(a){return(a||"").replace(Sa,"")},makeArray:function(a,b){b=b||[];if(a!=null)a.length==null||typeof a==="string"||c.isFunction(a)||typeof a!=="function"&&a.setInterval?ba.call(b,a):c.merge(b,a);return b},inArray:function(a,b){if(b.indexOf)return b.indexOf(a);for(var d=0,f=b.length;d<f;d++)if(b[d]===a)return d;return-1},merge:function(a,b){var d=a.length,f=0;if(typeof b.length==="number")for(var e=b.length;f<e;f++)a[d++]=b[f];else for(;b[f]!==
+v;)a[d++]=b[f++];a.length=d;return a},grep:function(a,b,d){for(var f=[],e=0,i=a.length;e<i;e++)!d!==!b(a[e],e)&&f.push(a[e]);return f},map:function(a,b,d){for(var f=[],e,i=0,j=a.length;i<j;i++){e=b(a[i],i,d);if(e!=null)f[f.length]=e}return f.concat.apply([],f)},guid:1,proxy:function(a,b,d){if(arguments.length===2)if(typeof b==="string"){d=a;a=d[b];b=v}else if(b&&!c.isFunction(b)){d=b;b=v}if(!b&&a)b=function(){return a.apply(d||this,arguments)};if(a)b.guid=a.guid=a.guid||b.guid||c.guid++;return b},
+uaMatch:function(a){a=a.toLowerCase();a=/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version)?[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||!/compatible/.test(a)&&/(mozilla)(?:.*? rv:([\w.]+))?/.exec(a)||[];return{browser:a[1]||"",version:a[2]||"0"}},browser:{}});O=c.uaMatch(O);if(O.browser){c.browser[O.browser]=true;c.browser.version=O.version}if(c.browser.webkit)c.browser.safari=true;if(wa)c.inArray=function(a,b){return wa.call(b,a)};S=c(r);if(r.addEventListener)L=function(){r.removeEventListener("DOMContentLoaded",
+L,false);c.ready()};else if(r.attachEvent)L=function(){if(r.readyState==="complete"){r.detachEvent("onreadystatechange",L);c.ready()}};(function(){c.support={};var a=r.documentElement,b=r.createElement("script"),d=r.createElement("div"),f="script"+J();d.style.display="none";d.innerHTML=" <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>";var e=d.getElementsByTagName("*"),i=d.getElementsByTagName("a")[0];if(!(!e||!e.length||!i)){c.support=
+{leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(i.getAttribute("style")),hrefNormalized:i.getAttribute("href")==="/a",opacity:/^0.55$/.test(i.style.opacity),cssFloat:!!i.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:r.createElement("select").appendChild(r.createElement("option")).selected,checkClone:false,scriptEval:false,noCloneEvent:true,boxModel:null};
+b.type="text/javascript";try{b.appendChild(r.createTextNode("window."+f+"=1;"))}catch(j){}a.insertBefore(b,a.firstChild);if(z[f]){c.support.scriptEval=true;delete z[f]}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function n(){c.support.noCloneEvent=false;d.detachEvent("onclick",n)});d.cloneNode(true).fireEvent("onclick")}d=r.createElement("div");d.innerHTML="<input type='radio' name='radiotest' checked='checked'/>";a=r.createDocumentFragment();a.appendChild(d.firstChild);
+c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var n=r.createElement("div");n.style.width=n.style.paddingLeft="1px";r.body.appendChild(n);c.boxModel=c.support.boxModel=n.offsetWidth===2;r.body.removeChild(n).style.display="none"});a=function(n){var o=r.createElement("div");n="on"+n;var m=n in o;if(!m){o.setAttribute(n,"return;");m=typeof o[n]==="function"}return m};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=e=i=null}})();c.props=
+{"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};var G="jQuery"+J(),Ua=0,xa={},Va={};c.extend({cache:{},expando:G,noData:{embed:true,object:true,applet:true},data:function(a,b,d){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==z?xa:a;var f=a[G],e=c.cache;if(!b&&!f)return null;f||(f=++Ua);if(typeof b==="object"){a[G]=f;e=e[f]=c.extend(true,
+{},b)}else e=e[f]?e[f]:typeof d==="undefined"?Va:(e[f]={});if(d!==v){a[G]=f;e[b]=d}return typeof b==="string"?e[b]:e}},removeData:function(a,b){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==z?xa:a;var d=a[G],f=c.cache,e=f[d];if(b){if(e){delete e[b];c.isEmptyObject(e)&&c.removeData(a)}}else{try{delete a[G]}catch(i){a.removeAttribute&&a.removeAttribute(G)}delete f[d]}}}});c.fn.extend({data:function(a,b){if(typeof a==="undefined"&&this.length)return c.data(this[0]);else if(typeof a==="object")return this.each(function(){c.data(this,
+a)});var d=a.split(".");d[1]=d[1]?"."+d[1]:"";if(b===v){var f=this.triggerHandler("getData"+d[1]+"!",[d[0]]);if(f===v&&this.length)f=c.data(this[0],a);return f===v&&d[1]?this.data(d[0]):f}else return this.trigger("setData"+d[1]+"!",[d[0],b]).each(function(){c.data(this,a,b)})},removeData:function(a){return this.each(function(){c.removeData(this,a)})}});c.extend({queue:function(a,b,d){if(a){b=(b||"fx")+"queue";var f=c.data(a,b);if(!d)return f||[];if(!f||c.isArray(d))f=c.data(a,b,c.makeArray(d));else f.push(d);
+return f}},dequeue:function(a,b){b=b||"fx";var d=c.queue(a,b),f=d.shift();if(f==="inprogress")f=d.shift();if(f){b==="fx"&&d.unshift("inprogress");f.call(a,function(){c.dequeue(a,b)})}}});c.fn.extend({queue:function(a,b){if(typeof a!=="string"){b=a;a="fx"}if(b===v)return c.queue(this[0],a);return this.each(function(){var d=c.queue(this,a,b);a==="fx"&&d[0]!=="inprogress"&&c.dequeue(this,a)})},dequeue:function(a){return this.each(function(){c.dequeue(this,a)})},delay:function(a,b){a=c.fx?c.fx.speeds[a]||
+a:a;b=b||"fx";return this.queue(b,function(){var d=this;setTimeout(function(){c.dequeue(d,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var ya=/[\n\t]/g,ca=/\s+/,Wa=/\r/g,Xa=/href|src|style/,Ya=/(button|input)/i,Za=/(button|input|object|select|textarea)/i,$a=/^(a|area)$/i,za=/radio|checkbox/;c.fn.extend({attr:function(a,b){return X(this,a,b,true,c.attr)},removeAttr:function(a){return this.each(function(){c.attr(this,a,"");this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(c.isFunction(a))return this.each(function(o){var m=
+c(this);m.addClass(a.call(this,o,m.attr("class")))});if(a&&typeof a==="string")for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1)if(e.className)for(var i=" "+e.className+" ",j=0,n=b.length;j<n;j++){if(i.indexOf(" "+b[j]+" ")<0)e.className+=" "+b[j]}else e.className=a}return this},removeClass:function(a){if(c.isFunction(a))return this.each(function(o){var m=c(this);m.removeClass(a.call(this,o,m.attr("class")))});if(a&&typeof a==="string"||a===v)for(var b=(a||"").split(ca),
+d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1&&e.className)if(a){for(var i=(" "+e.className+" ").replace(ya," "),j=0,n=b.length;j<n;j++)i=i.replace(" "+b[j]+" "," ");e.className=i.substring(1,i.length-1)}else e.className=""}return this},toggleClass:function(a,b){var d=typeof a,f=typeof b==="boolean";if(c.isFunction(a))return this.each(function(e){var i=c(this);i.toggleClass(a.call(this,e,i.attr("class"),b),b)});return this.each(function(){if(d==="string")for(var e,i=0,j=c(this),n=b,o=
+a.split(ca);e=o[i++];){n=f?n:!j.hasClass(e);j[n?"addClass":"removeClass"](e)}else if(d==="undefined"||d==="boolean"){this.className&&c.data(this,"__className__",this.className);this.className=this.className||a===false?"":c.data(this,"__className__")||""}})},hasClass:function(a){a=" "+a+" ";for(var b=0,d=this.length;b<d;b++)if((" "+this[b].className+" ").replace(ya," ").indexOf(a)>-1)return true;return false},val:function(a){if(a===v){var b=this[0];if(b){if(c.nodeName(b,"option"))return(b.attributes.value||
+{}).specified?b.value:b.text;if(c.nodeName(b,"select")){var d=b.selectedIndex,f=[],e=b.options;b=b.type==="select-one";if(d<0)return null;var i=b?d:0;for(d=b?d+1:e.length;i<d;i++){var j=e[i];if(j.selected){a=c(j).val();if(b)return a;f.push(a)}}return f}if(za.test(b.type)&&!c.support.checkOn)return b.getAttribute("value")===null?"on":b.value;return(b.value||"").replace(Wa,"")}return v}var n=c.isFunction(a);return this.each(function(o){var m=c(this),s=a;if(this.nodeType===1){if(n)s=a.call(this,o,m.val());
+if(typeof s==="number")s+="";if(c.isArray(s)&&za.test(this.type))this.checked=c.inArray(m.val(),s)>=0;else if(c.nodeName(this,"select")){var x=c.makeArray(s);c("option",this).each(function(){this.selected=c.inArray(c(this).val(),x)>=0});if(!x.length)this.selectedIndex=-1}else this.value=s}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(a,b,d,f){if(!a||a.nodeType===3||a.nodeType===8)return v;if(f&&b in c.attrFn)return c(a)[b](d);
+f=a.nodeType!==1||!c.isXMLDoc(a);var e=d!==v;b=f&&c.props[b]||b;if(a.nodeType===1){var i=Xa.test(b);if(b in a&&f&&!i){if(e){b==="type"&&Ya.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed");a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&&b.specified?b.value:Za.test(a.nodeName)||$a.test(a.nodeName)&&a.href?0:v;return a[b]}if(!c.support.style&&f&&b==="style"){if(e)a.style.cssText=
+""+d;return a.style.cssText}e&&a.setAttribute(b,""+d);a=!c.support.hrefNormalized&&f&&i?a.getAttribute(b,2):a.getAttribute(b);return a===null?v:a}return c.style(a,b,d)}});var ab=function(a){return a.replace(/[^\w\s\.\|`]/g,function(b){return"\\"+b})};c.event={add:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){if(a.setInterval&&a!==z&&!a.frameElement)a=z;if(!d.guid)d.guid=c.guid++;if(f!==v){d=c.proxy(d);d.data=f}var e=c.data(a,"events")||c.data(a,"events",{}),i=c.data(a,"handle"),j;if(!i){j=
+function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(j.elem,arguments):v};i=c.data(a,"handle",j)}if(i){i.elem=a;b=b.split(/\s+/);for(var n,o=0;n=b[o++];){var m=n.split(".");n=m.shift();if(o>1){d=c.proxy(d);if(f!==v)d.data=f}d.type=m.slice(0).sort().join(".");var s=e[n],x=this.special[n]||{};if(!s){s=e[n]={};if(!x.setup||x.setup.call(a,f,m,d)===false)if(a.addEventListener)a.addEventListener(n,i,false);else a.attachEvent&&a.attachEvent("on"+n,i)}if(x.add)if((m=x.add.call(a,
+d,f,m,s))&&c.isFunction(m)){m.guid=m.guid||d.guid;m.data=m.data||d.data;m.type=m.type||d.type;d=m}s[d.guid]=d;this.global[n]=true}a=null}}},global:{},remove:function(a,b,d){if(!(a.nodeType===3||a.nodeType===8)){var f=c.data(a,"events"),e,i,j;if(f){if(b===v||typeof b==="string"&&b.charAt(0)===".")for(i in f)this.remove(a,i+(b||""));else{if(b.type){d=b.handler;b=b.type}b=b.split(/\s+/);for(var n=0;i=b[n++];){var o=i.split(".");i=o.shift();var m=!o.length,s=c.map(o.slice(0).sort(),ab);s=new RegExp("(^|\\.)"+
+s.join("\\.(?:.*\\.)?")+"(\\.|$)");var x=this.special[i]||{};if(f[i]){if(d){j=f[i][d.guid];delete f[i][d.guid]}else for(var A in f[i])if(m||s.test(f[i][A].type))delete f[i][A];x.remove&&x.remove.call(a,o,j);for(e in f[i])break;if(!e){if(!x.teardown||x.teardown.call(a,o)===false)if(a.removeEventListener)a.removeEventListener(i,c.data(a,"handle"),false);else a.detachEvent&&a.detachEvent("on"+i,c.data(a,"handle"));e=null;delete f[i]}}}}for(e in f)break;if(!e){if(A=c.data(a,"handle"))A.elem=null;c.removeData(a,
+"events");c.removeData(a,"handle")}}}},trigger:function(a,b,d,f){var e=a.type||a;if(!f){a=typeof a==="object"?a[G]?a:c.extend(c.Event(e),a):c.Event(e);if(e.indexOf("!")>=0){a.type=e=e.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();this.global[e]&&c.each(c.cache,function(){this.events&&this.events[e]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType===8)return v;a.result=v;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(f=c.data(d,"handle"))&&f.apply(d,
+b);f=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+e]&&d["on"+e].apply(d,b)===false)a.result=false}catch(i){}if(!a.isPropagationStopped()&&f)c.event.trigger(a,b,f,true);else if(!a.isDefaultPrevented()){d=a.target;var j;if(!(c.nodeName(d,"a")&&e==="click")&&!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()])){try{if(d[e]){if(j=d["on"+e])d["on"+e]=null;this.triggered=true;d[e]()}}catch(n){}if(j)d["on"+e]=j;this.triggered=false}}},handle:function(a){var b,
+d;a=arguments[0]=c.event.fix(a||z.event);a.currentTarget=this;d=a.type.split(".");a.type=d.shift();b=!d.length&&!a.exclusive;var f=new RegExp("(^|\\.)"+d.slice(0).sort().join("\\.(?:.*\\.)?")+"(\\.|$)");d=(c.data(this,"events")||{})[a.type];for(var e in d){var i=d[e];if(b||f.test(i.type)){a.handler=i;a.data=i.data;i=i.apply(this,arguments);if(i!==v){a.result=i;if(i===false){a.preventDefault();a.stopPropagation()}}if(a.isImmediatePropagationStopped())break}}return a.result},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),
+fix:function(a){if(a[G])return a;var b=a;a=c.Event(b);for(var d=this.props.length,f;d;){f=this.props[--d];a[f]=b[f]}if(!a.target)a.target=a.srcElement||r;if(a.target.nodeType===3)a.target=a.target.parentNode;if(!a.relatedTarget&&a.fromElement)a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement;if(a.pageX==null&&a.clientX!=null){b=r.documentElement;d=r.body;a.pageX=a.clientX+(b&&b.scrollLeft||d&&d.scrollLeft||0)-(b&&b.clientLeft||d&&d.clientLeft||0);a.pageY=a.clientY+(b&&b.scrollTop||
+d&&d.scrollTop||0)-(b&&b.clientTop||d&&d.clientTop||0)}if(!a.which&&(a.charCode||a.charCode===0?a.charCode:a.keyCode))a.which=a.charCode||a.keyCode;if(!a.metaKey&&a.ctrlKey)a.metaKey=a.ctrlKey;if(!a.which&&a.button!==v)a.which=a.button&1?1:a.button&2?3:a.button&4?2:0;return a},guid:1E8,proxy:c.proxy,special:{ready:{setup:c.bindReady,teardown:c.noop},live:{add:function(a,b){c.extend(a,b||{});a.guid+=b.selector+b.live;b.liveProxy=a;c.event.add(this,b.live,na,b)},remove:function(a){if(a.length){var b=
+0,d=new RegExp("(^|\\.)"+a[0]+"(\\.|$)");c.each(c.data(this,"events").live||{},function(){d.test(this.type)&&b++});b<1&&c.event.remove(this,a[0],na)}},special:{}},beforeunload:{setup:function(a,b,d){if(this.setInterval)this.onbeforeunload=d;return false},teardown:function(a,b){if(this.onbeforeunload===b)this.onbeforeunload=null}}}};c.Event=function(a){if(!this.preventDefault)return new c.Event(a);if(a&&a.type){this.originalEvent=a;this.type=a.type}else this.type=a;this.timeStamp=J();this[G]=true};
+c.Event.prototype={preventDefault:function(){this.isDefaultPrevented=Z;var a=this.originalEvent;if(a){a.preventDefault&&a.preventDefault();a.returnValue=false}},stopPropagation:function(){this.isPropagationStopped=Z;var a=this.originalEvent;if(a){a.stopPropagation&&a.stopPropagation();a.cancelBubble=true}},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=Z;this.stopPropagation()},isDefaultPrevented:Y,isPropagationStopped:Y,isImmediatePropagationStopped:Y};var Aa=function(a){for(var b=
+a.relatedTarget;b&&b!==this;)try{b=b.parentNode}catch(d){break}if(b!==this){a.type=a.data;c.event.handle.apply(this,arguments)}},Ba=function(a){a.type=a.data;c.event.handle.apply(this,arguments)};c.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){c.event.special[a]={setup:function(d){c.event.add(this,b,d&&d.selector?Ba:Aa,a)},teardown:function(d){c.event.remove(this,b,d&&d.selector?Ba:Aa)}}});if(!c.support.submitBubbles)c.event.special.submit={setup:function(a,b,d){if(this.nodeName.toLowerCase()!==
+"form"){c.event.add(this,"click.specialSubmit."+d.guid,function(f){var e=f.target,i=e.type;if((i==="submit"||i==="image")&&c(e).closest("form").length)return ma("submit",this,arguments)});c.event.add(this,"keypress.specialSubmit."+d.guid,function(f){var e=f.target,i=e.type;if((i==="text"||i==="password")&&c(e).closest("form").length&&f.keyCode===13)return ma("submit",this,arguments)})}else return false},remove:function(a,b){c.event.remove(this,"click.specialSubmit"+(b?"."+b.guid:""));c.event.remove(this,
+"keypress.specialSubmit"+(b?"."+b.guid:""))}};if(!c.support.changeBubbles){var da=/textarea|input|select/i;function Ca(a){var b=a.type,d=a.value;if(b==="radio"||b==="checkbox")d=a.checked;else if(b==="select-multiple")d=a.selectedIndex>-1?c.map(a.options,function(f){return f.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d}function ea(a,b){var d=a.target,f,e;if(!(!da.test(d.nodeName)||d.readOnly)){f=c.data(d,"_change_data");e=Ca(d);if(a.type!=="focusout"||
+d.type!=="radio")c.data(d,"_change_data",e);if(!(f===v||e===f))if(f!=null||e){a.type="change";return c.event.trigger(a,b,d)}}}c.event.special.change={filters:{focusout:ea,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return ea.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return ea.call(this,a)},beforeactivate:function(a){a=
+a.target;a.nodeName.toLowerCase()==="input"&&a.type==="radio"&&c.data(a,"_change_data",Ca(a))}},setup:function(a,b,d){for(var f in T)c.event.add(this,f+".specialChange."+d.guid,T[f]);return da.test(this.nodeName)},remove:function(a,b){for(var d in T)c.event.remove(this,d+".specialChange"+(b?"."+b.guid:""),T[d]);return da.test(this.nodeName)}};var T=c.event.special.change.filters}r.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(f){f=c.event.fix(f);f.type=b;return c.event.handle.call(this,
+f)}c.event.special[b]={setup:function(){this.addEventListener(a,d,true)},teardown:function(){this.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,f,e){if(typeof d==="object"){for(var i in d)this[b](i,f,d[i],e);return this}if(c.isFunction(f)){e=f;f=v}var j=b==="one"?c.proxy(e,function(n){c(this).unbind(n,j);return e.apply(this,arguments)}):e;return d==="unload"&&b!=="one"?this.one(d,f,e):this.each(function(){c.event.add(this,d,j,f)})}});c.fn.extend({unbind:function(a,
+b){if(typeof a==="object"&&!a.preventDefault){for(var d in a)this.unbind(d,a[d]);return this}return this.each(function(){c.event.remove(this,a,b)})},trigger:function(a,b){return this.each(function(){c.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0]){a=c.Event(a);a.preventDefault();a.stopPropagation();c.event.trigger(a,b,this[0]);return a.result}},toggle:function(a){for(var b=arguments,d=1;d<b.length;)c.proxy(a,b[d++]);return this.click(c.proxy(a,function(f){var e=(c.data(this,"lastToggle"+
+a.guid)||0)%d;c.data(this,"lastToggle"+a.guid,e+1);f.preventDefault();return b[e].apply(this,arguments)||false}))},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});c.each(["live","die"],function(a,b){c.fn[b]=function(d,f,e){var i,j=0;if(c.isFunction(f)){e=f;f=v}for(d=(d||"").split(/\s+/);(i=d[j++])!=null;){i=i==="focus"?"focusin":i==="blur"?"focusout":i==="hover"?d.push("mouseleave")&&"mouseenter":i;b==="live"?c(this.context).bind(oa(i,this.selector),{data:f,selector:this.selector,
+live:i},e):c(this.context).unbind(oa(i,this.selector),e?{guid:e.guid+this.selector+i}:null)}return this}});c.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error".split(" "),function(a,b){c.fn[b]=function(d){return d?this.bind(b,d):this.trigger(b)};if(c.attrFn)c.attrFn[b]=true});z.attachEvent&&!z.addEventListener&&z.attachEvent("onunload",function(){for(var a in c.cache)if(c.cache[a].handle)try{c.event.remove(c.cache[a].handle.elem)}catch(b){}});
+(function(){function a(g){for(var h="",k,l=0;g[l];l++){k=g[l];if(k.nodeType===3||k.nodeType===4)h+=k.nodeValue;else if(k.nodeType!==8)h+=a(k.childNodes)}return h}function b(g,h,k,l,q,p){q=0;for(var u=l.length;q<u;q++){var t=l[q];if(t){t=t[g];for(var y=false;t;){if(t.sizcache===k){y=l[t.sizset];break}if(t.nodeType===1&&!p){t.sizcache=k;t.sizset=q}if(t.nodeName.toLowerCase()===h){y=t;break}t=t[g]}l[q]=y}}}function d(g,h,k,l,q,p){q=0;for(var u=l.length;q<u;q++){var t=l[q];if(t){t=t[g];for(var y=false;t;){if(t.sizcache===
+k){y=l[t.sizset];break}if(t.nodeType===1){if(!p){t.sizcache=k;t.sizset=q}if(typeof h!=="string"){if(t===h){y=true;break}}else if(o.filter(h,[t]).length>0){y=t;break}}t=t[g]}l[q]=y}}}var f=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,e=0,i=Object.prototype.toString,j=false,n=true;[0,0].sort(function(){n=false;return 0});var o=function(g,h,k,l){k=k||[];var q=h=h||r;if(h.nodeType!==1&&h.nodeType!==9)return[];if(!g||
+typeof g!=="string")return k;for(var p=[],u,t,y,R,H=true,M=w(h),I=g;(f.exec(""),u=f.exec(I))!==null;){I=u[3];p.push(u[1]);if(u[2]){R=u[3];break}}if(p.length>1&&s.exec(g))if(p.length===2&&m.relative[p[0]])t=fa(p[0]+p[1],h);else for(t=m.relative[p[0]]?[h]:o(p.shift(),h);p.length;){g=p.shift();if(m.relative[g])g+=p.shift();t=fa(g,t)}else{if(!l&&p.length>1&&h.nodeType===9&&!M&&m.match.ID.test(p[0])&&!m.match.ID.test(p[p.length-1])){u=o.find(p.shift(),h,M);h=u.expr?o.filter(u.expr,u.set)[0]:u.set[0]}if(h){u=
+l?{expr:p.pop(),set:A(l)}:o.find(p.pop(),p.length===1&&(p[0]==="~"||p[0]==="+")&&h.parentNode?h.parentNode:h,M);t=u.expr?o.filter(u.expr,u.set):u.set;if(p.length>0)y=A(t);else H=false;for(;p.length;){var D=p.pop();u=D;if(m.relative[D])u=p.pop();else D="";if(u==null)u=h;m.relative[D](y,u,M)}}else y=[]}y||(y=t);y||o.error(D||g);if(i.call(y)==="[object Array]")if(H)if(h&&h.nodeType===1)for(g=0;y[g]!=null;g++){if(y[g]&&(y[g]===true||y[g].nodeType===1&&E(h,y[g])))k.push(t[g])}else for(g=0;y[g]!=null;g++)y[g]&&
+y[g].nodeType===1&&k.push(t[g]);else k.push.apply(k,y);else A(y,k);if(R){o(R,q,k,l);o.uniqueSort(k)}return k};o.uniqueSort=function(g){if(C){j=n;g.sort(C);if(j)for(var h=1;h<g.length;h++)g[h]===g[h-1]&&g.splice(h--,1)}return g};o.matches=function(g,h){return o(g,null,null,h)};o.find=function(g,h,k){var l,q;if(!g)return[];for(var p=0,u=m.order.length;p<u;p++){var t=m.order[p];if(q=m.leftMatch[t].exec(g)){var y=q[1];q.splice(1,1);if(y.substr(y.length-1)!=="\\"){q[1]=(q[1]||"").replace(/\\/g,"");l=m.find[t](q,
+h,k);if(l!=null){g=g.replace(m.match[t],"");break}}}}l||(l=h.getElementsByTagName("*"));return{set:l,expr:g}};o.filter=function(g,h,k,l){for(var q=g,p=[],u=h,t,y,R=h&&h[0]&&w(h[0]);g&&h.length;){for(var H in m.filter)if((t=m.leftMatch[H].exec(g))!=null&&t[2]){var M=m.filter[H],I,D;D=t[1];y=false;t.splice(1,1);if(D.substr(D.length-1)!=="\\"){if(u===p)p=[];if(m.preFilter[H])if(t=m.preFilter[H](t,u,k,p,l,R)){if(t===true)continue}else y=I=true;if(t)for(var U=0;(D=u[U])!=null;U++)if(D){I=M(D,t,U,u);var Da=
+l^!!I;if(k&&I!=null)if(Da)y=true;else u[U]=false;else if(Da){p.push(D);y=true}}if(I!==v){k||(u=p);g=g.replace(m.match[H],"");if(!y)return[];break}}}if(g===q)if(y==null)o.error(g);else break;q=g}return u};o.error=function(g){throw"Syntax error, unrecognized expression: "+g;};var m=o.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,
+TAG:/^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(g){return g.getAttribute("href")}},relative:{"+":function(g,h){var k=typeof h==="string",l=k&&!/\W/.test(h);k=k&&!l;if(l)h=h.toLowerCase();l=0;for(var q=g.length,
+p;l<q;l++)if(p=g[l]){for(;(p=p.previousSibling)&&p.nodeType!==1;);g[l]=k||p&&p.nodeName.toLowerCase()===h?p||false:p===h}k&&o.filter(h,g,true)},">":function(g,h){var k=typeof h==="string";if(k&&!/\W/.test(h)){h=h.toLowerCase();for(var l=0,q=g.length;l<q;l++){var p=g[l];if(p){k=p.parentNode;g[l]=k.nodeName.toLowerCase()===h?k:false}}}else{l=0;for(q=g.length;l<q;l++)if(p=g[l])g[l]=k?p.parentNode:p.parentNode===h;k&&o.filter(h,g,true)}},"":function(g,h,k){var l=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=
+h=h.toLowerCase();q=b}q("parentNode",h,l,g,p,k)},"~":function(g,h,k){var l=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("previousSibling",h,l,g,p,k)}},find:{ID:function(g,h,k){if(typeof h.getElementById!=="undefined"&&!k)return(g=h.getElementById(g[1]))?[g]:[]},NAME:function(g,h){if(typeof h.getElementsByName!=="undefined"){var k=[];h=h.getElementsByName(g[1]);for(var l=0,q=h.length;l<q;l++)h[l].getAttribute("name")===g[1]&&k.push(h[l]);return k.length===0?null:k}},
+TAG:function(g,h){return h.getElementsByTagName(g[1])}},preFilter:{CLASS:function(g,h,k,l,q,p){g=" "+g[1].replace(/\\/g,"")+" ";if(p)return g;p=0;for(var u;(u=h[p])!=null;p++)if(u)if(q^(u.className&&(" "+u.className+" ").replace(/[\t\n]/g," ").indexOf(g)>=0))k||l.push(u);else if(k)h[p]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()},CHILD:function(g){if(g[1]==="nth"){var h=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&
+"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=h[1]+(h[2]||1)-0;g[3]=h[3]-0}g[0]=e++;return g},ATTR:function(g,h,k,l,q,p){h=g[1].replace(/\\/g,"");if(!p&&m.attrMap[h])g[1]=m.attrMap[h];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,h,k,l,q){if(g[1]==="not")if((f.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=o(g[3],null,null,h);else{g=o.filter(g[3],h,k,true^q);k||l.push.apply(l,g);return false}else if(m.match.POS.test(g[0])||m.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);
+return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled===true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,h,k){return!!o(k[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)},text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===
+g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"===g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}},setFilters:{first:function(g,h){return h===0},last:function(g,h,k,l){return h===l.length-1},even:function(g,h){return h%2===
+0},odd:function(g,h){return h%2===1},lt:function(g,h,k){return h<k[3]-0},gt:function(g,h,k){return h>k[3]-0},nth:function(g,h,k){return k[3]-0===h},eq:function(g,h,k){return k[3]-0===h}},filter:{PSEUDO:function(g,h,k,l){var q=h[1],p=m.filters[q];if(p)return p(g,k,h,l);else if(q==="contains")return(g.textContent||g.innerText||a([g])||"").indexOf(h[3])>=0;else if(q==="not"){h=h[3];k=0;for(l=h.length;k<l;k++)if(h[k]===g)return false;return true}else o.error("Syntax error, unrecognized expression: "+
+q)},CHILD:function(g,h){var k=h[1],l=g;switch(k){case "only":case "first":for(;l=l.previousSibling;)if(l.nodeType===1)return false;if(k==="first")return true;l=g;case "last":for(;l=l.nextSibling;)if(l.nodeType===1)return false;return true;case "nth":k=h[2];var q=h[3];if(k===1&&q===0)return true;h=h[0];var p=g.parentNode;if(p&&(p.sizcache!==h||!g.nodeIndex)){var u=0;for(l=p.firstChild;l;l=l.nextSibling)if(l.nodeType===1)l.nodeIndex=++u;p.sizcache=h}g=g.nodeIndex-q;return k===0?g===0:g%k===0&&g/k>=
+0}},ID:function(g,h){return g.nodeType===1&&g.getAttribute("id")===h},TAG:function(g,h){return h==="*"&&g.nodeType===1||g.nodeName.toLowerCase()===h},CLASS:function(g,h){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(h)>-1},ATTR:function(g,h){var k=h[1];g=m.attrHandle[k]?m.attrHandle[k](g):g[k]!=null?g[k]:g.getAttribute(k);k=g+"";var l=h[2];h=h[4];return g==null?l==="!=":l==="="?k===h:l==="*="?k.indexOf(h)>=0:l==="~="?(" "+k+" ").indexOf(h)>=0:!h?k&&g!==false:l==="!="?k!==h:l==="^="?
+k.indexOf(h)===0:l==="$="?k.substr(k.length-h.length)===h:l==="|="?k===h||k.substr(0,h.length+1)===h+"-":false},POS:function(g,h,k,l){var q=m.setFilters[h[2]];if(q)return q(g,k,h,l)}}},s=m.match.POS;for(var x in m.match){m.match[x]=new RegExp(m.match[x].source+/(?![^\[]*\])(?![^\(]*\))/.source);m.leftMatch[x]=new RegExp(/(^(?:.|\r|\n)*?)/.source+m.match[x].source.replace(/\\(\d+)/g,function(g,h){return"\\"+(h-0+1)}))}var A=function(g,h){g=Array.prototype.slice.call(g,0);if(h){h.push.apply(h,g);return h}return g};
+try{Array.prototype.slice.call(r.documentElement.childNodes,0)}catch(B){A=function(g,h){h=h||[];if(i.call(g)==="[object Array]")Array.prototype.push.apply(h,g);else if(typeof g.length==="number")for(var k=0,l=g.length;k<l;k++)h.push(g[k]);else for(k=0;g[k];k++)h.push(g[k]);return h}}var C;if(r.documentElement.compareDocumentPosition)C=function(g,h){if(!g.compareDocumentPosition||!h.compareDocumentPosition){if(g==h)j=true;return g.compareDocumentPosition?-1:1}g=g.compareDocumentPosition(h)&4?-1:g===
+h?0:1;if(g===0)j=true;return g};else if("sourceIndex"in r.documentElement)C=function(g,h){if(!g.sourceIndex||!h.sourceIndex){if(g==h)j=true;return g.sourceIndex?-1:1}g=g.sourceIndex-h.sourceIndex;if(g===0)j=true;return g};else if(r.createRange)C=function(g,h){if(!g.ownerDocument||!h.ownerDocument){if(g==h)j=true;return g.ownerDocument?-1:1}var k=g.ownerDocument.createRange(),l=h.ownerDocument.createRange();k.setStart(g,0);k.setEnd(g,0);l.setStart(h,0);l.setEnd(h,0);g=k.compareBoundaryPoints(Range.START_TO_END,
+l);if(g===0)j=true;return g};(function(){var g=r.createElement("div"),h="script"+(new Date).getTime();g.innerHTML="<a name='"+h+"'/>";var k=r.documentElement;k.insertBefore(g,k.firstChild);if(r.getElementById(h)){m.find.ID=function(l,q,p){if(typeof q.getElementById!=="undefined"&&!p)return(q=q.getElementById(l[1]))?q.id===l[1]||typeof q.getAttributeNode!=="undefined"&&q.getAttributeNode("id").nodeValue===l[1]?[q]:v:[]};m.filter.ID=function(l,q){var p=typeof l.getAttributeNode!=="undefined"&&l.getAttributeNode("id");
+return l.nodeType===1&&p&&p.nodeValue===q}}k.removeChild(g);k=g=null})();(function(){var g=r.createElement("div");g.appendChild(r.createComment(""));if(g.getElementsByTagName("*").length>0)m.find.TAG=function(h,k){k=k.getElementsByTagName(h[1]);if(h[1]==="*"){h=[];for(var l=0;k[l];l++)k[l].nodeType===1&&h.push(k[l]);k=h}return k};g.innerHTML="<a href='#'></a>";if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")m.attrHandle.href=function(h){return h.getAttribute("href",
+2)};g=null})();r.querySelectorAll&&function(){var g=o,h=r.createElement("div");h.innerHTML="<p class='TEST'></p>";if(!(h.querySelectorAll&&h.querySelectorAll(".TEST").length===0)){o=function(l,q,p,u){q=q||r;if(!u&&q.nodeType===9&&!w(q))try{return A(q.querySelectorAll(l),p)}catch(t){}return g(l,q,p,u)};for(var k in g)o[k]=g[k];h=null}}();(function(){var g=r.createElement("div");g.innerHTML="<div class='test e'></div><div class='test'></div>";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===
+0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){m.order.splice(1,0,"CLASS");m.find.CLASS=function(h,k,l){if(typeof k.getElementsByClassName!=="undefined"&&!l)return k.getElementsByClassName(h[1])};g=null}}})();var E=r.compareDocumentPosition?function(g,h){return g.compareDocumentPosition(h)&16}:function(g,h){return g!==h&&(g.contains?g.contains(h):true)},w=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false},fa=function(g,h){var k=[],
+l="",q;for(h=h.nodeType?[h]:h;q=m.match.PSEUDO.exec(g);){l+=q[0];g=g.replace(m.match.PSEUDO,"")}g=m.relative[g]?g+"*":g;q=0;for(var p=h.length;q<p;q++)o(g,h[q],k);return o.filter(l,k)};c.find=o;c.expr=o.selectors;c.expr[":"]=c.expr.filters;c.unique=o.uniqueSort;c.getText=a;c.isXMLDoc=w;c.contains=E})();var bb=/Until$/,cb=/^(?:parents|prevUntil|prevAll)/,db=/,/;Q=Array.prototype.slice;var Ea=function(a,b,d){if(c.isFunction(b))return c.grep(a,function(e,i){return!!b.call(e,i,e)===d});else if(b.nodeType)return c.grep(a,
+function(e){return e===b===d});else if(typeof b==="string"){var f=c.grep(a,function(e){return e.nodeType===1});if(Qa.test(b))return c.filter(b,f,!d);else b=c.filter(b,f)}return c.grep(a,function(e){return c.inArray(e,b)>=0===d})};c.fn.extend({find:function(a){for(var b=this.pushStack("","find",a),d=0,f=0,e=this.length;f<e;f++){d=b.length;c.find(a,this[f],b);if(f>0)for(var i=d;i<b.length;i++)for(var j=0;j<d;j++)if(b[j]===b[i]){b.splice(i--,1);break}}return b},has:function(a){var b=c(a);return this.filter(function(){for(var d=
+0,f=b.length;d<f;d++)if(c.contains(this,b[d]))return true})},not:function(a){return this.pushStack(Ea(this,a,false),"not",a)},filter:function(a){return this.pushStack(Ea(this,a,true),"filter",a)},is:function(a){return!!a&&c.filter(a,this).length>0},closest:function(a,b){if(c.isArray(a)){var d=[],f=this[0],e,i={},j;if(f&&a.length){e=0;for(var n=a.length;e<n;e++){j=a[e];i[j]||(i[j]=c.expr.match.POS.test(j)?c(j,b||this.context):j)}for(;f&&f.ownerDocument&&f!==b;){for(j in i){e=i[j];if(e.jquery?e.index(f)>
+-1:c(f).is(e)){d.push({selector:j,elem:f});delete i[j]}}f=f.parentNode}}return d}var o=c.expr.match.POS.test(a)?c(a,b||this.context):null;return this.map(function(m,s){for(;s&&s.ownerDocument&&s!==b;){if(o?o.index(s)>-1:c(s).is(a))return s;s=s.parentNode}return null})},index:function(a){if(!a||typeof a==="string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){a=typeof a==="string"?c(a,b||this.context):c.makeArray(a);b=c.merge(this.get(),
+a);return this.pushStack(pa(a[0])||pa(b[0])?b:c.unique(b))},andSelf:function(){return this.add(this.prevObject)}});c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode",d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a,2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},
+nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a,b){c.fn[a]=function(d,f){var e=c.map(this,b,d);bb.test(a)||(f=d);if(f&&typeof f==="string")e=c.filter(f,e);e=this.length>1?c.unique(e):
+e;if((this.length>1||db.test(f))&&cb.test(a))e=e.reverse();return this.pushStack(e,a,Q.call(arguments).join(","))}});c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return c.find.matches(a,b)},dir:function(a,b,d){var f=[];for(a=a[b];a&&a.nodeType!==9&&(d===v||a.nodeType!==1||!c(a).is(d));){a.nodeType===1&&f.push(a);a=a[b]}return f},nth:function(a,b,d){b=b||1;for(var f=0;a;a=a[d])if(a.nodeType===1&&++f===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!==
+b&&d.push(a);return d}});var Fa=/ jQuery\d+="(?:\d+|null)"/g,V=/^\s+/,Ga=/(<([\w:]+)[^>]*?)\/>/g,eb=/^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i,Ha=/<([\w:]+)/,fb=/<tbody/i,gb=/<|&\w+;/,sa=/checked\s*(?:[^=]|=\s*.checked.)/i,Ia=function(a,b,d){return eb.test(d)?a:b+"></"+d+">"},F={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],
+col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]};F.optgroup=F.option;F.tbody=F.tfoot=F.colgroup=F.caption=F.thead;F.th=F.td;if(!c.support.htmlSerialize)F._default=[1,"div<div>","</div>"];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d=c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==v)return this.empty().append((this[0]&&this[0].ownerDocument||r).createTextNode(a));return c.getText(this)},
+wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this},wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length?
+d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,
+false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=c(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&
+!c.isXMLDoc(this)){var d=this.outerHTML,f=this.ownerDocument;if(!d){d=f.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(Fa,"").replace(V,"")],f)[0]}else return this.cloneNode(true)});if(a===true){qa(this,b);qa(this.find("*"),b.find("*"))}return b},html:function(a){if(a===v)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Fa,""):null;else if(typeof a==="string"&&!/<script/i.test(a)&&(c.support.leadingWhitespace||!V.test(a))&&!F[(Ha.exec(a)||
+["",""])[1].toLowerCase()]){a=a.replace(Ga,Ia);try{for(var b=0,d=this.length;b<d;b++)if(this[b].nodeType===1){c.cleanData(this[b].getElementsByTagName("*"));this[b].innerHTML=a}}catch(f){this.empty().append(a)}}else c.isFunction(a)?this.each(function(e){var i=c(this),j=i.html();i.empty().append(function(){return a.call(this,e,j)})}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&this[0].parentNode){if(c.isFunction(a))return this.each(function(b){var d=c(this),f=d.html();d.replaceWith(a.call(this,
+b,f))});else a=c(a).detach();return this.each(function(){var b=this.nextSibling,d=this.parentNode;c(this).remove();b?c(b).before(a):c(d).append(a)})}else return this.pushStack(c(c.isFunction(a)?a():a),"replaceWith",a)},detach:function(a){return this.remove(a,true)},domManip:function(a,b,d){function f(s){return c.nodeName(s,"table")?s.getElementsByTagName("tbody")[0]||s.appendChild(s.ownerDocument.createElement("tbody")):s}var e,i,j=a[0],n=[];if(!c.support.checkClone&&arguments.length===3&&typeof j===
+"string"&&sa.test(j))return this.each(function(){c(this).domManip(a,b,d,true)});if(c.isFunction(j))return this.each(function(s){var x=c(this);a[0]=j.call(this,s,b?x.html():v);x.domManip(a,b,d)});if(this[0]){e=a[0]&&a[0].parentNode&&a[0].parentNode.nodeType===11?{fragment:a[0].parentNode}:ra(a,this,n);if(i=e.fragment.firstChild){b=b&&c.nodeName(i,"tr");for(var o=0,m=this.length;o<m;o++)d.call(b?f(this[o],i):this[o],e.cacheable||this.length>1||o>0?e.fragment.cloneNode(true):e.fragment)}n&&c.each(n,
+Ma)}return this}});c.fragments={};c.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var f=[];d=c(d);for(var e=0,i=d.length;e<i;e++){var j=(e>0?this.clone(true):this).get();c.fn[b].apply(c(d[e]),j);f=f.concat(j)}return this.pushStack(f,a,d.selector)}});c.each({remove:function(a,b){if(!a||c.filter(a,[this]).length){if(!b&&this.nodeType===1){c.cleanData(this.getElementsByTagName("*"));c.cleanData([this])}this.parentNode&&
+this.parentNode.removeChild(this)}},empty:function(){for(this.nodeType===1&&c.cleanData(this.getElementsByTagName("*"));this.firstChild;)this.removeChild(this.firstChild)}},function(a,b){c.fn[a]=function(){return this.each(b,arguments)}});c.extend({clean:function(a,b,d,f){b=b||r;if(typeof b.createElement==="undefined")b=b.ownerDocument||b[0]&&b[0].ownerDocument||r;var e=[];c.each(a,function(i,j){if(typeof j==="number")j+="";if(j){if(typeof j==="string"&&!gb.test(j))j=b.createTextNode(j);else if(typeof j===
+"string"){j=j.replace(Ga,Ia);var n=(Ha.exec(j)||["",""])[1].toLowerCase(),o=F[n]||F._default,m=o[0];i=b.createElement("div");for(i.innerHTML=o[1]+j+o[2];m--;)i=i.lastChild;if(!c.support.tbody){m=fb.test(j);n=n==="table"&&!m?i.firstChild&&i.firstChild.childNodes:o[1]==="<table>"&&!m?i.childNodes:[];for(o=n.length-1;o>=0;--o)c.nodeName(n[o],"tbody")&&!n[o].childNodes.length&&n[o].parentNode.removeChild(n[o])}!c.support.leadingWhitespace&&V.test(j)&&i.insertBefore(b.createTextNode(V.exec(j)[0]),i.firstChild);
+j=c.makeArray(i.childNodes)}if(j.nodeType)e.push(j);else e=c.merge(e,j)}});if(d)for(a=0;e[a];a++)if(f&&c.nodeName(e[a],"script")&&(!e[a].type||e[a].type.toLowerCase()==="text/javascript"))f.push(e[a].parentNode?e[a].parentNode.removeChild(e[a]):e[a]);else{e[a].nodeType===1&&e.splice.apply(e,[a+1,0].concat(c.makeArray(e[a].getElementsByTagName("script"))));d.appendChild(e[a])}return e},cleanData:function(a){for(var b=0,d;(d=a[b])!=null;b++){c.event.remove(d);c.removeData(d)}}});var hb=/z-?index|font-?weight|opacity|zoom|line-?height/i,
+Ja=/alpha\([^)]*\)/,Ka=/opacity=([^)]*)/,ga=/float/i,ha=/-([a-z])/ig,ib=/([A-Z])/g,jb=/^-?\d+(?:px)?$/i,kb=/^-?\d/,lb={position:"absolute",visibility:"hidden",display:"block"},mb=["Left","Right"],nb=["Top","Bottom"],ob=r.defaultView&&r.defaultView.getComputedStyle,La=c.support.cssFloat?"cssFloat":"styleFloat",ia=function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){return X(this,a,b,true,function(d,f,e){if(e===v)return c.curCSS(d,f);if(typeof e==="number"&&!hb.test(f))e+="px";c.style(d,f,e)})};
+c.extend({style:function(a,b,d){if(!a||a.nodeType===3||a.nodeType===8)return v;if((b==="width"||b==="height")&&parseFloat(d)<0)d=v;var f=a.style||a,e=d!==v;if(!c.support.opacity&&b==="opacity"){if(e){f.zoom=1;b=parseInt(d,10)+""==="NaN"?"":"alpha(opacity="+d*100+")";a=f.filter||c.curCSS(a,"filter")||"";f.filter=Ja.test(a)?a.replace(Ja,b):b}return f.filter&&f.filter.indexOf("opacity=")>=0?parseFloat(Ka.exec(f.filter)[1])/100+"":""}if(ga.test(b))b=La;b=b.replace(ha,ia);if(e)f[b]=d;return f[b]},css:function(a,
+b,d,f){if(b==="width"||b==="height"){var e,i=b==="width"?mb:nb;function j(){e=b==="width"?a.offsetWidth:a.offsetHeight;f!=="border"&&c.each(i,function(){f||(e-=parseFloat(c.curCSS(a,"padding"+this,true))||0);if(f==="margin")e+=parseFloat(c.curCSS(a,"margin"+this,true))||0;else e-=parseFloat(c.curCSS(a,"border"+this+"Width",true))||0})}a.offsetWidth!==0?j():c.swap(a,lb,j);return Math.max(0,Math.round(e))}return c.curCSS(a,b,d)},curCSS:function(a,b,d){var f,e=a.style;if(!c.support.opacity&&b==="opacity"&&
+a.currentStyle){f=Ka.test(a.currentStyle.filter||"")?parseFloat(RegExp.$1)/100+"":"";return f===""?"1":f}if(ga.test(b))b=La;if(!d&&e&&e[b])f=e[b];else if(ob){if(ga.test(b))b="float";b=b.replace(ib,"-$1").toLowerCase();e=a.ownerDocument.defaultView;if(!e)return null;if(a=e.getComputedStyle(a,null))f=a.getPropertyValue(b);if(b==="opacity"&&f==="")f="1"}else if(a.currentStyle){d=b.replace(ha,ia);f=a.currentStyle[b]||a.currentStyle[d];if(!jb.test(f)&&kb.test(f)){b=e.left;var i=a.runtimeStyle.left;a.runtimeStyle.left=
+a.currentStyle.left;e.left=d==="fontSize"?"1em":f||0;f=e.pixelLeft+"px";e.left=b;a.runtimeStyle.left=i}}return f},swap:function(a,b,d){var f={};for(var e in b){f[e]=a.style[e];a.style[e]=b[e]}d.call(a);for(e in b)a.style[e]=f[e]}});if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b=a.offsetWidth,d=a.offsetHeight,f=a.nodeName.toLowerCase()==="tr";return b===0&&d===0&&!f?true:b>0&&d>0&&!f?false:c.curCSS(a,"display")==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var pb=
+J(),qb=/<script(.|\s)*?\/script>/gi,rb=/select|textarea/i,sb=/color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i,N=/=\?(&|$)/,ja=/\?/,tb=/(\?|&)_=.*?(&|$)/,ub=/^(\w+:)?\/\/([^\/?#]+)/,vb=/%20/g;c.fn.extend({_load:c.fn.load,load:function(a,b,d){if(typeof a!=="string")return this._load(a);else if(!this.length)return this;var f=a.indexOf(" ");if(f>=0){var e=a.slice(f,a.length);a=a.slice(0,f)}f="GET";if(b)if(c.isFunction(b)){d=b;b=null}else if(typeof b==="object"){b=
+c.param(b,c.ajaxSettings.traditional);f="POST"}var i=this;c.ajax({url:a,type:f,dataType:"html",data:b,complete:function(j,n){if(n==="success"||n==="notmodified")i.html(e?c("<div />").append(j.responseText.replace(qb,"")).find(e):j.responseText);d&&i.each(d,[j.responseText,n,j])}});return this},serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?c.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&
+(this.checked||rb.test(this.nodeName)||sb.test(this.type))}).map(function(a,b){a=c(this).val();return a==null?null:c.isArray(a)?c.map(a,function(d){return{name:b.name,value:d}}):{name:b.name,value:a}}).get()}});c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){c.fn[b]=function(d){return this.bind(b,d)}});c.extend({get:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b=null}return c.ajax({type:"GET",url:a,data:b,success:d,dataType:f})},getScript:function(a,
+b){return c.get(a,null,b,"script")},getJSON:function(a,b,d){return c.get(a,b,d,"json")},post:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b={}}return c.ajax({type:"POST",url:a,data:b,success:d,dataType:f})},ajaxSetup:function(a){c.extend(c.ajaxSettings,a)},ajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:z.XMLHttpRequest&&(z.location.protocol!=="file:"||!z.ActiveXObject)?function(){return new z.XMLHttpRequest}:
+function(){try{return new z.ActiveXObject("Microsoft.XMLHTTP")}catch(a){}},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},etag:{},ajax:function(a){function b(){e.success&&e.success.call(o,n,j,w);e.global&&f("ajaxSuccess",[w,e])}function d(){e.complete&&e.complete.call(o,w,j);e.global&&f("ajaxComplete",[w,e]);e.global&&!--c.active&&c.event.trigger("ajaxStop")}
+function f(q,p){(e.context?c(e.context):c.event).trigger(q,p)}var e=c.extend(true,{},c.ajaxSettings,a),i,j,n,o=a&&a.context||e,m=e.type.toUpperCase();if(e.data&&e.processData&&typeof e.data!=="string")e.data=c.param(e.data,e.traditional);if(e.dataType==="jsonp"){if(m==="GET")N.test(e.url)||(e.url+=(ja.test(e.url)?"&":"?")+(e.jsonp||"callback")+"=?");else if(!e.data||!N.test(e.data))e.data=(e.data?e.data+"&":"")+(e.jsonp||"callback")+"=?";e.dataType="json"}if(e.dataType==="json"&&(e.data&&N.test(e.data)||
+N.test(e.url))){i=e.jsonpCallback||"jsonp"+pb++;if(e.data)e.data=(e.data+"").replace(N,"="+i+"$1");e.url=e.url.replace(N,"="+i+"$1");e.dataType="script";z[i]=z[i]||function(q){n=q;b();d();z[i]=v;try{delete z[i]}catch(p){}A&&A.removeChild(B)}}if(e.dataType==="script"&&e.cache===null)e.cache=false;if(e.cache===false&&m==="GET"){var s=J(),x=e.url.replace(tb,"$1_="+s+"$2");e.url=x+(x===e.url?(ja.test(e.url)?"&":"?")+"_="+s:"")}if(e.data&&m==="GET")e.url+=(ja.test(e.url)?"&":"?")+e.data;e.global&&!c.active++&&
+c.event.trigger("ajaxStart");s=(s=ub.exec(e.url))&&(s[1]&&s[1]!==location.protocol||s[2]!==location.host);if(e.dataType==="script"&&m==="GET"&&s){var A=r.getElementsByTagName("head")[0]||r.documentElement,B=r.createElement("script");B.src=e.url;if(e.scriptCharset)B.charset=e.scriptCharset;if(!i){var C=false;B.onload=B.onreadystatechange=function(){if(!C&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){C=true;b();d();B.onload=B.onreadystatechange=null;A&&B.parentNode&&
+A.removeChild(B)}}}A.insertBefore(B,A.firstChild);return v}var E=false,w=e.xhr();if(w){e.username?w.open(m,e.url,e.async,e.username,e.password):w.open(m,e.url,e.async);try{if(e.data||a&&a.contentType)w.setRequestHeader("Content-Type",e.contentType);if(e.ifModified){c.lastModified[e.url]&&w.setRequestHeader("If-Modified-Since",c.lastModified[e.url]);c.etag[e.url]&&w.setRequestHeader("If-None-Match",c.etag[e.url])}s||w.setRequestHeader("X-Requested-With","XMLHttpRequest");w.setRequestHeader("Accept",
+e.dataType&&e.accepts[e.dataType]?e.accepts[e.dataType]+", */*":e.accepts._default)}catch(fa){}if(e.beforeSend&&e.beforeSend.call(o,w,e)===false){e.global&&!--c.active&&c.event.trigger("ajaxStop");w.abort();return false}e.global&&f("ajaxSend",[w,e]);var g=w.onreadystatechange=function(q){if(!w||w.readyState===0||q==="abort"){E||d();E=true;if(w)w.onreadystatechange=c.noop}else if(!E&&w&&(w.readyState===4||q==="timeout")){E=true;w.onreadystatechange=c.noop;j=q==="timeout"?"timeout":!c.httpSuccess(w)?
+"error":e.ifModified&&c.httpNotModified(w,e.url)?"notmodified":"success";var p;if(j==="success")try{n=c.httpData(w,e.dataType,e)}catch(u){j="parsererror";p=u}if(j==="success"||j==="notmodified")i||b();else c.handleError(e,w,j,p);d();q==="timeout"&&w.abort();if(e.async)w=null}};try{var h=w.abort;w.abort=function(){w&&h.call(w);g("abort")}}catch(k){}e.async&&e.timeout>0&&setTimeout(function(){w&&!E&&g("timeout")},e.timeout);try{w.send(m==="POST"||m==="PUT"||m==="DELETE"?e.data:null)}catch(l){c.handleError(e,
+w,null,l);d()}e.async||g();return w}},handleError:function(a,b,d,f){if(a.error)a.error.call(a.context||a,b,d,f);if(a.global)(a.context?c(a.context):c.event).trigger("ajaxError",[b,a,f])},active:0,httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"||a.status>=200&&a.status<300||a.status===304||a.status===1223||a.status===0}catch(b){}return false},httpNotModified:function(a,b){var d=a.getResponseHeader("Last-Modified"),f=a.getResponseHeader("Etag");if(d)c.lastModified[b]=d;if(f)c.etag[b]=
+f;return a.status===304||a.status===0},httpData:function(a,b,d){var f=a.getResponseHeader("content-type")||"",e=b==="xml"||!b&&f.indexOf("xml")>=0;a=e?a.responseXML:a.responseText;e&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if(d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof a==="string")if(b==="json"||!b&&f.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"||!b&&f.indexOf("javascript")>=0)c.globalEval(a);return a},param:function(a,b){function d(j,n){if(c.isArray(n))c.each(n,
+function(o,m){b?f(j,m):d(j+"["+(typeof m==="object"||c.isArray(m)?o:"")+"]",m)});else!b&&n!=null&&typeof n==="object"?c.each(n,function(o,m){d(j+"["+o+"]",m)}):f(j,n)}function f(j,n){n=c.isFunction(n)?n():n;e[e.length]=encodeURIComponent(j)+"="+encodeURIComponent(n)}var e=[];if(b===v)b=c.ajaxSettings.traditional;if(c.isArray(a)||a.jquery)c.each(a,function(){f(this.name,this.value)});else for(var i in a)d(i,a[i]);return e.join("&").replace(vb,"+")}});var ka={},wb=/toggle|show|hide/,xb=/^([+-]=)?([\d+-.]+)(.*)$/,
+W,ta=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b){if(a||a===0)return this.animate(K("show",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");this[a].style.display=d||"";if(c.css(this[a],"display")==="none"){d=this[a].nodeName;var f;if(ka[d])f=ka[d];else{var e=c("<"+d+" />").appendTo("body");f=e.css("display");if(f==="none")f="block";e.remove();
+ka[d]=f}c.data(this[a],"olddisplay",f)}}a=0;for(b=this.length;a<b;a++)this[a].style.display=c.data(this[a],"olddisplay")||"";return this}},hide:function(a,b){if(a||a===0)return this.animate(K("hide",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");!d&&d!=="none"&&c.data(this[a],"olddisplay",c.css(this[a],"display"))}a=0;for(b=this.length;a<b;a++)this[a].style.display="none";return this}},_toggle:c.fn.toggle,toggle:function(a,b){var d=typeof a==="boolean";if(c.isFunction(a)&&
+c.isFunction(b))this._toggle.apply(this,arguments);else a==null||d?this.each(function(){var f=d?a:c(this).is(":hidden");c(this)[f?"show":"hide"]()}):this.animate(K("toggle",3),a,b);return this},fadeTo:function(a,b,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,d)},animate:function(a,b,d,f){var e=c.speed(b,d,f);if(c.isEmptyObject(a))return this.each(e.complete);return this[e.queue===false?"each":"queue"](function(){var i=c.extend({},e),j,n=this.nodeType===1&&c(this).is(":hidden"),
+o=this;for(j in a){var m=j.replace(ha,ia);if(j!==m){a[m]=a[j];delete a[j];j=m}if(a[j]==="hide"&&n||a[j]==="show"&&!n)return i.complete.call(this);if((j==="height"||j==="width")&&this.style){i.display=c.css(this,"display");i.overflow=this.style.overflow}if(c.isArray(a[j])){(i.specialEasing=i.specialEasing||{})[j]=a[j][1];a[j]=a[j][0]}}if(i.overflow!=null)this.style.overflow="hidden";i.curAnim=c.extend({},a);c.each(a,function(s,x){var A=new c.fx(o,i,s);if(wb.test(x))A[x==="toggle"?n?"show":"hide":x](a);
+else{var B=xb.exec(x),C=A.cur(true)||0;if(B){x=parseFloat(B[2]);var E=B[3]||"px";if(E!=="px"){o.style[s]=(x||1)+E;C=(x||1)/A.cur(true)*C;o.style[s]=C+E}if(B[1])x=(B[1]==="-="?-1:1)*x+C;A.custom(C,x,E)}else A.custom(C,x,"")}});return true})},stop:function(a,b){var d=c.timers;a&&this.queue([]);this.each(function(){for(var f=d.length-1;f>=0;f--)if(d[f].elem===this){b&&d[f](true);d.splice(f,1)}});b||this.dequeue();return this}});c.each({slideDown:K("show",1),slideUp:K("hide",1),slideToggle:K("toggle",
+1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(a,b){c.fn[a]=function(d,f){return this.animate(b,d,f)}});c.extend({speed:function(a,b,d){var f=a&&typeof a==="object"?a:{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};f.duration=c.fx.off?0:typeof f.duration==="number"?f.duration:c.fx.speeds[f.duration]||c.fx.speeds._default;f.old=f.complete;f.complete=function(){f.queue!==false&&c(this).dequeue();c.isFunction(f.old)&&f.old.call(this)};return f},easing:{linear:function(a,
+b,d,f){return d+f*a},swing:function(a,b,d,f){return(-Math.cos(a*Math.PI)/2+0.5)*f+d}},timers:[],fx:function(a,b,d){this.options=b;this.elem=a;this.prop=d;if(!b.orig)b.orig={}}});c.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(c.fx.step[this.prop]||c.fx.step._default)(this);if((this.prop==="height"||this.prop==="width")&&this.elem.style)this.elem.style.display="block"},cur:function(a){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==
+null))return this.elem[this.prop];return(a=parseFloat(c.css(this.elem,this.prop,a)))&&a>-10000?a:parseFloat(c.curCSS(this.elem,this.prop))||0},custom:function(a,b,d){function f(i){return e.step(i)}this.startTime=J();this.start=a;this.end=b;this.unit=d||this.unit||"px";this.now=this.start;this.pos=this.state=0;var e=this;f.elem=this.elem;if(f()&&c.timers.push(f)&&!W)W=setInterval(c.fx.tick,13)},show:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop===
+"width"||this.prop==="height"?1:0,this.cur());c(this.elem).show()},hide:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(a){var b=J(),d=true;if(a||b>=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var f in this.options.curAnim)if(this.options.curAnim[f]!==true)d=false;if(d){if(this.options.display!=null){this.elem.style.overflow=
+this.options.overflow;a=c.data(this.elem,"olddisplay");this.elem.style.display=a?a:this.options.display;if(c.css(this.elem,"display")==="none")this.elem.style.display="block"}this.options.hide&&c(this.elem).hide();if(this.options.hide||this.options.show)for(var e in this.options.curAnim)c.style(this.elem,e,this.options.orig[e]);this.options.complete.call(this.elem)}return false}else{e=b-this.startTime;this.state=e/this.options.duration;a=this.options.easing||(c.easing.swing?"swing":"linear");this.pos=
+c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||a](this.state,e,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return true}};c.extend(c.fx,{tick:function(){for(var a=c.timers,b=0;b<a.length;b++)a[b]()||a.splice(b--,1);a.length||c.fx.stop()},stop:function(){clearInterval(W);W=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){c.style(a.elem,"opacity",a.now)},_default:function(a){if(a.elem.style&&a.elem.style[a.prop]!=
+null)a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now):a.now)+a.unit;else a.elem[a.prop]=a.now}}});if(c.expr&&c.expr.filters)c.expr.filters.animated=function(a){return c.grep(c.timers,function(b){return a===b.elem}).length};c.fn.offset="getBoundingClientRect"in r.documentElement?function(a){var b=this[0];if(a)return this.each(function(e){c.offset.setOffset(this,a,e)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);var d=b.getBoundingClientRect(),
+f=b.ownerDocument;b=f.body;f=f.documentElement;return{top:d.top+(self.pageYOffset||c.support.boxModel&&f.scrollTop||b.scrollTop)-(f.clientTop||b.clientTop||0),left:d.left+(self.pageXOffset||c.support.boxModel&&f.scrollLeft||b.scrollLeft)-(f.clientLeft||b.clientLeft||0)}}:function(a){var b=this[0];if(a)return this.each(function(s){c.offset.setOffset(this,a,s)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);c.offset.initialize();var d=b.offsetParent,f=
+b,e=b.ownerDocument,i,j=e.documentElement,n=e.body;f=(e=e.defaultView)?e.getComputedStyle(b,null):b.currentStyle;for(var o=b.offsetTop,m=b.offsetLeft;(b=b.parentNode)&&b!==n&&b!==j;){if(c.offset.supportsFixedPosition&&f.position==="fixed")break;i=e?e.getComputedStyle(b,null):b.currentStyle;o-=b.scrollTop;m-=b.scrollLeft;if(b===d){o+=b.offsetTop;m+=b.offsetLeft;if(c.offset.doesNotAddBorder&&!(c.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(b.nodeName))){o+=parseFloat(i.borderTopWidth)||
+0;m+=parseFloat(i.borderLeftWidth)||0}f=d;d=b.offsetParent}if(c.offset.subtractsBorderForOverflowNotVisible&&i.overflow!=="visible"){o+=parseFloat(i.borderTopWidth)||0;m+=parseFloat(i.borderLeftWidth)||0}f=i}if(f.position==="relative"||f.position==="static"){o+=n.offsetTop;m+=n.offsetLeft}if(c.offset.supportsFixedPosition&&f.position==="fixed"){o+=Math.max(j.scrollTop,n.scrollTop);m+=Math.max(j.scrollLeft,n.scrollLeft)}return{top:o,left:m}};c.offset={initialize:function(){var a=r.body,b=r.createElement("div"),
+d,f,e,i=parseFloat(c.curCSS(a,"marginTop",true))||0;c.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"});b.innerHTML="<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";a.insertBefore(b,a.firstChild);
+d=b.firstChild;f=d.firstChild;e=d.nextSibling.firstChild.firstChild;this.doesNotAddBorder=f.offsetTop!==5;this.doesAddBorderForTableAndCells=e.offsetTop===5;f.style.position="fixed";f.style.top="20px";this.supportsFixedPosition=f.offsetTop===20||f.offsetTop===15;f.style.position=f.style.top="";d.style.overflow="hidden";d.style.position="relative";this.subtractsBorderForOverflowNotVisible=f.offsetTop===-5;this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==i;a.removeChild(b);c.offset.initialize=c.noop},
+bodyOffset:function(a){var b=a.offsetTop,d=a.offsetLeft;c.offset.initialize();if(c.offset.doesNotIncludeMarginInBodyOffset){b+=parseFloat(c.curCSS(a,"marginTop",true))||0;d+=parseFloat(c.curCSS(a,"marginLeft",true))||0}return{top:b,left:d}},setOffset:function(a,b,d){if(/static/.test(c.curCSS(a,"position")))a.style.position="relative";var f=c(a),e=f.offset(),i=parseInt(c.curCSS(a,"top",true),10)||0,j=parseInt(c.curCSS(a,"left",true),10)||0;if(c.isFunction(b))b=b.call(a,d,e);d={top:b.top-e.top+i,left:b.left-
+e.left+j};"using"in b?b.using.call(a,d):f.css(d)}};c.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),f=/^body|html$/i.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.curCSS(a,"marginTop",true))||0;d.left-=parseFloat(c.curCSS(a,"marginLeft",true))||0;f.top+=parseFloat(c.curCSS(b[0],"borderTopWidth",true))||0;f.left+=parseFloat(c.curCSS(b[0],"borderLeftWidth",true))||0;return{top:d.top-f.top,left:d.left-f.left}},offsetParent:function(){return this.map(function(){for(var a=
+this.offsetParent||r.body;a&&!/^body|html$/i.test(a.nodeName)&&c.css(a,"position")==="static";)a=a.offsetParent;return a})}});c.each(["Left","Top"],function(a,b){var d="scroll"+b;c.fn[d]=function(f){var e=this[0],i;if(!e)return null;if(f!==v)return this.each(function(){if(i=ua(this))i.scrollTo(!a?f:c(i).scrollLeft(),a?f:c(i).scrollTop());else this[d]=f});else return(i=ua(e))?"pageXOffset"in i?i[a?"pageYOffset":"pageXOffset"]:c.support.boxModel&&i.document.documentElement[d]||i.document.body[d]:e[d]}});
+c.each(["Height","Width"],function(a,b){var d=b.toLowerCase();c.fn["inner"+b]=function(){return this[0]?c.css(this[0],d,false,"padding"):null};c.fn["outer"+b]=function(f){return this[0]?c.css(this[0],d,false,f?"margin":"border"):null};c.fn[d]=function(f){var e=this[0];if(!e)return f==null?null:this;if(c.isFunction(f))return this.each(function(i){var j=c(this);j[d](f.call(this,i,j[d]()))});return"scrollTo"in e&&e.document?e.document.compatMode==="CSS1Compat"&&e.document.documentElement["client"+b]||
+e.document.body["client"+b]:e.nodeType===9?Math.max(e.documentElement["client"+b],e.body["scroll"+b],e.documentElement["scroll"+b],e.body["offset"+b],e.documentElement["offset"+b]):f===v?c.css(e,d):this.css(d,typeof f==="string"?f:f+"px")}});z.jQuery=z.$=c})(window);
+
diff --git a/js/util.js b/js/util.js
index b864867fd..c6a9682de 100644
--- a/js/util.js
+++ b/js/util.js
@@ -143,87 +143,85 @@ var SN = { // StatusNet
SN.U.Counter(form);
},
- FormXHR: function(f) {
- if (jQuery.data(f[0], "ElementData") === undefined) {
- jQuery.data(f[0], "ElementData", {Bind:'submit'});
- f.bind('submit', function(e) {
- form_id = $(this)[0].id;
- $.ajax({
- type: 'POST',
- dataType: 'xml',
- url: $(this)[0].action,
- data: $(this).serialize() + '&ajax=1',
- beforeSend: function(xhr) {
- $('#'+form_id).addClass(SN.C.S.Processing);
- $('#'+form_id+' .submit').addClass(SN.C.S.Disabled);
- $('#'+form_id+' .submit').attr(SN.C.S.Disabled, SN.C.S.Disabled);
- },
- error: function (xhr, textStatus, errorThrown) {
- alert(errorThrown || textStatus);
- },
- success: function(data, textStatus) {
- if (typeof($('form', data)[0]) != 'undefined') {
- form_new = document._importNode($('form', data)[0], true);
- $('#'+form_id).replaceWith(form_new);
- $('#'+form_new.id).each(function() { SN.U.FormXHR($(this)); });
- }
- else {
- $('#'+form_id).replaceWith(document._importNode($('p', data)[0], true));
- }
- }
- });
- return false;
- });
- }
+ FormXHR: function(form) {
+ $.ajax({
+ type: 'POST',
+ dataType: 'xml',
+ url: form.attr('action'),
+ data: form.serialize() + '&ajax=1',
+ beforeSend: function(xhr) {
+ form
+ .addClass(SN.C.S.Processing)
+ .find('.submit')
+ .addClass(SN.C.S.Disabled)
+ .attr(SN.C.S.Disabled, SN.C.S.Disabled);
+ },
+ error: function (xhr, textStatus, errorThrown) {
+ alert(errorThrown || textStatus);
+ },
+ success: function(data, textStatus) {
+ if (typeof($('form', data)[0]) != 'undefined') {
+ form_new = document._importNode($('form', data)[0], true);
+ form.replaceWith(form_new);
+ }
+ else {
+ form.replaceWith(document._importNode($('p', data)[0], true));
+ }
+ }
+ });
},
FormNoticeXHR: function(form) {
- var NDG, NLat, NLon, NLNS, NLID;
+ SN.C.I.NoticeDataGeo = {};
form_id = form.attr('id');
form.append('<input type="hidden" name="ajax" value="1"/>');
form.ajaxForm({
dataType: 'xml',
timeout: '60000',
beforeSend: function(formData) {
- if ($('#'+form_id+' #'+SN.C.S.NoticeDataText)[0].value.length === 0) {
+ if (form.find('#'+SN.C.S.NoticeDataText)[0].value.length === 0) {
form.addClass(SN.C.S.Warning);
return false;
}
- form.addClass(SN.C.S.Processing);
- $('#'+form_id+' #'+SN.C.S.NoticeActionSubmit).addClass(SN.C.S.Disabled);
- $('#'+form_id+' #'+SN.C.S.NoticeActionSubmit).attr(SN.C.S.Disabled, SN.C.S.Disabled);
-
- NLat = $('#'+SN.C.S.NoticeLat).val();
- NLon = $('#'+SN.C.S.NoticeLon).val();
- NLNS = $('#'+SN.C.S.NoticeLocationNs).val();
- NLID = $('#'+SN.C.S.NoticeLocationId).val();
- NDG = $('#'+SN.C.S.NoticeDataGeo).attr('checked');
+ form
+ .addClass(SN.C.S.Processing)
+ .find('#'+SN.C.S.NoticeActionSubmit)
+ .addClass(SN.C.S.Disabled)
+ .attr(SN.C.S.Disabled, SN.C.S.Disabled);
+
+ SN.C.I.NoticeDataGeo.NLat = $('#'+SN.C.S.NoticeLat).val();
+ SN.C.I.NoticeDataGeo.NLon = $('#'+SN.C.S.NoticeLon).val();
+ SN.C.I.NoticeDataGeo.NLNS = $('#'+SN.C.S.NoticeLocationNs).val();
+ SN.C.I.NoticeDataGeo.NLID = $('#'+SN.C.S.NoticeLocationId).val();
+ SN.C.I.NoticeDataGeo.NDG = $('#'+SN.C.S.NoticeDataGeo).attr('checked');
cookieValue = $.cookie(SN.C.S.NoticeDataGeoCookie);
if (cookieValue !== null && cookieValue != 'disabled') {
cookieValue = JSON.parse(cookieValue);
- NLat = $('#'+SN.C.S.NoticeLat).val(cookieValue.NLat).val();
- NLon = $('#'+SN.C.S.NoticeLon).val(cookieValue.NLon).val();
+ SN.C.I.NoticeDataGeo.NLat = $('#'+SN.C.S.NoticeLat).val(cookieValue.NLat).val();
+ SN.C.I.NoticeDataGeo.NLon = $('#'+SN.C.S.NoticeLon).val(cookieValue.NLon).val();
if ($('#'+SN.C.S.NoticeLocationNs).val(cookieValue.NLNS)) {
- NLNS = $('#'+SN.C.S.NoticeLocationNs).val(cookieValue.NLNS).val();
- NLID = $('#'+SN.C.S.NoticeLocationId).val(cookieValue.NLID).val();
+ SN.C.I.NoticeDataGeo.NLNS = $('#'+SN.C.S.NoticeLocationNs).val(cookieValue.NLNS).val();
+ SN.C.I.NoticeDataGeo.NLID = $('#'+SN.C.S.NoticeLocationId).val(cookieValue.NLID).val();
}
}
if (cookieValue == 'disabled') {
- NDG = $('#'+SN.C.S.NoticeDataGeo).attr('checked', false).attr('checked');
+ SN.C.I.NoticeDataGeo.NDG = $('#'+SN.C.S.NoticeDataGeo).attr('checked', false).attr('checked');
}
else {
- NDG = $('#'+SN.C.S.NoticeDataGeo).attr('checked', true).attr('checked');
+ SN.C.I.NoticeDataGeo.NDG = $('#'+SN.C.S.NoticeDataGeo).attr('checked', true).attr('checked');
}
return true;
},
error: function (xhr, textStatus, errorThrown) {
- form.removeClass(SN.C.S.Processing);
- $('#'+form_id+' #'+SN.C.S.NoticeActionSubmit).removeClass(SN.C.S.Disabled);
- $('#'+form_id+' #'+SN.C.S.NoticeActionSubmit).removeAttr(SN.C.S.Disabled, SN.C.S.Disabled);
- $('#'+form_id+' .form_response').remove();
+ form
+ .removeClass(SN.C.S.Processing)
+ .find('#'+SN.C.S.NoticeActionSubmit)
+ .removeClass(SN.C.S.Disabled)
+ .removeAttr(SN.C.S.Disabled, SN.C.S.Disabled);
+ form.find('.form_response').remove();
if (textStatus == 'timeout') {
form.append('<p class="form_response error">Sorry! We had trouble sending your notice. The servers are overloaded. Please try again, and contact the site administrator if this problem persists.</p>');
}
@@ -233,9 +231,10 @@ var SN = { // StatusNet
}
else {
if (parseInt(xhr.status) === 0 || jQuery.inArray(parseInt(xhr.status), SN.C.I.HTTP20x30x) >= 0) {
- $('#'+form_id).resetForm();
- $('#'+form_id+' #'+SN.C.S.NoticeDataAttachSelected).remove();
- SN.U.FormNoticeEnhancements($('#'+form_id));
+ form
+ .resetForm()
+ .find('#'+SN.C.S.NoticeDataAttachSelected).remove();
+ SN.U.FormNoticeEnhancements(form);
}
else {
form.append('<p class="form_response error">(Sorry! We had trouble sending your notice ('+xhr.status+' '+xhr.statusText+'). Please report the problem to the site administrator if this happens again.</p>');
@@ -244,7 +243,7 @@ var SN = { // StatusNet
}
},
success: function(data, textStatus) {
- $('#'+form_id+' .form_response').remove();
+ form.find('.form_response').remove();
var result;
if ($('#'+SN.C.S.Error, data).length > 0) {
result = document._importNode($('p', data)[0], true);
@@ -277,11 +276,11 @@ var SN = { // StatusNet
else {
notices.prepend(notice);
}
- $('#'+notice.id).css({display:'none'});
- $('#'+notice.id).fadeIn(2500);
+ $('#'+notice.id)
+ .css({display:'none'})
+ .fadeIn(2500);
SN.U.NoticeWithAttachment($('#'+notice.id));
SN.U.NoticeReplyTo($('#'+notice.id));
- SN.U.FormXHR($('#'+notice.id+' .form_favor'));
}
}
else {
@@ -290,24 +289,26 @@ var SN = { // StatusNet
form.append('<p class="form_response success">'+result_title+'</p>');
}
}
- $('#'+form_id).resetForm();
- $('#'+form_id+' #'+SN.C.S.NoticeInReplyTo).val('');
- $('#'+form_id+' #'+SN.C.S.NoticeDataAttachSelected).remove();
- SN.U.FormNoticeEnhancements($('#'+form_id));
+ form.resetForm();
+ form.find('#'+SN.C.S.NoticeInReplyTo).val('');
+ form.find('#'+SN.C.S.NoticeDataAttachSelected).remove();
+ SN.U.FormNoticeEnhancements(form);
}
},
complete: function(xhr, textStatus) {
- form.removeClass(SN.C.S.Processing);
- $('#'+form_id+' #'+SN.C.S.NoticeActionSubmit).removeAttr(SN.C.S.Disabled);
- $('#'+form_id+' #'+SN.C.S.NoticeActionSubmit).removeClass(SN.C.S.Disabled);
-
- $('#'+SN.C.S.NoticeLat).val(NLat);
- $('#'+SN.C.S.NoticeLon).val(NLon);
+ form
+ .removeClass(SN.C.S.Processing)
+ .find('#'+SN.C.S.NoticeActionSubmit)
+ .removeAttr(SN.C.S.Disabled)
+ .removeClass(SN.C.S.Disabled);
+
+ $('#'+SN.C.S.NoticeLat).val(SN.C.I.NoticeDataGeo.NLat);
+ $('#'+SN.C.S.NoticeLon).val(SN.C.I.NoticeDataGeo.NLon);
if ($('#'+SN.C.S.NoticeLocationNs)) {
- $('#'+SN.C.S.NoticeLocationNs).val(NLNS);
- $('#'+SN.C.S.NoticeLocationId).val(NLID);
+ $('#'+SN.C.S.NoticeLocationNs).val(SN.C.I.NoticeDataGeo.NLNS);
+ $('#'+SN.C.S.NoticeLocationId).val(SN.C.I.NoticeDataGeo.NLID);
}
- $('#'+SN.C.S.NoticeDataGeo).attr('checked', NDG);
+ $('#'+SN.C.S.NoticeDataGeo).attr('checked', SN.C.I.NoticeDataGeo.NDG);
}
});
},
@@ -350,14 +351,15 @@ var SN = { // StatusNet
},
NoticeFavor: function() {
- $('.form_favor').each(function() { SN.U.FormXHR($(this)); });
- $('.form_disfavor').each(function() { SN.U.FormXHR($(this)); });
+ $('.form_favor').live('click', function() { SN.U.FormXHR($(this)); return false; });
+ $('.form_disfavor').live('click', function() { SN.U.FormXHR($(this)); return false; });
},
NoticeRepeat: function() {
- $('.form_repeat').each(function() {
+ $('.form_repeat').live('click', function() {
SN.U.FormXHR($(this));
SN.U.NoticeRepeatConfirmation($(this));
+ return false;
});
},
@@ -639,7 +641,7 @@ var SN = { // StatusNet
NDM.bind('click', function() {
var NDMF = $('.entity_send-a-message form');
if (NDMF.length === 0) {
- $(this).addClass('processing');
+ $(this).addClass(SN.C.S.Processing);
$.get(NDM.attr('href'), null, function(data) {
$('.entity_send-a-message').append(document._importNode($('form', data)[0], true));
NDMF = $('.entity_send-a-message .form_notice');
@@ -650,7 +652,7 @@ var SN = { // StatusNet
NDMF.hide();
return false;
});
- NDM.removeClass('processing');
+ NDM.removeClass(SN.C.S.Processing);
});
}
else {
@@ -695,11 +697,11 @@ var SN = { // StatusNet
EntityActions: function() {
if ($('body.user_in').length > 0) {
- $('.form_user_subscribe').each(function() { SN.U.FormXHR($(this)); });
- $('.form_user_unsubscribe').each(function() { SN.U.FormXHR($(this)); });
- $('.form_group_join').each(function() { SN.U.FormXHR($(this)); });
- $('.form_group_leave').each(function() { SN.U.FormXHR($(this)); });
- $('.form_user_nudge').each(function() { SN.U.FormXHR($(this)); });
+ $('.form_user_subscribe').live('click', function() { SN.U.FormXHR($(this)); return false; });
+ $('.form_user_unsubscribe').live('click', function() { SN.U.FormXHR($(this)); return false; });
+ $('.form_group_join').live('click', function() { SN.U.FormXHR($(this)); return false; });
+ $('.form_group_leave').live('click', function() { SN.U.FormXHR($(this)); return false; });
+ $('.form_user_nudge').live('click', function() { SN.U.FormXHR($(this)); return false; });
SN.U.NewDirectMessage();
}
diff --git a/lib/api.php b/lib/api.php
index 825262b4c..7d94eaee4 100644
--- a/lib/api.php
+++ b/lib/api.php
@@ -299,7 +299,7 @@ class ApiAction extends Action
}
}
- if ($include_user) {
+ if ($include_user && $profile) {
# Don't get notice (recursive!)
$twitter_user = $this->twitterUserArray($profile, false);
$twitter_status['user'] = $twitter_user;
@@ -1250,10 +1250,27 @@ class ApiAction extends Action
case 'api':
break;
default:
+
+ $name = null;
+ $url = null;
+
$ns = Notice_source::staticGet($source);
+
if ($ns) {
- $source_name = '<a href="' . $ns->url . '">' . $ns->name . '</a>';
+ $name = $ns->name;
+ $url = $ns->url;
+ } else {
+ $app = Oauth_application::staticGet('name', $source);
+ if ($app) {
+ $name = $app->name;
+ $url = $app->source_url;
+ }
+ }
+
+ if (!empty($name) && !empty($url)) {
+ $source_name = '<a href="' . $url . '">' . $name . '</a>';
}
+
break;
}
return $source_name;
diff --git a/lib/apiauth.php b/lib/apiauth.php
index 262f4b966..25e2196cf 100644
--- a/lib/apiauth.php
+++ b/lib/apiauth.php
@@ -55,6 +55,7 @@ class ApiAuthAction extends ApiAction
{
var $auth_user_nickname = null;
var $auth_user_password = null;
+ var $oauth_source = null;
/**
* Take arguments for running, looks for an OAuth request,
@@ -73,28 +74,23 @@ class ApiAuthAction extends ApiAction
// NOTE: $this->auth_user has to get set in prepare(), not handle(),
// because subclasses do stuff with it in their prepares.
- if ($this->requiresAuth()) {
+ $oauthReq = $this->getOAuthRequest();
- $oauthReq = $this->getOAuthRequest();
-
- if (!$oauthReq) {
+ if (!$oauthReq) {
+ if ($this->requiresAuth()) {
$this->checkBasicAuthUser(true);
} else {
- $this->checkOAuthRequest($oauthReq);
+ // Check to see if a basic auth user is there even
+ // if one's not required
+ $this->checkBasicAuthUser(false);
}
} else {
-
- // Check to see if a basic auth user is there even
- // if one's not required
- $this->checkBasicAuthUser(false);
+ $this->checkOAuthRequest($oauthReq);
}
// Reject API calls with the wrong access level
if ($this->isReadOnly($args) == false) {
-
- common_debug(get_class($this) . ' is not read-only!');
-
if ($this->access != self::READ_WRITE) {
$msg = _('API resource requires read-write access, ' .
'but you only have read access.');
@@ -111,7 +107,6 @@ class ApiAuthAction extends ApiAction
* This is to avoid doign any unnecessary DB lookups.
*
* @return mixed the OAuthRequest or false
- *
*/
function getOAuthRequest()
@@ -140,7 +135,6 @@ class ApiAuthAction extends ApiAction
* @param OAuthRequest $request the OAuth Request
*
* @return nothing
- *
*/
function checkOAuthRequest($request)
diff --git a/lib/apioauthstore.php b/lib/apioauthstore.php
index 32110d057..1bb11cbca 100644
--- a/lib/apioauthstore.php
+++ b/lib/apioauthstore.php
@@ -159,5 +159,32 @@ class ApiStatusNetOAuthDataStore extends StatusNetOAuthDataStore
}
}
+ /**
+ * Revoke specified access token
+ *
+ * Revokes the token specified by $token_key.
+ * Throws exceptions in case of error.
+ *
+ * @param string $token_key the token to be revoked
+ * @param int $type type of token (0 = req, 1 = access)
+ *
+ * @access public
+ *
+ * @return void
+ */
+
+ public function revoke_token($token_key, $type = 0) {
+ $rt = new Token();
+ $rt->tok = $token_key;
+ $rt->type = $type;
+ $rt->state = 0;
+ if (!$rt->find(true)) {
+ throw new Exception('Tried to revoke unknown token');
+ }
+ if (!$rt->delete()) {
+ throw new Exception('Failed to delete revoked token');
+ }
+ }
+
}
diff --git a/lib/common.php b/lib/common.php
index ada48b339..b95cd1175 100644
--- a/lib/common.php
+++ b/lib/common.php
@@ -22,7 +22,7 @@ if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); }
//exit with 200 response, if this is checking fancy from the installer
if (isset($_REQUEST['p']) && $_REQUEST['p'] == 'check-fancy') { exit; }
-define('STATUSNET_VERSION', '0.9.0beta3');
+define('STATUSNET_VERSION', '0.9.0beta5');
define('LACONICA_VERSION', STATUSNET_VERSION); // compatibility
define('STATUSNET_CODENAME', 'Stand');
@@ -115,6 +115,10 @@ function __autoload($cls)
require_once 'Validate.php';
require_once 'markdown.php';
+// XXX: other formats here
+
+define('NICKNAME_FMT', VALIDATE_NUM.VALIDATE_ALPHA_LOWER);
+
require_once INSTALLDIR.'/lib/util.php';
require_once INSTALLDIR.'/lib/action.php';
require_once INSTALLDIR.'/lib/mail.php';
@@ -136,6 +140,3 @@ try {
exit;
}
-// XXX: other formats here
-
-define('NICKNAME_FMT', VALIDATE_NUM.VALIDATE_ALPHA_LOWER);
diff --git a/lib/default.php b/lib/default.php
index 64fb7a786..437f350dd 100644
--- a/lib/default.php
+++ b/lib/default.php
@@ -84,9 +84,12 @@ $default =
'control_channel' => '/topic/statusnet-control', // broadcasts to all queue daemons
'stomp_username' => null,
'stomp_password' => null,
+ 'stomp_persistent' => true, // keep items across queue server restart, if persistence is enabled
+ 'stomp_manual_failover' => true, // if multiple servers are listed, treat them as separate (enqueue on one randomly, listen on all)
'monitor' => null, // URL to monitor ping endpoint (work in progress)
'softlimit' => '90%', // total size or % of memory_limit at which to restart queue threads gracefully
'debug_memory' => false, // true to spit memory usage to log
+ 'inboxes' => true, // true to do inbox distribution & output queueing from in background via 'distrib' queue
),
'license' =>
array('type' => 'cc', # can be 'cc', 'allrightsreserved', 'private'
@@ -269,4 +272,8 @@ $default =
'singleuser' =>
array('enabled' => false,
'nickname' => null),
+ 'robotstxt' =>
+ array('crawldelay' => 0,
+ 'disallow' => array('main', 'settings', 'admin', 'search', 'message')
+ ),
);
diff --git a/lib/distribqueuehandler.php b/lib/distribqueuehandler.php
index f458d238d..4477468d0 100644
--- a/lib/distribqueuehandler.php
+++ b/lib/distribqueuehandler.php
@@ -62,23 +62,60 @@ class DistribQueueHandler
{
// XXX: do we need to change this for remote users?
- $notice->saveTags();
+ try {
+ $notice->saveTags();
+ } catch (Exception $e) {
+ $this->logit($notice, $e);
+ }
- $groups = $notice->saveGroups();
+ try {
+ $groups = $notice->saveGroups();
+ } catch (Exception $e) {
+ $this->logit($notice, $e);
+ }
- $recipients = $notice->saveReplies();
+ try {
+ $recipients = $notice->saveReplies();
+ } catch (Exception $e) {
+ $this->logit($notice, $e);
+ }
- $notice->addToInboxes($groups, $recipients);
+ try {
+ $notice->addToInboxes($groups, $recipients);
+ } catch (Exception $e) {
+ $this->logit($notice, $e);
+ }
- $notice->saveUrls();
+ try {
+ $notice->saveUrls();
+ } catch (Exception $e) {
+ $this->logit($notice, $e);
+ }
- Event::handle('EndNoticeSave', array($notice));
+ try {
+ Event::handle('EndNoticeSave', array($notice));
+ // Enqueue for other handlers
+ } catch (Exception $e) {
+ $this->logit($notice, $e);
+ }
- // Enqueue for other handlers
-
- common_enqueue_notice($notice);
+ try {
+ common_enqueue_notice($notice);
+ } catch (Exception $e) {
+ $this->logit($notice, $e);
+ }
return true;
}
+
+ protected function logit($notice, $e)
+ {
+ common_log(LOG_ERR, "Distrib queue exception saving notice $notice->id: " .
+ $e->getMessage() . ' ' .
+ str_replace("\n", " ", $e->getTraceAsString()));
+
+ // We'll still return true so we don't get stuck in a loop
+ // trying to run a bad insert over and over...
+ }
}
diff --git a/lib/jabber.php b/lib/jabber.php
index b6b23521b..e1bf06ba6 100644
--- a/lib/jabber.php
+++ b/lib/jabber.php
@@ -358,7 +358,7 @@ function jabber_broadcast_notice($notice)
common_log(LOG_WARNING, 'Refusing to broadcast notice with ' .
'unknown profile ' . common_log_objstring($notice),
__FILE__);
- return false;
+ return true; // not recoverable; discard.
}
$msg = jabber_format_notice($profile, $notice);
@@ -437,7 +437,7 @@ function jabber_public_notice($notice)
common_log(LOG_WARNING, 'Refusing to broadcast notice with ' .
'unknown profile ' . common_log_objstring($notice),
__FILE__);
- return false;
+ return true; // not recoverable; discard.
}
$msg = jabber_format_notice($profile, $notice);
diff --git a/lib/jabberqueuehandler.php b/lib/jabberqueuehandler.php
index 83471f2df..d6b4b7416 100644
--- a/lib/jabberqueuehandler.php
+++ b/lib/jabberqueuehandler.php
@@ -40,7 +40,7 @@ class JabberQueueHandler extends QueueHandler
try {
return jabber_broadcast_notice($notice);
} catch (XMPPHP_Exception $e) {
- $this->log(LOG_ERR, "Got an XMPPHP_Exception: " . $e->getMessage());
+ common_log(LOG_ERR, "Got an XMPPHP_Exception: " . $e->getMessage());
return false;
}
}
diff --git a/lib/liberalstomp.php b/lib/liberalstomp.php
index c9233843a..3d38953fd 100644
--- a/lib/liberalstomp.php
+++ b/lib/liberalstomp.php
@@ -34,6 +34,22 @@ class LiberalStomp extends Stomp
}
/**
+ * Return the host we're currently connected to.
+ *
+ * @return string
+ */
+ function getServer()
+ {
+ $idx = $this->_currentHost;
+ if ($idx >= 0) {
+ $host = $this->_hosts[$idx];
+ return "$host[0]:$host[1]";
+ } else {
+ return '[unconnected]';
+ }
+ }
+
+ /**
* Make socket connection to the server
* We also set the stream to non-blocking mode, since we'll be
* select'ing to wait for updates. In blocking mode it seems
@@ -71,10 +87,12 @@ class LiberalStomp extends Stomp
// @fixme this sometimes hangs in blocking mode...
// shouldn't we have been idle until we found there's more data?
$read = fread($this->_socket, $rb);
- if ($read === false) {
- $this->_reconnect();
+ if ($read === false || ($read === '' && feof($this->_socket))) {
+ // @fixme possibly attempt an auto reconnect as old code?
+ throw new StompException("Error reading");
+ //$this->_reconnect();
// @fixme this will lose prior items
- return $this->readFrames();
+ //return $this->readFrames();
}
$data .= $read;
if (strpos($data, "\x00") !== false) {
diff --git a/lib/mysqlschema.php b/lib/mysqlschema.php
new file mode 100644
index 000000000..1f7c3d092
--- /dev/null
+++ b/lib/mysqlschema.php
@@ -0,0 +1,537 @@
+<?php
+/**
+ * StatusNet, the distributed open-source microblogging tool
+ *
+ * Database schema utilities
+ *
+ * PHP version 5
+ *
+ * LICENCE: This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * @category Database
+ * @package StatusNet
+ * @author Evan Prodromou <evan@status.net>
+ * @copyright 2009 StatusNet, Inc.
+ * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link http://status.net/
+ */
+
+if (!defined('STATUSNET')) {
+ exit(1);
+}
+
+/**
+ * Class representing the database schema
+ *
+ * A class representing the database schema. Can be used to
+ * manipulate the schema -- especially for plugins and upgrade
+ * utilities.
+ *
+ * @category Database
+ * @package StatusNet
+ * @author Evan Prodromou <evan@status.net>
+ * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link http://status.net/
+ */
+
+class MysqlSchema extends Schema
+{
+ static $_single = null;
+ protected $conn = null;
+
+ /**
+ * Constructor. Only run once for singleton object.
+ */
+
+ protected function __construct()
+ {
+ // XXX: there should be an easier way to do this.
+ $user = new User();
+
+ $this->conn = $user->getDatabaseConnection();
+
+ $user->free();
+
+ unset($user);
+ }
+
+ /**
+ * Main public entry point. Use this to get
+ * the singleton object.
+ *
+ * @return Schema the (single) Schema object
+ */
+
+ static function get()
+ {
+ if (empty(self::$_single)) {
+ self::$_single = new Schema();
+ }
+ return self::$_single;
+ }
+
+ /**
+ * Returns a TableDef object for the table
+ * in the schema with the given name.
+ *
+ * Throws an exception if the table is not found.
+ *
+ * @param string $name Name of the table to get
+ *
+ * @return TableDef tabledef for that table.
+ */
+
+ public function getTableDef($name)
+ {
+ $res = $this->conn->query('DESCRIBE ' . $name);
+
+ if (PEAR::isError($res)) {
+ throw new Exception($res->getMessage());
+ }
+
+ $td = new TableDef();
+
+ $td->name = $name;
+ $td->columns = array();
+
+ $row = array();
+
+ while ($res->fetchInto($row, DB_FETCHMODE_ASSOC)) {
+
+ $cd = new ColumnDef();
+
+ $cd->name = $row['Field'];
+
+ $packed = $row['Type'];
+
+ if (preg_match('/^(\w+)\((\d+)\)$/', $packed, $match)) {
+ $cd->type = $match[1];
+ $cd->size = $match[2];
+ } else {
+ $cd->type = $packed;
+ }
+
+ $cd->nullable = ($row['Null'] == 'YES') ? true : false;
+ $cd->key = $row['Key'];
+ $cd->default = $row['Default'];
+ $cd->extra = $row['Extra'];
+
+ $td->columns[] = $cd;
+ }
+
+ return $td;
+ }
+
+ /**
+ * Gets a ColumnDef object for a single column.
+ *
+ * Throws an exception if the table is not found.
+ *
+ * @param string $table name of the table
+ * @param string $column name of the column
+ *
+ * @return ColumnDef definition of the column or null
+ * if not found.
+ */
+
+ public function getColumnDef($table, $column)
+ {
+ $td = $this->getTableDef($table);
+
+ foreach ($td->columns as $cd) {
+ if ($cd->name == $column) {
+ return $cd;
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * Creates a table with the given names and columns.
+ *
+ * @param string $name Name of the table
+ * @param array $columns Array of ColumnDef objects
+ * for new table.
+ *
+ * @return boolean success flag
+ */
+
+ public function createTable($name, $columns)
+ {
+ $uniques = array();
+ $primary = array();
+ $indices = array();
+
+ $sql = "CREATE TABLE $name (\n";
+
+ for ($i = 0; $i < count($columns); $i++) {
+
+ $cd =& $columns[$i];
+
+ if ($i > 0) {
+ $sql .= ",\n";
+ }
+
+ $sql .= $this->_columnSql($cd);
+
+ switch ($cd->key) {
+ case 'UNI':
+ $uniques[] = $cd->name;
+ break;
+ case 'PRI':
+ $primary[] = $cd->name;
+ break;
+ case 'MUL':
+ $indices[] = $cd->name;
+ break;
+ }
+ }
+
+ if (count($primary) > 0) { // it really should be...
+ $sql .= ",\nconstraint primary key (" . implode(',', $primary) . ")";
+ }
+
+ foreach ($uniques as $u) {
+ $sql .= ",\nunique index {$name}_{$u}_idx ($u)";
+ }
+
+ foreach ($indices as $i) {
+ $sql .= ",\nindex {$name}_{$i}_idx ($i)";
+ }
+
+ $sql .= "); ";
+
+ $res = $this->conn->query($sql);
+
+ if (PEAR::isError($res)) {
+ throw new Exception($res->getMessage());
+ }
+
+ return true;
+ }
+
+ /**
+ * Drops a table from the schema
+ *
+ * Throws an exception if the table is not found.
+ *
+ * @param string $name Name of the table to drop
+ *
+ * @return boolean success flag
+ */
+
+ public function dropTable($name)
+ {
+ $res = $this->conn->query("DROP TABLE $name");
+
+ if (PEAR::isError($res)) {
+ throw new Exception($res->getMessage());
+ }
+
+ return true;
+ }
+
+ /**
+ * Adds an index to a table.
+ *
+ * If no name is provided, a name will be made up based
+ * on the table name and column names.
+ *
+ * Throws an exception on database error, esp. if the table
+ * does not exist.
+ *
+ * @param string $table Name of the table
+ * @param array $columnNames Name of columns to index
+ * @param string $name (Optional) name of the index
+ *
+ * @return boolean success flag
+ */
+
+ public function createIndex($table, $columnNames, $name=null)
+ {
+ if (!is_array($columnNames)) {
+ $columnNames = array($columnNames);
+ }
+
+ if (empty($name)) {
+ $name = "$table_".implode("_", $columnNames)."_idx";
+ }
+
+ $res = $this->conn->query("ALTER TABLE $table ".
+ "ADD INDEX $name (".
+ implode(",", $columnNames).")");
+
+ if (PEAR::isError($res)) {
+ throw new Exception($res->getMessage());
+ }
+
+ return true;
+ }
+
+ /**
+ * Drops a named index from a table.
+ *
+ * @param string $table name of the table the index is on.
+ * @param string $name name of the index
+ *
+ * @return boolean success flag
+ */
+
+ public function dropIndex($table, $name)
+ {
+ $res = $this->conn->query("ALTER TABLE $table DROP INDEX $name");
+
+ if (PEAR::isError($res)) {
+ throw new Exception($res->getMessage());
+ }
+
+ return true;
+ }
+
+ /**
+ * Adds a column to a table
+ *
+ * @param string $table name of the table
+ * @param ColumnDef $columndef Definition of the new
+ * column.
+ *
+ * @return boolean success flag
+ */
+
+ public function addColumn($table, $columndef)
+ {
+ $sql = "ALTER TABLE $table ADD COLUMN " . $this->_columnSql($columndef);
+
+ $res = $this->conn->query($sql);
+
+ if (PEAR::isError($res)) {
+ throw new Exception($res->getMessage());
+ }
+
+ return true;
+ }
+
+ /**
+ * Modifies a column in the schema.
+ *
+ * The name must match an existing column and table.
+ *
+ * @param string $table name of the table
+ * @param ColumnDef $columndef new definition of the column.
+ *
+ * @return boolean success flag
+ */
+
+ public function modifyColumn($table, $columndef)
+ {
+ $sql = "ALTER TABLE $table MODIFY COLUMN " .
+ $this->_columnSql($columndef);
+
+ $res = $this->conn->query($sql);
+
+ if (PEAR::isError($res)) {
+ throw new Exception($res->getMessage());
+ }
+
+ return true;
+ }
+
+ /**
+ * Drops a column from a table
+ *
+ * The name must match an existing column.
+ *
+ * @param string $table name of the table
+ * @param string $columnName name of the column to drop
+ *
+ * @return boolean success flag
+ */
+
+ public function dropColumn($table, $columnName)
+ {
+ $sql = "ALTER TABLE $table DROP COLUMN $columnName";
+
+ $res = $this->conn->query($sql);
+
+ if (PEAR::isError($res)) {
+ throw new Exception($res->getMessage());
+ }
+
+ return true;
+ }
+
+ /**
+ * Ensures that a table exists with the given
+ * name and the given column definitions.
+ *
+ * If the table does not yet exist, it will
+ * create the table. If it does exist, it will
+ * alter the table to match the column definitions.
+ *
+ * @param string $tableName name of the table
+ * @param array $columns array of ColumnDef
+ * objects for the table
+ *
+ * @return boolean success flag
+ */
+
+ public function ensureTable($tableName, $columns)
+ {
+ // XXX: DB engine portability -> toilet
+
+ try {
+ $td = $this->getTableDef($tableName);
+ } catch (Exception $e) {
+ if (preg_match('/no such table/', $e->getMessage())) {
+ return $this->createTable($tableName, $columns);
+ } else {
+ throw $e;
+ }
+ }
+
+ $cur = $this->_names($td->columns);
+ $new = $this->_names($columns);
+
+ $toadd = array_diff($new, $cur);
+ $todrop = array_diff($cur, $new);
+ $same = array_intersect($new, $cur);
+ $tomod = array();
+
+ foreach ($same as $m) {
+ $curCol = $this->_byName($td->columns, $m);
+ $newCol = $this->_byName($columns, $m);
+
+ if (!$newCol->equals($curCol)) {
+ $tomod[] = $newCol->name;
+ }
+ }
+
+ if (count($toadd) + count($todrop) + count($tomod) == 0) {
+ // nothing to do
+ return true;
+ }
+
+ // For efficiency, we want this all in one
+ // query, instead of using our methods.
+
+ $phrase = array();
+
+ foreach ($toadd as $columnName) {
+ $cd = $this->_byName($columns, $columnName);
+
+ $phrase[] = 'ADD COLUMN ' . $this->_columnSql($cd);
+ }
+
+ foreach ($todrop as $columnName) {
+ $phrase[] = 'DROP COLUMN ' . $columnName;
+ }
+
+ foreach ($tomod as $columnName) {
+ $cd = $this->_byName($columns, $columnName);
+
+ $phrase[] = 'MODIFY COLUMN ' . $this->_columnSql($cd);
+ }
+
+ $sql = 'ALTER TABLE ' . $tableName . ' ' . implode(', ', $phrase);
+
+ $res = $this->conn->query($sql);
+
+ if (PEAR::isError($res)) {
+ throw new Exception($res->getMessage());
+ }
+
+ return true;
+ }
+
+ /**
+ * Returns the array of names from an array of
+ * ColumnDef objects.
+ *
+ * @param array $cds array of ColumnDef objects
+ *
+ * @return array strings for name values
+ */
+
+ private function _names($cds)
+ {
+ $names = array();
+
+ foreach ($cds as $cd) {
+ $names[] = $cd->name;
+ }
+
+ return $names;
+ }
+
+ /**
+ * Get a ColumnDef from an array matching
+ * name.
+ *
+ * @param array $cds Array of ColumnDef objects
+ * @param string $name Name of the column
+ *
+ * @return ColumnDef matching item or null if no match.
+ */
+
+ private function _byName($cds, $name)
+ {
+ foreach ($cds as $cd) {
+ if ($cd->name == $name) {
+ return $cd;
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * Return the proper SQL for creating or
+ * altering a column.
+ *
+ * Appropriate for use in CREATE TABLE or
+ * ALTER TABLE statements.
+ *
+ * @param ColumnDef $cd column to create
+ *
+ * @return string correct SQL for that column
+ */
+
+ private function _columnSql($cd)
+ {
+ $sql = "{$cd->name} ";
+
+ if (!empty($cd->size)) {
+ $sql .= "{$cd->type}({$cd->size}) ";
+ } else {
+ $sql .= "{$cd->type} ";
+ }
+
+ if (!empty($cd->default)) {
+ $sql .= "default {$cd->default} ";
+ } else {
+ $sql .= ($cd->nullable) ? "null " : "not null ";
+ }
+
+ if (!empty($cd->auto_increment)) {
+ $sql .= " auto_increment ";
+ }
+
+ if (!empty($cd->extra)) {
+ $sql .= "{$cd->extra} ";
+ }
+
+ return $sql;
+ }
+}
diff --git a/lib/noticelist.php b/lib/noticelist.php
index 85c169716..a4a0f2651 100644
--- a/lib/noticelist.php
+++ b/lib/noticelist.php
@@ -486,12 +486,28 @@ class NoticeListItem extends Widget
$this->out->element('span', 'device', $source_name);
break;
default:
+
+ $name = null;
+ $url = null;
+
$ns = Notice_source::staticGet($this->notice->source);
+
if ($ns) {
+ $name = $ns->name;
+ $url = $ns->url;
+ } else {
+ $app = Oauth_application::staticGet('name', $this->notice->source);
+ if ($app) {
+ $name = $app->name;
+ $url = $app->source_url;
+ }
+ }
+
+ if (!empty($name) && !empty($url)) {
$this->out->elementStart('span', 'device');
- $this->out->element('a', array('href' => $ns->url,
+ $this->out->element('a', array('href' => $url,
'rel' => 'external'),
- $ns->name);
+ $name);
$this->out->elementEnd('span');
} else {
$this->out->element('span', 'device', $source_name);
diff --git a/lib/ombqueuehandler.php b/lib/ombqueuehandler.php
index 24896c784..1921c2bac 100644
--- a/lib/ombqueuehandler.php
+++ b/lib/ombqueuehandler.php
@@ -39,7 +39,7 @@ class OmbQueueHandler extends QueueHandler
function handle($notice)
{
if ($this->is_remote($notice)) {
- $this->log(LOG_DEBUG, 'Ignoring remote notice ' . $notice->id);
+ common_log(LOG_DEBUG, 'Ignoring remote notice ' . $notice->id);
return true;
} else {
require_once(INSTALLDIR.'/lib/omb.php');
diff --git a/lib/pgsqlschema.php b/lib/pgsqlschema.php
new file mode 100644
index 000000000..91bc09667
--- /dev/null
+++ b/lib/pgsqlschema.php
@@ -0,0 +1,503 @@
+<?php
+/**
+ * StatusNet, the distributed open-source microblogging tool
+ *
+ * Database schema utilities
+ *
+ * PHP version 5
+ *
+ * LICENCE: This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * @category Database
+ * @package StatusNet
+ * @author Evan Prodromou <evan@status.net>
+ * @copyright 2009 StatusNet, Inc.
+ * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link http://status.net/
+ */
+
+if (!defined('STATUSNET')) {
+ exit(1);
+}
+
+/**
+ * Class representing the database schema
+ *
+ * A class representing the database schema. Can be used to
+ * manipulate the schema -- especially for plugins and upgrade
+ * utilities.
+ *
+ * @category Database
+ * @package StatusNet
+ * @author Evan Prodromou <evan@status.net>
+ * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link http://status.net/
+ */
+
+class PgsqlSchema extends Schema
+{
+
+ /**
+ * Returns a TableDef object for the table
+ * in the schema with the given name.
+ *
+ * Throws an exception if the table is not found.
+ *
+ * @param string $name Name of the table to get
+ *
+ * @return TableDef tabledef for that table.
+ */
+
+ public function getTableDef($name)
+ {
+ $res = $this->conn->query("select *, column_default as default, is_nullable as Null, udt_name as Type, column_name AS Field from INFORMATION_SCHEMA.COLUMNS where table_name = '$name'");
+
+ if (PEAR::isError($res)) {
+ throw new Exception($res->getMessage());
+ }
+
+ $td = new TableDef();
+
+ $td->name = $name;
+ $td->columns = array();
+
+ $row = array();
+
+ while ($res->fetchInto($row, DB_FETCHMODE_ASSOC)) {
+// var_dump($row);
+ $cd = new ColumnDef();
+
+ $cd->name = $row['field'];
+
+ $packed = $row['type'];
+
+ if (preg_match('/^(\w+)\((\d+)\)$/', $packed, $match)) {
+ $cd->type = $match[1];
+ $cd->size = $match[2];
+ } else {
+ $cd->type = $packed;
+ }
+
+ $cd->nullable = ($row['null'] == 'YES') ? true : false;
+ $cd->key = $row['Key'];
+ $cd->default = $row['default'];
+ $cd->extra = $row['Extra'];
+
+ $td->columns[] = $cd;
+ }
+ return $td;
+ }
+
+ /**
+ * Gets a ColumnDef object for a single column.
+ *
+ * Throws an exception if the table is not found.
+ *
+ * @param string $table name of the table
+ * @param string $column name of the column
+ *
+ * @return ColumnDef definition of the column or null
+ * if not found.
+ */
+
+ public function getColumnDef($table, $column)
+ {
+ $td = $this->getTableDef($table);
+
+ foreach ($td->columns as $cd) {
+ if ($cd->name == $column) {
+ return $cd;
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * Creates a table with the given names and columns.
+ *
+ * @param string $name Name of the table
+ * @param array $columns Array of ColumnDef objects
+ * for new table.
+ *
+ * @return boolean success flag
+ */
+
+ public function createTable($name, $columns)
+ {
+ $uniques = array();
+ $primary = array();
+ $indices = array();
+
+ $sql = "CREATE TABLE $name (\n";
+
+ for ($i = 0; $i < count($columns); $i++) {
+
+ $cd =& $columns[$i];
+
+ if ($i > 0) {
+ $sql .= ",\n";
+ }
+
+ $sql .= $this->_columnSql($cd);
+
+ switch ($cd->key) {
+ case 'UNI':
+ $uniques[] = $cd->name;
+ break;
+ case 'PRI':
+ $primary[] = $cd->name;
+ break;
+ case 'MUL':
+ $indices[] = $cd->name;
+ break;
+ }
+ }
+
+ if (count($primary) > 0) { // it really should be...
+ $sql .= ",\nconstraint primary key (" . implode(',', $primary) . ")";
+ }
+
+ foreach ($uniques as $u) {
+ $sql .= ",\nunique index {$name}_{$u}_idx ($u)";
+ }
+
+ foreach ($indices as $i) {
+ $sql .= ",\nindex {$name}_{$i}_idx ($i)";
+ }
+
+ $sql .= "); ";
+
+ $res = $this->conn->query($sql);
+
+ if (PEAR::isError($res)) {
+ throw new Exception($res->getMessage());
+ }
+
+ return true;
+ }
+
+ /**
+ * Drops a table from the schema
+ *
+ * Throws an exception if the table is not found.
+ *
+ * @param string $name Name of the table to drop
+ *
+ * @return boolean success flag
+ */
+
+ public function dropTable($name)
+ {
+ $res = $this->conn->query("DROP TABLE $name");
+
+ if (PEAR::isError($res)) {
+ throw new Exception($res->getMessage());
+ }
+
+ return true;
+ }
+
+ /**
+ * Adds an index to a table.
+ *
+ * If no name is provided, a name will be made up based
+ * on the table name and column names.
+ *
+ * Throws an exception on database error, esp. if the table
+ * does not exist.
+ *
+ * @param string $table Name of the table
+ * @param array $columnNames Name of columns to index
+ * @param string $name (Optional) name of the index
+ *
+ * @return boolean success flag
+ */
+
+ public function createIndex($table, $columnNames, $name=null)
+ {
+ if (!is_array($columnNames)) {
+ $columnNames = array($columnNames);
+ }
+
+ if (empty($name)) {
+ $name = "$table_".implode("_", $columnNames)."_idx";
+ }
+
+ $res = $this->conn->query("ALTER TABLE $table ".
+ "ADD INDEX $name (".
+ implode(",", $columnNames).")");
+
+ if (PEAR::isError($res)) {
+ throw new Exception($res->getMessage());
+ }
+
+ return true;
+ }
+
+ /**
+ * Drops a named index from a table.
+ *
+ * @param string $table name of the table the index is on.
+ * @param string $name name of the index
+ *
+ * @return boolean success flag
+ */
+
+ public function dropIndex($table, $name)
+ {
+ $res = $this->conn->query("ALTER TABLE $table DROP INDEX $name");
+
+ if (PEAR::isError($res)) {
+ throw new Exception($res->getMessage());
+ }
+
+ return true;
+ }
+
+ /**
+ * Adds a column to a table
+ *
+ * @param string $table name of the table
+ * @param ColumnDef $columndef Definition of the new
+ * column.
+ *
+ * @return boolean success flag
+ */
+
+ public function addColumn($table, $columndef)
+ {
+ $sql = "ALTER TABLE $table ADD COLUMN " . $this->_columnSql($columndef);
+
+ $res = $this->conn->query($sql);
+
+ if (PEAR::isError($res)) {
+ throw new Exception($res->getMessage());
+ }
+
+ return true;
+ }
+
+ /**
+ * Modifies a column in the schema.
+ *
+ * The name must match an existing column and table.
+ *
+ * @param string $table name of the table
+ * @param ColumnDef $columndef new definition of the column.
+ *
+ * @return boolean success flag
+ */
+
+ public function modifyColumn($table, $columndef)
+ {
+ $sql = "ALTER TABLE $table MODIFY COLUMN " .
+ $this->_columnSql($columndef);
+
+ $res = $this->conn->query($sql);
+
+ if (PEAR::isError($res)) {
+ throw new Exception($res->getMessage());
+ }
+
+ return true;
+ }
+
+ /**
+ * Drops a column from a table
+ *
+ * The name must match an existing column.
+ *
+ * @param string $table name of the table
+ * @param string $columnName name of the column to drop
+ *
+ * @return boolean success flag
+ */
+
+ public function dropColumn($table, $columnName)
+ {
+ $sql = "ALTER TABLE $table DROP COLUMN $columnName";
+
+ $res = $this->conn->query($sql);
+
+ if (PEAR::isError($res)) {
+ throw new Exception($res->getMessage());
+ }
+
+ return true;
+ }
+
+ /**
+ * Ensures that a table exists with the given
+ * name and the given column definitions.
+ *
+ * If the table does not yet exist, it will
+ * create the table. If it does exist, it will
+ * alter the table to match the column definitions.
+ *
+ * @param string $tableName name of the table
+ * @param array $columns array of ColumnDef
+ * objects for the table
+ *
+ * @return boolean success flag
+ */
+
+ public function ensureTable($tableName, $columns)
+ {
+ // XXX: DB engine portability -> toilet
+
+ try {
+ $td = $this->getTableDef($tableName);
+ } catch (Exception $e) {
+ if (preg_match('/no such table/', $e->getMessage())) {
+ return $this->createTable($tableName, $columns);
+ } else {
+ throw $e;
+ }
+ }
+
+ $cur = $this->_names($td->columns);
+ $new = $this->_names($columns);
+
+ $toadd = array_diff($new, $cur);
+ $todrop = array_diff($cur, $new);
+ $same = array_intersect($new, $cur);
+ $tomod = array();
+
+ foreach ($same as $m) {
+ $curCol = $this->_byName($td->columns, $m);
+ $newCol = $this->_byName($columns, $m);
+
+ if (!$newCol->equals($curCol)) {
+ $tomod[] = $newCol->name;
+ }
+ }
+
+ if (count($toadd) + count($todrop) + count($tomod) == 0) {
+ // nothing to do
+ return true;
+ }
+
+ // For efficiency, we want this all in one
+ // query, instead of using our methods.
+
+ $phrase = array();
+
+ foreach ($toadd as $columnName) {
+ $cd = $this->_byName($columns, $columnName);
+
+ $phrase[] = 'ADD COLUMN ' . $this->_columnSql($cd);
+ }
+
+ foreach ($todrop as $columnName) {
+ $phrase[] = 'DROP COLUMN ' . $columnName;
+ }
+
+ foreach ($tomod as $columnName) {
+ $cd = $this->_byName($columns, $columnName);
+
+ $phrase[] = 'MODIFY COLUMN ' . $this->_columnSql($cd);
+ }
+
+ $sql = 'ALTER TABLE ' . $tableName . ' ' . implode(', ', $phrase);
+
+ $res = $this->conn->query($sql);
+
+ if (PEAR::isError($res)) {
+ throw new Exception($res->getMessage());
+ }
+
+ return true;
+ }
+
+ /**
+ * Returns the array of names from an array of
+ * ColumnDef objects.
+ *
+ * @param array $cds array of ColumnDef objects
+ *
+ * @return array strings for name values
+ */
+
+ private function _names($cds)
+ {
+ $names = array();
+
+ foreach ($cds as $cd) {
+ $names[] = $cd->name;
+ }
+
+ return $names;
+ }
+
+ /**
+ * Get a ColumnDef from an array matching
+ * name.
+ *
+ * @param array $cds Array of ColumnDef objects
+ * @param string $name Name of the column
+ *
+ * @return ColumnDef matching item or null if no match.
+ */
+
+ private function _byName($cds, $name)
+ {
+ foreach ($cds as $cd) {
+ if ($cd->name == $name) {
+ return $cd;
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * Return the proper SQL for creating or
+ * altering a column.
+ *
+ * Appropriate for use in CREATE TABLE or
+ * ALTER TABLE statements.
+ *
+ * @param ColumnDef $cd column to create
+ *
+ * @return string correct SQL for that column
+ */
+
+ private function _columnSql($cd)
+ {
+ $sql = "{$cd->name} ";
+
+ if (!empty($cd->size)) {
+ $sql .= "{$cd->type}({$cd->size}) ";
+ } else {
+ $sql .= "{$cd->type} ";
+ }
+
+ if (!empty($cd->default)) {
+ $sql .= "default {$cd->default} ";
+ } else {
+ $sql .= ($cd->nullable) ? "null " : "not null ";
+ }
+
+ if (!empty($cd->auto_increment)) {
+ $sql .= " auto_increment ";
+ }
+
+ if (!empty($cd->extra)) {
+ $sql .= "{$cd->extra} ";
+ }
+
+ return $sql;
+ }
+}
diff --git a/lib/publicqueuehandler.php b/lib/publicqueuehandler.php
index c9edb8d5d..a497d1385 100644
--- a/lib/publicqueuehandler.php
+++ b/lib/publicqueuehandler.php
@@ -38,7 +38,7 @@ class PublicQueueHandler extends QueueHandler
try {
return jabber_public_notice($notice);
} catch (XMPPHP_Exception $e) {
- $this->log(LOG_ERR, "Got an XMPPHP_Exception: " . $e->getMessage());
+ common_log(LOG_ERR, "Got an XMPPHP_Exception: " . $e->getMessage());
return false;
}
}
diff --git a/lib/router.php b/lib/router.php
index be9cfac0c..987d0152e 100644
--- a/lib/router.php
+++ b/lib/router.php
@@ -73,6 +73,8 @@ class Router
if (Event::handle('StartInitializeRouter', array(&$m))) {
+ $m->connect('robots.txt', array('action' => 'robotstxt'));
+
$m->connect('opensearch/people', array('action' => 'opensearch',
'type' => 'people'));
$m->connect('opensearch/notice', array('action' => 'opensearch',
@@ -150,6 +152,10 @@ class Router
array('action' => 'editapplication'),
array('id' => '[0-9]+')
);
+ $m->connect('settings/oauthapps/delete/:id',
+ array('action' => 'deleteapplication'),
+ array('id' => '[0-9]+')
+ );
// search
@@ -649,7 +655,16 @@ class Router
if (common_config('singleuser', 'enabled')) {
- $nickname = common_config('singleuser', 'nickname');
+ $user = User::siteOwner();
+
+ if (!empty($user)) {
+ $nickname = $user->nickname;
+ } else {
+ $nickname = common_config('singleuser', 'nickname');
+ if (empty($nickname)) {
+ throw new ServerException(_("No single user defined for single-user mode."));
+ }
+ }
foreach (array('subscriptions', 'subscribers',
'all', 'foaf', 'xrds',
@@ -697,6 +712,10 @@ class Router
'nickname' => $nickname),
array('tag' => '[a-zA-Z0-9]+'));
+ $m->connect('rsd.xml',
+ array('action' => 'rsd',
+ 'nickname' => $nickname));
+
$m->connect('',
array('action' => 'showstream',
'nickname' => $nickname));
@@ -711,6 +730,7 @@ class Router
$m->connect('featured', array('action' => 'featured'));
$m->connect('favorited/', array('action' => 'favorited'));
$m->connect('favorited', array('action' => 'favorited'));
+ $m->connect('rsd.xml', array('action' => 'rsd'));
foreach (array('subscriptions', 'subscribers',
'nudge', 'all', 'foaf', 'xrds',
@@ -758,6 +778,10 @@ class Router
array('nickname' => '[a-zA-Z0-9]{1,64}'),
array('tag' => '[a-zA-Z0-9]+'));
+ $m->connect(':nickname/rsd.xml',
+ array('action' => 'rsd'),
+ array('nickname' => '[a-zA-Z0-9]{1,64}'));
+
$m->connect(':nickname',
array('action' => 'showstream'),
array('nickname' => '[a-zA-Z0-9]{1,64}'));
diff --git a/lib/schema.php b/lib/schema.php
index a7f64ebed..137b814e0 100644
--- a/lib/schema.php
+++ b/lib/schema.php
@@ -75,65 +75,15 @@ class Schema
static function get()
{
+ $type = common_config('db', 'type');
if (empty(self::$_single)) {
- self::$_single = new Schema();
+ $schemaClass = ucfirst($type).'Schema';
+ self::$_single = new $schemaClass();
}
return self::$_single;
}
/**
- * Returns a TableDef object for the table
- * in the schema with the given name.
- *
- * Throws an exception if the table is not found.
- *
- * @param string $name Name of the table to get
- *
- * @return TableDef tabledef for that table.
- */
-
- public function getTableDef($name)
- {
- $res = $this->conn->query('DESCRIBE ' . $name);
-
- if (PEAR::isError($res)) {
- throw new Exception($res->getMessage());
- }
-
- $td = new TableDef();
-
- $td->name = $name;
- $td->columns = array();
-
- $row = array();
-
- while ($res->fetchInto($row, DB_FETCHMODE_ASSOC)) {
-
- $cd = new ColumnDef();
-
- $cd->name = $row['Field'];
-
- $packed = $row['Type'];
-
- if (preg_match('/^(\w+)\((\d+)\)$/', $packed, $match)) {
- $cd->type = $match[1];
- $cd->size = $match[2];
- } else {
- $cd->type = $packed;
- }
-
- $cd->nullable = ($row['Null'] == 'YES') ? true : false;
- $cd->key = $row['Key'];
- $cd->default = $row['Default'];
- $cd->extra = $row['Extra'];
-
- $td->columns[] = $cd;
- }
-
- return $td;
- }
-
- /**
* Gets a ColumnDef object for a single column.
*
* Throws an exception if the table is not found.
@@ -523,7 +473,7 @@ class Schema
} else {
$sql .= ($cd->nullable) ? "null " : "not null ";
}
-
+
if (!empty($cd->auto_increment)) {
$sql .= " auto_increment ";
}
diff --git a/lib/stompqueuemanager.php b/lib/stompqueuemanager.php
index 19e8c49b5..6730cd213 100644
--- a/lib/stompqueuemanager.php
+++ b/lib/stompqueuemanager.php
@@ -29,28 +29,36 @@
*/
require_once 'Stomp.php';
-
+require_once 'Stomp/Exception.php';
class StompQueueManager extends QueueManager
{
- var $server = null;
- var $username = null;
- var $password = null;
- var $base = null;
- var $con = null;
+ protected $servers;
+ protected $username;
+ protected $password;
+ protected $base;
protected $control;
-
+
+ protected $useTransactions = true;
+
protected $sites = array();
protected $subscriptions = array();
- protected $useTransactions = true;
- protected $transaction = null;
- protected $transactionCount = 0;
+ protected $cons = array(); // all open connections
+ protected $disconnect = array();
+ protected $transaction = array();
+ protected $transactionCount = array();
+ protected $defaultIdx = 0;
function __construct()
{
parent::__construct();
- $this->server = common_config('queue', 'stomp_server');
+ $server = common_config('queue', 'stomp_server');
+ if (is_array($server)) {
+ $this->servers = $server;
+ } else {
+ $this->servers = array($server);
+ }
$this->username = common_config('queue', 'stomp_username');
$this->password = common_config('queue', 'stomp_password');
$this->base = common_config('queue', 'queue_basename');
@@ -99,9 +107,9 @@ class StompQueueManager extends QueueManager
$message .= ':' . $param;
}
$this->_connect();
- $result = $this->con->send($this->control,
- $message,
- array ('created' => common_sql_now()));
+ $result = $this->_send($this->control,
+ $message,
+ array ('created' => common_sql_now()));
if ($result) {
$this->_log(LOG_INFO, "Sent control ping to queue daemons: $message");
return true;
@@ -166,28 +174,59 @@ class StompQueueManager extends QueueManager
/**
* Saves a notice object reference into the queue item table.
* @return boolean true on success
+ * @throws StompException on connection or send error
*/
public function enqueue($object, $queue)
{
+ $this->_connect();
+ return $this->_doEnqueue($object, $queue, $this->defaultIdx);
+ }
+
+ /**
+ * Saves a notice object reference into the queue item table
+ * on the given connection.
+ *
+ * @return boolean true on success
+ * @throws StompException on connection or send error
+ */
+ protected function _doEnqueue($object, $queue, $idx)
+ {
$msg = $this->encode($object);
$rep = $this->logrep($object);
- $this->_connect();
-
- // XXX: serialize and send entire notice
+ $props = array('created' => common_sql_now());
+ if ($this->isPersistent($queue)) {
+ $props['persistent'] = 'true';
+ }
- $result = $this->con->send($this->queueName($queue),
- $msg, // BODY of the message
- array ('created' => common_sql_now(),
- 'persistent' => 'true'));
+ $con = $this->cons[$idx];
+ $host = $con->getServer();
+ $result = $con->send($this->queueName($queue), $msg, $props);
if (!$result) {
- common_log(LOG_ERR, "Error sending $rep to $queue queue");
+ common_log(LOG_ERR, "Error sending $rep to $queue queue on $host");
return false;
}
- common_log(LOG_DEBUG, "complete remote queueing $rep for $queue");
+ common_log(LOG_DEBUG, "complete remote queueing $rep for $queue on $host");
$this->stats('enqueued', $queue);
+ return true;
+ }
+
+ /**
+ * Determine whether messages to this queue should be marked as persistent.
+ * Actual persistent storage depends on the queue server's configuration.
+ * @param string $queue
+ * @return bool
+ */
+ protected function isPersistent($queue)
+ {
+ $mode = common_config('queue', 'stomp_persistent');
+ if (is_array($mode)) {
+ return in_array($queue, $mode);
+ } else {
+ return (bool)$mode;
+ }
}
/**
@@ -198,7 +237,29 @@ class StompQueueManager extends QueueManager
*/
public function getSockets()
{
- return array($this->con->getSocket());
+ $sockets = array();
+ foreach ($this->cons as $con) {
+ if ($con) {
+ $sockets[] = $con->getSocket();
+ }
+ }
+ return $sockets;
+ }
+
+ /**
+ * Get the Stomp connection object associated with the given socket.
+ * @param resource $socket
+ * @return int index into connections list
+ * @throws Exception
+ */
+ protected function connectionFromSocket($socket)
+ {
+ foreach ($this->cons as $i => $con) {
+ if ($con && $con->getSocket() === $socket) {
+ return $i;
+ }
+ }
+ throw new Exception(__CLASS__ . " asked to read from unrecognized socket");
}
/**
@@ -210,27 +271,56 @@ class StompQueueManager extends QueueManager
*/
public function handleInput($socket)
{
- assert($socket === $this->con->getSocket());
+ $idx = $this->connectionFromSocket($socket);
+ $con = $this->cons[$idx];
+ $host = $con->getServer();
+
$ok = true;
- $frames = $this->con->readFrames();
+ try {
+ $frames = $con->readFrames();
+ } catch (StompException $e) {
+ common_log(LOG_ERR, "Lost connection to $host: " . $e->getMessage());
+ $this->cons[$idx] = null;
+ $this->transaction[$idx] = null;
+ $this->disconnect[$idx] = time();
+ return false;
+ }
foreach ($frames as $frame) {
$dest = $frame->headers['destination'];
if ($dest == $this->control) {
- if (!$this->handleControlSignal($frame)) {
+ if (!$this->handleControlSignal($idx, $frame)) {
// We got a control event that requests a shutdown;
// close out and stop handling anything else!
break;
}
} else {
- $ok = $ok && $this->handleItem($frame);
+ $ok = $ok && $this->handleItem($idx, $frame);
}
}
return $ok;
}
/**
+ * Attempt to reconnect in background if we lost a connection.
+ */
+ function idle()
+ {
+ $now = time();
+ foreach ($this->cons as $idx => $con) {
+ if (empty($con)) {
+ $age = $now - $this->disconnect[$idx];
+ if ($age >= 60) {
+ $this->_reconnect($idx);
+ }
+ }
+ }
+ return true;
+ }
+
+ /**
* Initialize our connection and subscribe to all the queues
- * we're going to need to handle...
+ * we're going to need to handle... If multiple queue servers
+ * are configured for failover, we'll listen to all of them.
*
* Side effects: in multi-site mode, may reset site configuration.
*
@@ -240,9 +330,14 @@ class StompQueueManager extends QueueManager
public function start($master)
{
parent::start($master);
- $this->_connect();
+ $this->_connectAll();
- $this->con->subscribe($this->control);
+ common_log(LOG_INFO, "Subscribing to $this->control");
+ foreach ($this->cons as $con) {
+ if ($con) {
+ $con->subscribe($this->control);
+ }
+ }
if ($this->sites) {
foreach ($this->sites as $server) {
StatusNet::init($server);
@@ -251,10 +346,14 @@ class StompQueueManager extends QueueManager
} else {
$this->doSubscribe();
}
- $this->begin();
+ foreach ($this->cons as $i => $con) {
+ if ($con) {
+ $this->begin($i);
+ }
+ }
return true;
}
-
+
/**
* Subscribe to all the queues we're going to need to handle...
*
@@ -266,8 +365,12 @@ class StompQueueManager extends QueueManager
{
// If there are any outstanding delivered messages we haven't processed,
// free them for another thread to take.
- $this->rollback();
- $this->con->unsubscribe($this->control);
+ foreach ($this->cons as $i => $con) {
+ if ($con) {
+ $this->rollback($i);
+ $con->unsubscribe($this->control);
+ }
+ }
if ($this->sites) {
foreach ($this->sites as $server) {
StatusNet::init($server);
@@ -289,23 +392,106 @@ class StompQueueManager extends QueueManager
}
/**
- * Lazy open connection to Stomp queue server.
+ * Lazy open a single connection to Stomp queue server.
+ * If multiple servers are configured, we let the Stomp client library
+ * worry about finding a working connection among them.
*/
protected function _connect()
{
- if (empty($this->con)) {
- $this->_log(LOG_INFO, "Connecting to '$this->server' as '$this->username'...");
- $this->con = new LiberalStomp($this->server);
-
- if ($this->con->connect($this->username, $this->password)) {
- $this->_log(LOG_INFO, "Connected.");
+ if (empty($this->cons)) {
+ $list = $this->servers;
+ if (count($list) > 1) {
+ shuffle($list); // Randomize to spread load
+ $url = 'failover://(' . implode(',', $list) . ')';
} else {
- $this->_log(LOG_ERR, 'Failed to connect to queue server');
- throw new ServerException('Failed to connect to queue server');
+ $url = $list[0];
+ }
+ $con = $this->_doConnect($url);
+ $this->cons = array($con);
+ $this->transactionCount = array(0);
+ $this->transaction = array(null);
+ $this->disconnect = array(null);
+ }
+ }
+
+ /**
+ * Lazy open connections to all Stomp servers, if in manual failover
+ * mode. This means the queue servers don't speak to each other, so
+ * we have to listen to all of them to make sure we get all events.
+ */
+ protected function _connectAll()
+ {
+ if (!common_config('queue', 'stomp_manual_failover')) {
+ return $this->_connect();
+ }
+ if (empty($this->cons)) {
+ $this->cons = array();
+ $this->transactionCount = array();
+ $this->transaction = array();
+ foreach ($this->servers as $idx => $server) {
+ try {
+ $this->cons[] = $this->_doConnect($server);
+ $this->disconnect[] = null;
+ } catch (Exception $e) {
+ // s'okay, we'll live
+ $this->cons[] = null;
+ $this->disconnect[] = time();
+ }
+ $this->transactionCount[] = 0;
+ $this->transaction[] = null;
+ }
+ if (empty($this->cons)) {
+ throw new ServerException("No queue servers reachable...");
+ return false;
}
}
}
+ protected function _reconnect($idx)
+ {
+ try {
+ $con = $this->_doConnect($this->servers[$idx]);
+ } catch (Exception $e) {
+ $this->_log(LOG_ERR, $e->getMessage());
+ $con = null;
+ }
+ if ($con) {
+ $this->cons[$idx] = $con;
+ $this->disconnect[$idx] = null;
+
+ // now we have to listen to everything...
+ // @fixme refactor this nicer. :P
+ $host = $con->getServer();
+ $this->_log(LOG_INFO, "Resubscribing to $this->control on $host");
+ $con->subscribe($this->control);
+ foreach ($this->subscriptions as $site => $queues) {
+ foreach ($queues as $queue) {
+ $this->_log(LOG_INFO, "Resubscribing to $queue on $host");
+ $con->subscribe($queue);
+ }
+ }
+ $this->begin($idx);
+ } else {
+ // Try again later...
+ $this->disconnect[$idx] = time();
+ }
+ }
+
+ protected function _doConnect($server)
+ {
+ $this->_log(LOG_INFO, "Connecting to '$server' as '$this->username'...");
+ $con = new LiberalStomp($server);
+
+ if ($con->connect($this->username, $this->password)) {
+ $this->_log(LOG_INFO, "Connected.");
+ } else {
+ $this->_log(LOG_ERR, 'Failed to connect to queue server');
+ throw new ServerException('Failed to connect to queue server');
+ }
+
+ return $con;
+ }
+
/**
* Subscribe to all enabled notice queues for the current site.
*/
@@ -317,7 +503,11 @@ class StompQueueManager extends QueueManager
$rawqueue = $this->queueName($queue);
$this->subscriptions[$site][$queue] = $rawqueue;
$this->_log(LOG_INFO, "Subscribing to $rawqueue");
- $this->con->subscribe($rawqueue);
+ foreach ($this->cons as $con) {
+ if ($con) {
+ $con->subscribe($rawqueue);
+ }
+ }
}
}
@@ -331,7 +521,11 @@ class StompQueueManager extends QueueManager
if (!empty($this->subscriptions[$site])) {
foreach ($this->subscriptions[$site] as $queue => $rawqueue) {
$this->_log(LOG_INFO, "Unsubscribing from $rawqueue");
- $this->con->unsubscribe($rawqueue);
+ foreach ($this->cons as $con) {
+ if ($con) {
+ $con->unsubscribe($rawqueue);
+ }
+ }
unset($this->subscriptions[$site][$queue]);
}
}
@@ -346,27 +540,31 @@ class StompQueueManager extends QueueManager
* Side effects: in multi-site mode, may reset site configuration to
* match the site that queued the event.
*
+ * @param int $idx connection index
* @param StompFrame $frame
* @return bool
*/
- protected function handleItem($frame)
+ protected function handleItem($idx, $frame)
{
+ $this->defaultIdx = $idx;
+
list($site, $queue) = $this->parseDestination($frame->headers['destination']);
if ($site != $this->currentSite()) {
$this->stats('switch');
StatusNet::init($site);
}
+ $host = $this->cons[$idx]->getServer();
if (is_numeric($frame->body)) {
$id = intval($frame->body);
- $info = "notice $id posted at {$frame->headers['created']} in queue $queue";
+ $info = "notice $id posted at {$frame->headers['created']} in queue $queue from $host";
$notice = Notice::staticGet('id', $id);
if (empty($notice)) {
$this->_log(LOG_WARNING, "Skipping missing $info");
- $this->ack($frame);
- $this->commit();
- $this->begin();
+ $this->ack($idx, $frame);
+ $this->commit($idx);
+ $this->begin($idx);
$this->stats('badnotice', $queue);
return false;
}
@@ -374,39 +572,47 @@ class StompQueueManager extends QueueManager
$item = $notice;
} else {
// @fixme should we serialize, or json, or what here?
- $info = "string posted at {$frame->headers['created']} in queue $queue";
+ $info = "string posted at {$frame->headers['created']} in queue $queue from $host";
$item = $frame->body;
}
$handler = $this->getHandler($queue);
if (!$handler) {
$this->_log(LOG_ERR, "Missing handler class; skipping $info");
- $this->ack($frame);
- $this->commit();
- $this->begin();
+ $this->ack($idx, $frame);
+ $this->commit($idx);
+ $this->begin($idx);
$this->stats('badhandler', $queue);
return false;
}
- $ok = $handler->handle($item);
+ // If there's an exception when handling,
+ // log the error and let it get requeued.
+
+ try {
+ $ok = $handler->handle($item);
+ } catch (Exception $e) {
+ $this->_log(LOG_ERR, "Exception on queue $queue: " . $e->getMessage());
+ $ok = false;
+ }
if (!$ok) {
$this->_log(LOG_WARNING, "Failed handling $info");
// FIXME we probably shouldn't have to do
// this kind of queue management ourselves;
// if we don't ack, it should resend...
- $this->ack($frame);
+ $this->ack($idx, $frame);
$this->enqueue($item, $queue);
- $this->commit();
- $this->begin();
+ $this->commit($idx);
+ $this->begin($idx);
$this->stats('requeued', $queue);
return false;
}
$this->_log(LOG_INFO, "Successfully handled $info");
- $this->ack($frame);
- $this->commit();
- $this->begin();
+ $this->ack($idx, $frame);
+ $this->commit($idx);
+ $this->begin($idx);
$this->stats('handled', $queue);
return true;
}
@@ -414,10 +620,11 @@ class StompQueueManager extends QueueManager
/**
* Process a control signal broadcast.
*
+ * @param int $idx connection index
* @param array $frame Stomp frame
* @return bool true to continue; false to stop further processing.
*/
- protected function handleControlSignal($frame)
+ protected function handleControlSignal($idx, $frame)
{
$message = trim($frame->body);
if (strpos($message, ':') !== false) {
@@ -441,12 +648,12 @@ class StompQueueManager extends QueueManager
$this->_log(LOG_ERR, "Ignoring unrecognized control message: $message");
}
- $this->ack($frame);
- $this->commit();
- $this->begin();
+ $this->ack($idx, $frame);
+ $this->commit($idx);
+ $this->begin($idx);
return $shutdown;
}
-
+
/**
* Set us up with queue subscriptions for a new site added at runtime,
* triggered by a broadcast to the 'statusnet-control' topic.
@@ -520,47 +727,49 @@ class StompQueueManager extends QueueManager
common_log($level, 'StompQueueManager: '.$msg);
}
- protected function begin()
+ protected function begin($idx)
{
if ($this->useTransactions) {
- if ($this->transaction) {
+ if (!empty($this->transaction[$idx])) {
throw new Exception("Tried to start transaction in the middle of a transaction");
}
- $this->transactionCount++;
- $this->transaction = $this->master->id . '-' . $this->transactionCount . '-' . time();
- $this->con->begin($this->transaction);
+ $this->transactionCount[$idx]++;
+ $this->transaction[$idx] = $this->master->id . '-' . $this->transactionCount[$idx] . '-' . time();
+ $this->cons[$idx]->begin($this->transaction[$idx]);
}
}
- protected function ack($frame)
+ protected function ack($idx, $frame)
{
if ($this->useTransactions) {
- if (!$this->transaction) {
+ if (empty($this->transaction[$idx])) {
throw new Exception("Tried to ack but not in a transaction");
}
+ $this->cons[$idx]->ack($frame, $this->transaction[$idx]);
+ } else {
+ $this->cons[$idx]->ack($frame);
}
- $this->con->ack($frame, $this->transaction);
}
- protected function commit()
+ protected function commit($idx)
{
if ($this->useTransactions) {
- if (!$this->transaction) {
+ if (empty($this->transaction[$idx])) {
throw new Exception("Tried to commit but not in a transaction");
}
- $this->con->commit($this->transaction);
- $this->transaction = null;
+ $this->cons[$idx]->commit($this->transaction[$idx]);
+ $this->transaction[$idx] = null;
}
}
- protected function rollback()
+ protected function rollback($idx)
{
if ($this->useTransactions) {
- if (!$this->transaction) {
+ if (empty($this->transaction[$idx])) {
throw new Exception("Tried to rollback but not in a transaction");
}
- $this->con->commit($this->transaction);
- $this->transaction = null;
+ $this->cons[$idx]->commit($this->transaction[$idx]);
+ $this->transaction[$idx] = null;
}
}
}
diff --git a/lib/util.php b/lib/util.php
index 6c9f6316a..9e8ac26ad 100644
--- a/lib/util.php
+++ b/lib/util.php
@@ -178,7 +178,6 @@ function common_ensure_session()
}
if (isset($id)) {
session_id($id);
- setcookie(session_name(), $id);
}
@session_start();
if (!isset($_SESSION['started'])) {
@@ -990,9 +989,14 @@ function common_enqueue_notice($notice)
static $localTransports = array('omb',
'ping');
- static $allTransports = array('sms', 'plugin');
-
- $transports = $allTransports;
+ $transports = array();
+ if (common_config('sms', 'enabled')) {
+ $transports[] = 'sms';
+ }
+ if (Event::hasHandler('HandleQueuedNotice')) {
+ $transports[] = 'plugin';
+ }
+
$xmpp = common_config('xmpp', 'enabled');
@@ -1000,6 +1004,7 @@ function common_enqueue_notice($notice)
$transports[] = 'jabber';
}
+ // @fixme move these checks into QueueManager and/or individual handlers
if ($notice->is_local == Notice::LOCAL_PUBLIC ||
$notice->is_local == Notice::LOCAL_NONPUBLIC) {
$transports = array_merge($transports, $localTransports);
diff --git a/locale/ar/LC_MESSAGES/statusnet.po b/locale/ar/LC_MESSAGES/statusnet.po
index a816dcef9..bfc6c0324 100644
--- a/locale/ar/LC_MESSAGES/statusnet.po
+++ b/locale/ar/LC_MESSAGES/statusnet.po
@@ -9,12 +9,12 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-01-30 23:41+0000\n"
-"PO-Revision-Date: 2010-01-30 23:41:16+0000\n"
+"POT-Creation-Date: 2010-02-04 10:31+0000\n"
+"PO-Revision-Date: 2010-02-04 10:32:02+0000\n"
"Language-Team: Arabic\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.16alpha (r61734); Translate extension (2010-01-16)\n"
+"X-Generator: MediaWiki 1.16alpha (r61969); Translate extension (2010-01-16)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: ar\n"
"X-Message-Group: out-statusnet\n"
@@ -97,7 +97,7 @@ msgstr "لا صفحة كهذه"
#: actions/favoritesrss.php:74 actions/foaf.php:40 actions/foaf.php:58
#: actions/microsummary.php:62 actions/newmessage.php:116 actions/otp.php:76
#: actions/remotesubscribe.php:145 actions/remotesubscribe.php:154
-#: actions/replies.php:73 actions/repliesrss.php:38
+#: actions/replies.php:73 actions/repliesrss.php:38 actions/rsd.php:116
#: actions/showfavorites.php:105 actions/userbyid.php:74
#: actions/usergroups.php:91 actions/userrss.php:38 actions/xrds.php:71
#: lib/command.php:163 lib/command.php:302 lib/command.php:355
@@ -154,7 +154,7 @@ msgid ""
"his or her attention](%%%%action.newnotice%%%%?status_textarea=%3$s)."
msgstr ""
-#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:202
+#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:211
#, php-format
msgid ""
"Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
@@ -376,8 +376,8 @@ msgstr ""
msgid "Not a valid nickname."
msgstr "ليس اسمًا مستعارًا صحيحًا."
-#: actions/apigroupcreate.php:196 actions/editapplication.php:212
-#: actions/editgroup.php:195 actions/newapplication.php:200
+#: actions/apigroupcreate.php:196 actions/editapplication.php:215
+#: actions/editgroup.php:195 actions/newapplication.php:203
#: actions/newgroup.php:139 actions/profilesettings.php:222
#: actions/register.php:217
msgid "Homepage is not a valid URL."
@@ -389,8 +389,8 @@ msgstr "الصفحة الرئيسية ليست عنونًا صالحًا."
msgid "Full name is too long (max 255 chars)."
msgstr "الاسم الكامل طويل جدا (الأقصى 255 حرفًا)"
-#: actions/apigroupcreate.php:213 actions/editapplication.php:187
-#: actions/newapplication.php:169
+#: actions/apigroupcreate.php:213 actions/editapplication.php:190
+#: actions/newapplication.php:172
#, php-format
msgid "Description is too long (max %d chars)."
msgstr ""
@@ -467,18 +467,23 @@ msgstr "مجموعات %s"
msgid "groups on %s"
msgstr "مجموعات %s"
-#: actions/apioauthauthorize.php:108 actions/apioauthauthorize.php:114
-msgid "Bad request."
-msgstr "طلب سيء."
+#: actions/apioauthauthorize.php:101
+msgid "No oauth_token parameter provided."
+msgstr ""
-#: actions/apioauthauthorize.php:134 actions/avatarsettings.php:268
+#: actions/apioauthauthorize.php:106
+#, fuzzy
+msgid "Invalid token."
+msgstr "حجم غير صالح."
+
+#: actions/apioauthauthorize.php:123 actions/avatarsettings.php:268
#: actions/deletenotice.php:157 actions/disfavor.php:74
-#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:50
+#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:54
#: actions/groupblock.php:66 actions/grouplogo.php:309
#: actions/groupunblock.php:66 actions/imsettings.php:206
#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
-#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:139
+#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:135
#: actions/othersettings.php:145 actions/passwordsettings.php:138
#: actions/profilesettings.php:194 actions/recoverpassword.php:337
#: actions/register.php:165 actions/remotesubscribe.php:77
@@ -489,74 +494,82 @@ msgstr "طلب سيء."
msgid "There was a problem with your session token. Try again, please."
msgstr ""
-#: actions/apioauthauthorize.php:146
+#: actions/apioauthauthorize.php:135
msgid "Invalid nickname / password!"
msgstr "اسم/كلمة سر غير صحيحة!"
-#: actions/apioauthauthorize.php:170
+#: actions/apioauthauthorize.php:159
#, fuzzy
msgid "Database error deleting OAuth application user."
msgstr "خطأ قاعدة البيانات أثناء حذف المستخدم OAuth app"
-#: actions/apioauthauthorize.php:196
+#: actions/apioauthauthorize.php:185
#, fuzzy
msgid "Database error inserting OAuth application user."
msgstr "خطأ قاعدة البيانات أثناء إدخال المستخدم OAuth app"
-#: actions/apioauthauthorize.php:231
+#: actions/apioauthauthorize.php:214
#, php-format
msgid ""
"The request token %s has been authorized. Please exchange it for an access "
"token."
msgstr ""
-#: actions/apioauthauthorize.php:241
+#: actions/apioauthauthorize.php:227
#, php-format
-msgid "The request token %s has been denied."
+msgid "The request token %s has been denied and revoked."
msgstr ""
-#: actions/apioauthauthorize.php:246 actions/avatarsettings.php:281
+#: actions/apioauthauthorize.php:232 actions/avatarsettings.php:281
#: actions/designadminpanel.php:103 actions/editapplication.php:139
#: actions/emailsettings.php:256 actions/grouplogo.php:319
#: actions/imsettings.php:220 actions/newapplication.php:121
-#: actions/oauthconnectionssettings.php:151 actions/recoverpassword.php:44
+#: actions/oauthconnectionssettings.php:147 actions/recoverpassword.php:44
#: actions/smssettings.php:248 lib/designsettings.php:304
msgid "Unexpected form submission."
msgstr ""
-#: actions/apioauthauthorize.php:273
+#: actions/apioauthauthorize.php:259
msgid "An application would like to connect to your account"
msgstr ""
-#: actions/apioauthauthorize.php:290
+#: actions/apioauthauthorize.php:276
msgid "Allow or deny access"
msgstr ""
-#: actions/apioauthauthorize.php:320 lib/action.php:441
+#: actions/apioauthauthorize.php:292
+#, php-format
+msgid ""
+"The application <strong>%1$s</strong> by <strong>%2$s</strong> would like "
+"the ability to <strong>%3$s</strong> your %4$s account data. You should only "
+"give access to your %4$s account to third parties you trust."
+msgstr ""
+
+#: actions/apioauthauthorize.php:310 lib/action.php:441
msgid "Account"
msgstr "الحساب"
-#: actions/apioauthauthorize.php:323 actions/login.php:230
+#: actions/apioauthauthorize.php:313 actions/login.php:230
#: actions/profilesettings.php:106 actions/register.php:424
#: actions/showgroup.php:236 actions/tagother.php:94 lib/groupeditform.php:152
#: lib/userprofile.php:131
msgid "Nickname"
msgstr "الاسم المستعار"
-#: actions/apioauthauthorize.php:326 actions/login.php:233
+#: actions/apioauthauthorize.php:316 actions/login.php:233
#: actions/register.php:429 lib/accountsettingsaction.php:116
msgid "Password"
msgstr "كلمة السر"
-#: actions/apioauthauthorize.php:338
+#: actions/apioauthauthorize.php:328
msgid "Deny"
msgstr "ارفض"
-#: actions/apioauthauthorize.php:344
+#: actions/apioauthauthorize.php:334
msgid "Allow"
msgstr "اسمح"
-#: actions/apioauthauthorize.php:361
+#: actions/apioauthauthorize.php:351
msgid "Allow or deny access to your account information."
msgstr ""
@@ -725,8 +738,8 @@ msgstr "الأصلي"
msgid "Preview"
msgstr "عاين"
-#: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:608
+#: actions/avatarsettings.php:149 actions/showapplication.php:252
+#: lib/deleteuserform.php:66 lib/noticelist.php:624
msgid "Delete"
msgstr "احذف"
@@ -773,8 +786,9 @@ msgid ""
"will not be notified of any @-replies from them."
msgstr ""
-#: actions/block.php:143 actions/deletenotice.php:145
-#: actions/deleteuser.php:147 actions/groupblock.php:178
+#: actions/block.php:143 actions/deleteapplication.php:153
+#: actions/deletenotice.php:145 actions/deleteuser.php:147
+#: actions/groupblock.php:178
msgid "No"
msgstr "لا"
@@ -782,9 +796,9 @@ msgstr "لا"
msgid "Do not block this user"
msgstr "لا تمنع هذا المستخدم"
-#: actions/block.php:144 actions/deletenotice.php:146
-#: actions/deleteuser.php:148 actions/groupblock.php:179
-#: lib/repeatform.php:132
+#: actions/block.php:144 actions/deleteapplication.php:158
+#: actions/deletenotice.php:146 actions/deleteuser.php:148
+#: actions/groupblock.php:179 lib/repeatform.php:132
msgid "Yes"
msgstr "نعم"
@@ -888,6 +902,49 @@ msgstr "محادثة"
msgid "Notices"
msgstr "الإشعارات"
+#: actions/deleteapplication.php:63
+#, fuzzy
+msgid "You must be logged in to delete an application."
+msgstr "يجب أن تكون مسجل الدخول لتعدل تطبيقا."
+
+#: actions/deleteapplication.php:71
+#, fuzzy
+msgid "Application not found."
+msgstr "لم يوجد رمز التأكيد."
+
+#: actions/deleteapplication.php:78 actions/editapplication.php:77
+#: actions/showapplication.php:94
+msgid "You are not the owner of this application."
+msgstr "أنت لست مالك هذا التطبيق."
+
+#: actions/deleteapplication.php:102 actions/editapplication.php:127
+#: actions/newapplication.php:110 actions/showapplication.php:118
+#: lib/action.php:1195
+msgid "There was a problem with your session token."
+msgstr ""
+
+#: actions/deleteapplication.php:123 actions/deleteapplication.php:147
+#, fuzzy
+msgid "Delete application"
+msgstr "عدّل التطبيق"
+
+#: actions/deleteapplication.php:149
+msgid ""
+"Are you sure you want to delete this application? This will clear all data "
+"about the application from the database, including all existing user "
+"connections."
+msgstr ""
+
+#: actions/deleteapplication.php:156
+#, fuzzy
+msgid "Do not delete this application"
+msgstr "لا تحذف هذا الإشعار"
+
+#: actions/deleteapplication.php:160
+#, fuzzy
+msgid "Delete this application"
+msgstr "احذف هذا الإشعار"
+
#: actions/deletenotice.php:67 actions/disfavor.php:61 actions/favor.php:62
#: actions/groupblock.php:61 actions/groupunblock.php:61 actions/logout.php:69
#: actions/makeadmin.php:61 actions/newmessage.php:87 actions/newnotice.php:89
@@ -920,7 +977,7 @@ msgstr "أمتأكد من أنك تريد حذف هذا الإشعار؟"
msgid "Do not delete this notice"
msgstr "لا تحذف هذا الإشعار"
-#: actions/deletenotice.php:146 lib/noticelist.php:608
+#: actions/deletenotice.php:146 lib/noticelist.php:624
msgid "Delete this notice"
msgstr "احذف هذا الإشعار"
@@ -1060,7 +1117,7 @@ msgstr "هذا الشعار ليس مفضلًا!"
msgid "Add to favorites"
msgstr "أضف إلى المفضلات"
-#: actions/doc.php:155
+#: actions/doc.php:158
#, fuzzy, php-format
msgid "No such document \"%s\""
msgstr "لا مستند كهذا."
@@ -1074,20 +1131,11 @@ msgstr "عدّل التطبيق"
msgid "You must be logged in to edit an application."
msgstr "يجب أن تكون مسجل الدخول لتعدل تطبيقا."
-#: actions/editapplication.php:77 actions/showapplication.php:94
-msgid "You are not the owner of this application."
-msgstr "أنت لست مالك هذا التطبيق."
-
-#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:163
+#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:166
#: actions/showapplication.php:87
msgid "No such application."
msgstr "لا تطبيق كهذا."
-#: actions/editapplication.php:127 actions/newapplication.php:110
-#: actions/showapplication.php:118 lib/action.php:1195
-msgid "There was a problem with your session token."
-msgstr ""
-
#: actions/editapplication.php:161
msgid "Use this form to edit your application."
msgstr "استخدم هذا النموذج لتعدل تطبيقك."
@@ -1096,43 +1144,47 @@ msgstr "استخدم هذا النموذج لتعدل تطبيقك."
msgid "Name is required."
msgstr "الاسم مطلوب."
-#: actions/editapplication.php:180 actions/newapplication.php:162
+#: actions/editapplication.php:180 actions/newapplication.php:165
msgid "Name is too long (max 255 chars)."
msgstr "الاسم طويل جدا (الأقصى 255 حرفا)."
-#: actions/editapplication.php:183 actions/newapplication.php:165
+#: actions/editapplication.php:183 actions/newapplication.php:162
+msgid "Name already in use. Try another one."
+msgstr ""
+
+#: actions/editapplication.php:186 actions/newapplication.php:168
msgid "Description is required."
msgstr "الوصف مطلوب."
-#: actions/editapplication.php:191
+#: actions/editapplication.php:194
msgid "Source URL is too long."
msgstr ""
-#: actions/editapplication.php:197 actions/newapplication.php:182
+#: actions/editapplication.php:200 actions/newapplication.php:185
msgid "Source URL is not valid."
msgstr "مسار المصدر ليس صحيحا."
-#: actions/editapplication.php:200 actions/newapplication.php:185
+#: actions/editapplication.php:203 actions/newapplication.php:188
msgid "Organization is required."
msgstr "المنظمة مطلوبة."
-#: actions/editapplication.php:203 actions/newapplication.php:188
+#: actions/editapplication.php:206 actions/newapplication.php:191
msgid "Organization is too long (max 255 chars)."
msgstr "المنظمة طويلة جدا (الأقصى 255 حرفا)."
-#: actions/editapplication.php:206 actions/newapplication.php:191
+#: actions/editapplication.php:209 actions/newapplication.php:194
msgid "Organization homepage is required."
msgstr "صفحة المنظمة الرئيسية مطلوبة."
-#: actions/editapplication.php:215 actions/newapplication.php:203
+#: actions/editapplication.php:218 actions/newapplication.php:206
msgid "Callback is too long."
msgstr ""
-#: actions/editapplication.php:222 actions/newapplication.php:212
+#: actions/editapplication.php:225 actions/newapplication.php:215
msgid "Callback URL is not valid."
msgstr ""
-#: actions/editapplication.php:255
+#: actions/editapplication.php:258
msgid "Could not update application."
msgstr "لم يمكن تحديث التطبيق."
@@ -1987,11 +2039,11 @@ msgstr "يجب أن تكون مسجل الدخول لتسجل تطبيقا."
msgid "Use this form to register a new application."
msgstr "استخدم هذا النموذج لتسجل تطبيقا جديدا."
-#: actions/newapplication.php:173
+#: actions/newapplication.php:176
msgid "Source URL is required."
msgstr ""
-#: actions/newapplication.php:255 actions/newapplication.php:264
+#: actions/newapplication.php:258 actions/newapplication.php:267
msgid "Could not create application."
msgstr "لم يمكن إنشاء التطبيق."
@@ -2118,28 +2170,28 @@ msgstr ""
msgid "You have not registered any applications yet."
msgstr ""
-#: actions/oauthconnectionssettings.php:71
+#: actions/oauthconnectionssettings.php:72
msgid "Connected applications"
msgstr ""
-#: actions/oauthconnectionssettings.php:87
+#: actions/oauthconnectionssettings.php:83
msgid "You have allowed the following applications to access you account."
msgstr ""
-#: actions/oauthconnectionssettings.php:170
+#: actions/oauthconnectionssettings.php:175
msgid "You are not a user of that application."
msgstr "لست مستخدما لهذا التطبيق."
-#: actions/oauthconnectionssettings.php:180
+#: actions/oauthconnectionssettings.php:186
msgid "Unable to revoke access for app: "
msgstr ""
-#: actions/oauthconnectionssettings.php:192
+#: actions/oauthconnectionssettings.php:198
#, php-format
msgid "You have not authorized any applications to use your account."
msgstr ""
-#: actions/oauthconnectionssettings.php:205
+#: actions/oauthconnectionssettings.php:211
msgid "Developers can edit the registration settings for their applications "
msgstr ""
@@ -2631,36 +2683,36 @@ msgstr "المسار الزمني العام، صفحة %d"
msgid "Public timeline"
msgstr "المسار الزمني العام"
-#: actions/public.php:151
+#: actions/public.php:159
msgid "Public Stream Feed (RSS 1.0)"
msgstr ""
-#: actions/public.php:155
+#: actions/public.php:163
msgid "Public Stream Feed (RSS 2.0)"
msgstr ""
-#: actions/public.php:159
+#: actions/public.php:167
msgid "Public Stream Feed (Atom)"
msgstr ""
-#: actions/public.php:179
+#: actions/public.php:187
#, php-format
msgid ""
"This is the public timeline for %%site.name%% but no one has posted anything "
"yet."
msgstr ""
-#: actions/public.php:182
+#: actions/public.php:190
msgid "Be the first to post!"
msgstr "كن أول من يُرسل!"
-#: actions/public.php:186
+#: actions/public.php:194
#, php-format
msgid ""
"Why not [register an account](%%action.register%%) and be the first to post!"
msgstr ""
-#: actions/public.php:233
+#: actions/public.php:241
#, php-format
msgid ""
"This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2673,7 +2725,7 @@ msgstr ""
"الآن](%%action.register%%) لتشارك اشعاراتك مع أصدقائك وعائلتك وزملائك! "
"([اقرأ المزيد](%%doc.help%%))"
-#: actions/public.php:238
+#: actions/public.php:246
#, php-format
msgid ""
"This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -3004,7 +3056,7 @@ msgstr "لا يمكنك تكرار ملاحظتك الشخصية."
msgid "You already repeated that notice."
msgstr "أنت كررت هذه الملاحظة بالفعل."
-#: actions/repeat.php:114 lib/noticelist.php:626
+#: actions/repeat.php:114 lib/noticelist.php:642
msgid "Repeated"
msgstr "مكرر"
@@ -3064,6 +3116,10 @@ msgstr ""
msgid "Replies to %1$s on %2$s!"
msgstr ""
+#: actions/rsd.php:146 actions/version.php:157
+msgid "StatusNet"
+msgstr "ستاتس نت"
+
#: actions/sandbox.php:65 actions/unsandbox.php:65
msgid "You cannot sandbox users on this site."
msgstr ""
@@ -3107,76 +3163,81 @@ msgstr "اذف إعدادت الموقع"
msgid "You must be logged in to view an application."
msgstr "يجب أن تكون مسجل الدخول لرؤية تطبيق."
-#: actions/showapplication.php:158
+#: actions/showapplication.php:157
msgid "Application profile"
msgstr ""
-#: actions/showapplication.php:160 lib/applicationeditform.php:180
+#: actions/showapplication.php:159 lib/applicationeditform.php:180
msgid "Icon"
msgstr "أيقونة"
-#: actions/showapplication.php:170 actions/version.php:195
+#: actions/showapplication.php:169 actions/version.php:195
#: lib/applicationeditform.php:195
msgid "Name"
msgstr "الاسم"
-#: actions/showapplication.php:179 lib/applicationeditform.php:222
+#: actions/showapplication.php:178 lib/applicationeditform.php:222
msgid "Organization"
msgstr "المنظمة"
-#: actions/showapplication.php:188 actions/version.php:198
+#: actions/showapplication.php:187 actions/version.php:198
#: lib/applicationeditform.php:209 lib/groupeditform.php:172
msgid "Description"
msgstr "الوصف"
-#: actions/showapplication.php:193 actions/showgroup.php:429
+#: actions/showapplication.php:192 actions/showgroup.php:429
#: lib/profileaction.php:174
msgid "Statistics"
msgstr "إحصاءات"
-#: actions/showapplication.php:204
+#: actions/showapplication.php:203
#, php-format
-msgid "created by %1$s - %2$s access by default - %3$d users"
+msgid "Created by %1$s - %2$s access by default - %3$d users"
msgstr ""
-#: actions/showapplication.php:214
+#: actions/showapplication.php:213
msgid "Application actions"
msgstr ""
-#: actions/showapplication.php:233
+#: actions/showapplication.php:236
msgid "Reset key & secret"
msgstr ""
-#: actions/showapplication.php:241
+#: actions/showapplication.php:261
msgid "Application info"
msgstr ""
-#: actions/showapplication.php:243
+#: actions/showapplication.php:263
msgid "Consumer key"
msgstr ""
-#: actions/showapplication.php:248
+#: actions/showapplication.php:268
msgid "Consumer secret"
msgstr ""
-#: actions/showapplication.php:253
+#: actions/showapplication.php:273
msgid "Request token URL"
msgstr ""
-#: actions/showapplication.php:258
+#: actions/showapplication.php:278
msgid "Access token URL"
msgstr ""
-#: actions/showapplication.php:263
+#: actions/showapplication.php:283
msgid "Authorize URL"
msgstr "اسمح بالمسار"
-#: actions/showapplication.php:268
+#: actions/showapplication.php:288
msgid ""
"Note: We support HMAC-SHA1 signatures. We do not support the plaintext "
"signature method."
msgstr ""
+#: actions/showapplication.php:309
+#, fuzzy
+msgid "Are you sure you want to reset your consumer key and secret?"
+msgstr "أمتأكد من أنك تريد حذف هذا الإشعار؟"
+
#: actions/showfavorites.php:79
#, fuzzy, php-format
msgid "%1$s's favorite notices, page %2$d"
@@ -3380,25 +3441,25 @@ msgstr ""
msgid "FOAF for %s"
msgstr ""
-#: actions/showstream.php:191
+#: actions/showstream.php:200
#, php-format
msgid "This is the timeline for %1$s but %2$s hasn't posted anything yet."
msgstr ""
-#: actions/showstream.php:196
+#: actions/showstream.php:205
msgid ""
"Seen anything interesting recently? You haven't posted any notices yet, now "
"would be a good time to start :)"
msgstr ""
-#: actions/showstream.php:198
+#: actions/showstream.php:207
#, php-format
msgid ""
"You can try to nudge %1$s or [post something to his or her attention](%%%%"
"action.newnotice%%%%?status_textarea=%2$s)."
msgstr ""
-#: actions/showstream.php:234
+#: actions/showstream.php:243
#, php-format
msgid ""
"**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3407,7 +3468,7 @@ msgid ""
"follow **%s**'s notices and many more! ([Read more](%%%%doc.help%%%%))"
msgstr ""
-#: actions/showstream.php:239
+#: actions/showstream.php:248
#, php-format
msgid ""
"**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3415,7 +3476,7 @@ msgid ""
"[StatusNet](http://status.net/) tool. "
msgstr ""
-#: actions/showstream.php:296
+#: actions/showstream.php:305
#, php-format
msgid "Repeat of %s"
msgstr "تكرار ل%s"
@@ -4055,10 +4116,6 @@ msgid ""
"Inc. and contributors."
msgstr ""
-#: actions/version.php:157
-msgid "StatusNet"
-msgstr "ستاتس نت"
-
#: actions/version.php:161
msgid "Contributors"
msgstr ""
@@ -4176,22 +4233,22 @@ msgstr ""
msgid "Problem saving notice."
msgstr "مشكلة أثناء حفظ الإشعار."
-#: classes/Notice.php:790
+#: classes/Notice.php:788
#, fuzzy
msgid "Problem saving group inbox."
msgstr "مشكلة أثناء حفظ الإشعار."
-#: classes/Notice.php:850
+#: classes/Notice.php:848
#, php-format
msgid "DB error inserting reply: %s"
msgstr ""
-#: classes/Notice.php:1233
+#: classes/Notice.php:1231
#, php-format
msgid "RT @%1$s %2$s"
msgstr "آر تي @%1$s %2$s"
-#: classes/User.php:382
+#: classes/User.php:385
#, php-format
msgid "Welcome to %1$s, @%2$s!"
msgstr "أهلا بكم في %1$s يا @%2$s!"
@@ -4468,11 +4525,11 @@ msgstr "ضبط المسارات"
msgid "Sessions configuration"
msgstr "ضبط التصميم"
-#: lib/apiauth.php:99
+#: lib/apiauth.php:95
msgid "API resource requires read-write access, but you only have read access."
msgstr ""
-#: lib/apiauth.php:279
+#: lib/apiauth.php:273
#, php-format
msgid "Failed API auth attempt, nickname = %1$s, proxy = %2$s, ip = %3$s"
msgstr ""
@@ -4843,19 +4900,19 @@ msgid ""
"tracking - not yet implemented.\n"
msgstr ""
-#: lib/common.php:131
+#: lib/common.php:135
msgid "No configuration file found. "
msgstr ""
-#: lib/common.php:132
+#: lib/common.php:136
msgid "I looked for configuration files in the following places: "
msgstr ""
-#: lib/common.php:134
+#: lib/common.php:138
msgid "You may wish to run the installer to fix this."
msgstr ""
-#: lib/common.php:135
+#: lib/common.php:139
msgid "Go to the installer."
msgstr "اذهب إلى المُثبّت."
@@ -5416,23 +5473,23 @@ msgstr "غ"
msgid "at"
msgstr "في"
-#: lib/noticelist.php:531
+#: lib/noticelist.php:547
msgid "in context"
msgstr "في السياق"
-#: lib/noticelist.php:556
+#: lib/noticelist.php:572
msgid "Repeated by"
msgstr "مكرر بواسطة"
-#: lib/noticelist.php:582
+#: lib/noticelist.php:598
msgid "Reply to this notice"
msgstr "رُد على هذا الإشعار"
-#: lib/noticelist.php:583
+#: lib/noticelist.php:599
msgid "Reply"
msgstr "رُد"
-#: lib/noticelist.php:625
+#: lib/noticelist.php:641
msgid "Notice repeated"
msgstr "الإشعار مكرر"
@@ -5573,6 +5630,10 @@ msgstr "أأكرّر هذا الإشعار؟ّ"
msgid "Repeat this notice"
msgstr "كرّر هذا الإشعار"
+#: lib/router.php:665
+msgid "No single user defined for single-user mode."
+msgstr ""
+
#: lib/sandboxform.php:67
msgid "Sandbox"
msgstr ""
@@ -5738,47 +5799,47 @@ msgstr "رسالة"
msgid "Moderate"
msgstr ""
-#: lib/util.php:868
+#: lib/util.php:867
msgid "a few seconds ago"
msgstr "قبل لحظات قليلة"
-#: lib/util.php:870
+#: lib/util.php:869
msgid "about a minute ago"
msgstr "قبل دقيقة تقريبًا"
-#: lib/util.php:872
+#: lib/util.php:871
#, php-format
msgid "about %d minutes ago"
msgstr ""
-#: lib/util.php:874
+#: lib/util.php:873
msgid "about an hour ago"
msgstr "قبل ساعة تقريبًا"
-#: lib/util.php:876
+#: lib/util.php:875
#, php-format
msgid "about %d hours ago"
msgstr ""
-#: lib/util.php:878
+#: lib/util.php:877
msgid "about a day ago"
msgstr "قبل يوم تقريبا"
-#: lib/util.php:880
+#: lib/util.php:879
#, php-format
msgid "about %d days ago"
msgstr ""
-#: lib/util.php:882
+#: lib/util.php:881
msgid "about a month ago"
msgstr "قبل شهر تقريبًا"
-#: lib/util.php:884
+#: lib/util.php:883
#, php-format
msgid "about %d months ago"
msgstr ""
-#: lib/util.php:886
+#: lib/util.php:885
msgid "about a year ago"
msgstr "قبل سنة تقريبًا"
diff --git a/locale/arz/LC_MESSAGES/statusnet.po b/locale/arz/LC_MESSAGES/statusnet.po
index 75b04d3c3..6f859ec1f 100644
--- a/locale/arz/LC_MESSAGES/statusnet.po
+++ b/locale/arz/LC_MESSAGES/statusnet.po
@@ -9,12 +9,12 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-01-30 23:41+0000\n"
-"PO-Revision-Date: 2010-01-30 23:41:19+0000\n"
+"POT-Creation-Date: 2010-02-04 10:31+0000\n"
+"PO-Revision-Date: 2010-02-04 10:32:07+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 (r61734); Translate extension (2010-01-16)\n"
+"X-Generator: MediaWiki 1.16alpha (r61969); Translate extension (2010-01-16)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: arz\n"
"X-Message-Group: out-statusnet\n"
@@ -97,7 +97,7 @@ msgstr "لا صفحه كهذه"
#: actions/favoritesrss.php:74 actions/foaf.php:40 actions/foaf.php:58
#: actions/microsummary.php:62 actions/newmessage.php:116 actions/otp.php:76
#: actions/remotesubscribe.php:145 actions/remotesubscribe.php:154
-#: actions/replies.php:73 actions/repliesrss.php:38
+#: actions/replies.php:73 actions/repliesrss.php:38 actions/rsd.php:116
#: actions/showfavorites.php:105 actions/userbyid.php:74
#: actions/usergroups.php:91 actions/userrss.php:38 actions/xrds.php:71
#: lib/command.php:163 lib/command.php:302 lib/command.php:355
@@ -154,7 +154,7 @@ msgid ""
"his or her attention](%%%%action.newnotice%%%%?status_textarea=%3$s)."
msgstr ""
-#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:202
+#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:211
#, php-format
msgid ""
"Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
@@ -376,8 +376,8 @@ msgstr ""
msgid "Not a valid nickname."
msgstr "ليس اسمًا مستعارًا صحيحًا."
-#: actions/apigroupcreate.php:196 actions/editapplication.php:212
-#: actions/editgroup.php:195 actions/newapplication.php:200
+#: actions/apigroupcreate.php:196 actions/editapplication.php:215
+#: actions/editgroup.php:195 actions/newapplication.php:203
#: actions/newgroup.php:139 actions/profilesettings.php:222
#: actions/register.php:217
msgid "Homepage is not a valid URL."
@@ -389,8 +389,8 @@ msgstr "الصفحه الرئيسيه ليست عنونًا صالحًا."
msgid "Full name is too long (max 255 chars)."
msgstr "الاسم الكامل طويل جدا (الأقصى 255 حرفًا)"
-#: actions/apigroupcreate.php:213 actions/editapplication.php:187
-#: actions/newapplication.php:169
+#: actions/apigroupcreate.php:213 actions/editapplication.php:190
+#: actions/newapplication.php:172
#, php-format
msgid "Description is too long (max %d chars)."
msgstr ""
@@ -467,18 +467,23 @@ msgstr "مجموعات %s"
msgid "groups on %s"
msgstr "مجموعات %s"
-#: actions/apioauthauthorize.php:108 actions/apioauthauthorize.php:114
-msgid "Bad request."
+#: actions/apioauthauthorize.php:101
+msgid "No oauth_token parameter provided."
msgstr ""
-#: actions/apioauthauthorize.php:134 actions/avatarsettings.php:268
+#: actions/apioauthauthorize.php:106
+#, fuzzy
+msgid "Invalid token."
+msgstr "حجم غير صالح."
+
+#: actions/apioauthauthorize.php:123 actions/avatarsettings.php:268
#: actions/deletenotice.php:157 actions/disfavor.php:74
-#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:50
+#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:54
#: actions/groupblock.php:66 actions/grouplogo.php:309
#: actions/groupunblock.php:66 actions/imsettings.php:206
#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
-#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:139
+#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:135
#: actions/othersettings.php:145 actions/passwordsettings.php:138
#: actions/profilesettings.php:194 actions/recoverpassword.php:337
#: actions/register.php:165 actions/remotesubscribe.php:77
@@ -489,74 +494,82 @@ msgstr ""
msgid "There was a problem with your session token. Try again, please."
msgstr ""
-#: actions/apioauthauthorize.php:146
+#: actions/apioauthauthorize.php:135
msgid "Invalid nickname / password!"
msgstr "اسم/كلمه سر غير صحيحة!"
-#: actions/apioauthauthorize.php:170
+#: actions/apioauthauthorize.php:159
#, fuzzy
msgid "Database error deleting OAuth application user."
msgstr "خطأ قاعده البيانات أثناء حذف المستخدم OAuth app"
-#: actions/apioauthauthorize.php:196
+#: actions/apioauthauthorize.php:185
#, fuzzy
msgid "Database error inserting OAuth application user."
msgstr "خطأ قاعده البيانات أثناء إدخال المستخدم OAuth app"
-#: actions/apioauthauthorize.php:231
+#: actions/apioauthauthorize.php:214
#, php-format
msgid ""
"The request token %s has been authorized. Please exchange it for an access "
"token."
msgstr ""
-#: actions/apioauthauthorize.php:241
+#: actions/apioauthauthorize.php:227
#, php-format
-msgid "The request token %s has been denied."
+msgid "The request token %s has been denied and revoked."
msgstr ""
-#: actions/apioauthauthorize.php:246 actions/avatarsettings.php:281
+#: actions/apioauthauthorize.php:232 actions/avatarsettings.php:281
#: actions/designadminpanel.php:103 actions/editapplication.php:139
#: actions/emailsettings.php:256 actions/grouplogo.php:319
#: actions/imsettings.php:220 actions/newapplication.php:121
-#: actions/oauthconnectionssettings.php:151 actions/recoverpassword.php:44
+#: actions/oauthconnectionssettings.php:147 actions/recoverpassword.php:44
#: actions/smssettings.php:248 lib/designsettings.php:304
msgid "Unexpected form submission."
msgstr ""
-#: actions/apioauthauthorize.php:273
+#: actions/apioauthauthorize.php:259
msgid "An application would like to connect to your account"
msgstr ""
-#: actions/apioauthauthorize.php:290
+#: actions/apioauthauthorize.php:276
msgid "Allow or deny access"
msgstr ""
-#: actions/apioauthauthorize.php:320 lib/action.php:441
+#: actions/apioauthauthorize.php:292
+#, php-format
+msgid ""
+"The application <strong>%1$s</strong> by <strong>%2$s</strong> would like "
+"the ability to <strong>%3$s</strong> your %4$s account data. You should only "
+"give access to your %4$s account to third parties you trust."
+msgstr ""
+
+#: actions/apioauthauthorize.php:310 lib/action.php:441
msgid "Account"
msgstr "الحساب"
-#: actions/apioauthauthorize.php:323 actions/login.php:230
+#: actions/apioauthauthorize.php:313 actions/login.php:230
#: actions/profilesettings.php:106 actions/register.php:424
#: actions/showgroup.php:236 actions/tagother.php:94 lib/groupeditform.php:152
#: lib/userprofile.php:131
msgid "Nickname"
msgstr "الاسم المستعار"
-#: actions/apioauthauthorize.php:326 actions/login.php:233
+#: actions/apioauthauthorize.php:316 actions/login.php:233
#: actions/register.php:429 lib/accountsettingsaction.php:116
msgid "Password"
msgstr "كلمه السر"
-#: actions/apioauthauthorize.php:338
+#: actions/apioauthauthorize.php:328
msgid "Deny"
msgstr "ارفض"
-#: actions/apioauthauthorize.php:344
+#: actions/apioauthauthorize.php:334
msgid "Allow"
msgstr "اسمح"
-#: actions/apioauthauthorize.php:361
+#: actions/apioauthauthorize.php:351
msgid "Allow or deny access to your account information."
msgstr ""
@@ -725,8 +738,8 @@ msgstr "الأصلي"
msgid "Preview"
msgstr "عاين"
-#: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:608
+#: actions/avatarsettings.php:149 actions/showapplication.php:252
+#: lib/deleteuserform.php:66 lib/noticelist.php:624
msgid "Delete"
msgstr "احذف"
@@ -773,8 +786,9 @@ msgid ""
"will not be notified of any @-replies from them."
msgstr ""
-#: actions/block.php:143 actions/deletenotice.php:145
-#: actions/deleteuser.php:147 actions/groupblock.php:178
+#: actions/block.php:143 actions/deleteapplication.php:153
+#: actions/deletenotice.php:145 actions/deleteuser.php:147
+#: actions/groupblock.php:178
msgid "No"
msgstr "لا"
@@ -782,9 +796,9 @@ msgstr "لا"
msgid "Do not block this user"
msgstr "لا تمنع هذا المستخدم"
-#: actions/block.php:144 actions/deletenotice.php:146
-#: actions/deleteuser.php:148 actions/groupblock.php:179
-#: lib/repeatform.php:132
+#: actions/block.php:144 actions/deleteapplication.php:158
+#: actions/deletenotice.php:146 actions/deleteuser.php:148
+#: actions/groupblock.php:179 lib/repeatform.php:132
msgid "Yes"
msgstr "نعم"
@@ -888,6 +902,49 @@ msgstr "محادثة"
msgid "Notices"
msgstr "الإشعارات"
+#: actions/deleteapplication.php:63
+#, fuzzy
+msgid "You must be logged in to delete an application."
+msgstr "يجب أن تكون مسجل الدخول لتعدل تطبيقا."
+
+#: actions/deleteapplication.php:71
+#, fuzzy
+msgid "Application not found."
+msgstr "لم يوجد رمز التأكيد."
+
+#: actions/deleteapplication.php:78 actions/editapplication.php:77
+#: actions/showapplication.php:94
+msgid "You are not the owner of this application."
+msgstr "أنت لست مالك هذا التطبيق."
+
+#: actions/deleteapplication.php:102 actions/editapplication.php:127
+#: actions/newapplication.php:110 actions/showapplication.php:118
+#: lib/action.php:1195
+msgid "There was a problem with your session token."
+msgstr ""
+
+#: actions/deleteapplication.php:123 actions/deleteapplication.php:147
+#, fuzzy
+msgid "Delete application"
+msgstr "لا تطبيق كهذا."
+
+#: actions/deleteapplication.php:149
+msgid ""
+"Are you sure you want to delete this application? This will clear all data "
+"about the application from the database, including all existing user "
+"connections."
+msgstr ""
+
+#: actions/deleteapplication.php:156
+#, fuzzy
+msgid "Do not delete this application"
+msgstr "لا تحذف هذا الإشعار"
+
+#: actions/deleteapplication.php:160
+#, fuzzy
+msgid "Delete this application"
+msgstr "احذف هذا الإشعار"
+
#: actions/deletenotice.php:67 actions/disfavor.php:61 actions/favor.php:62
#: actions/groupblock.php:61 actions/groupunblock.php:61 actions/logout.php:69
#: actions/makeadmin.php:61 actions/newmessage.php:87 actions/newnotice.php:89
@@ -920,7 +977,7 @@ msgstr "أمتأكد من أنك تريد حذف هذا الإشعار؟"
msgid "Do not delete this notice"
msgstr "لا تحذف هذا الإشعار"
-#: actions/deletenotice.php:146 lib/noticelist.php:608
+#: actions/deletenotice.php:146 lib/noticelist.php:624
msgid "Delete this notice"
msgstr "احذف هذا الإشعار"
@@ -1060,7 +1117,7 @@ msgstr "هذا الشعار ليس مفضلًا!"
msgid "Add to favorites"
msgstr "أضف إلى المفضلات"
-#: actions/doc.php:155
+#: actions/doc.php:158
#, fuzzy, php-format
msgid "No such document \"%s\""
msgstr "لا مستند كهذا."
@@ -1074,20 +1131,11 @@ msgstr "تطبيقات OAuth"
msgid "You must be logged in to edit an application."
msgstr "يجب أن تكون مسجل الدخول لتعدل تطبيقا."
-#: actions/editapplication.php:77 actions/showapplication.php:94
-msgid "You are not the owner of this application."
-msgstr "أنت لست مالك هذا التطبيق."
-
-#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:163
+#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:166
#: actions/showapplication.php:87
msgid "No such application."
msgstr "لا تطبيق كهذا."
-#: actions/editapplication.php:127 actions/newapplication.php:110
-#: actions/showapplication.php:118 lib/action.php:1195
-msgid "There was a problem with your session token."
-msgstr ""
-
#: actions/editapplication.php:161
msgid "Use this form to edit your application."
msgstr "استخدم النموذج ده علشان تعدل تطبيقك."
@@ -1096,43 +1144,47 @@ msgstr "استخدم النموذج ده علشان تعدل تطبيقك."
msgid "Name is required."
msgstr "الاسم مطلوب."
-#: actions/editapplication.php:180 actions/newapplication.php:162
+#: actions/editapplication.php:180 actions/newapplication.php:165
msgid "Name is too long (max 255 chars)."
msgstr "الاسم طويل جدا (الأقصى 255 حرفا)."
-#: actions/editapplication.php:183 actions/newapplication.php:165
+#: actions/editapplication.php:183 actions/newapplication.php:162
+msgid "Name already in use. Try another one."
+msgstr ""
+
+#: actions/editapplication.php:186 actions/newapplication.php:168
msgid "Description is required."
msgstr "الوصف مطلوب."
-#: actions/editapplication.php:191
+#: actions/editapplication.php:194
msgid "Source URL is too long."
msgstr ""
-#: actions/editapplication.php:197 actions/newapplication.php:182
+#: actions/editapplication.php:200 actions/newapplication.php:185
msgid "Source URL is not valid."
msgstr "مسار المصدر ليس صحيحا."
-#: actions/editapplication.php:200 actions/newapplication.php:185
+#: actions/editapplication.php:203 actions/newapplication.php:188
msgid "Organization is required."
msgstr ""
-#: actions/editapplication.php:203 actions/newapplication.php:188
+#: actions/editapplication.php:206 actions/newapplication.php:191
msgid "Organization is too long (max 255 chars)."
msgstr "المنظمه طويله جدا (الأقصى 255 حرفا)."
-#: actions/editapplication.php:206 actions/newapplication.php:191
+#: actions/editapplication.php:209 actions/newapplication.php:194
msgid "Organization homepage is required."
msgstr ""
-#: actions/editapplication.php:215 actions/newapplication.php:203
+#: actions/editapplication.php:218 actions/newapplication.php:206
msgid "Callback is too long."
msgstr ""
-#: actions/editapplication.php:222 actions/newapplication.php:212
+#: actions/editapplication.php:225 actions/newapplication.php:215
msgid "Callback URL is not valid."
msgstr ""
-#: actions/editapplication.php:255
+#: actions/editapplication.php:258
msgid "Could not update application."
msgstr "لم يمكن تحديث التطبيق."
@@ -1987,11 +2039,11 @@ msgstr "يجب أن تكون مسجل الدخول لتسجل تطبيقا."
msgid "Use this form to register a new application."
msgstr "استخدم هذا النموذج لتسجل تطبيقا جديدا."
-#: actions/newapplication.php:173
+#: actions/newapplication.php:176
msgid "Source URL is required."
msgstr ""
-#: actions/newapplication.php:255 actions/newapplication.php:264
+#: actions/newapplication.php:258 actions/newapplication.php:267
msgid "Could not create application."
msgstr "مش ممكن إنشاء التطبيق."
@@ -2116,28 +2168,28 @@ msgstr ""
msgid "You have not registered any applications yet."
msgstr ""
-#: actions/oauthconnectionssettings.php:71
+#: actions/oauthconnectionssettings.php:72
msgid "Connected applications"
msgstr ""
-#: actions/oauthconnectionssettings.php:87
+#: actions/oauthconnectionssettings.php:83
msgid "You have allowed the following applications to access you account."
msgstr ""
-#: actions/oauthconnectionssettings.php:170
+#: actions/oauthconnectionssettings.php:175
msgid "You are not a user of that application."
msgstr "أنت لست مستخدما لهذا التطبيق."
-#: actions/oauthconnectionssettings.php:180
+#: actions/oauthconnectionssettings.php:186
msgid "Unable to revoke access for app: "
msgstr ""
-#: actions/oauthconnectionssettings.php:192
+#: actions/oauthconnectionssettings.php:198
#, php-format
msgid "You have not authorized any applications to use your account."
msgstr ""
-#: actions/oauthconnectionssettings.php:205
+#: actions/oauthconnectionssettings.php:211
msgid "Developers can edit the registration settings for their applications "
msgstr ""
@@ -2629,36 +2681,36 @@ msgstr "المسار الزمنى العام، صفحه %d"
msgid "Public timeline"
msgstr "المسار الزمنى العام"
-#: actions/public.php:151
+#: actions/public.php:159
msgid "Public Stream Feed (RSS 1.0)"
msgstr ""
-#: actions/public.php:155
+#: actions/public.php:163
msgid "Public Stream Feed (RSS 2.0)"
msgstr ""
-#: actions/public.php:159
+#: actions/public.php:167
msgid "Public Stream Feed (Atom)"
msgstr ""
-#: actions/public.php:179
+#: actions/public.php:187
#, php-format
msgid ""
"This is the public timeline for %%site.name%% but no one has posted anything "
"yet."
msgstr ""
-#: actions/public.php:182
+#: actions/public.php:190
msgid "Be the first to post!"
msgstr "كن أول من يُرسل!"
-#: actions/public.php:186
+#: actions/public.php:194
#, php-format
msgid ""
"Why not [register an account](%%action.register%%) and be the first to post!"
msgstr ""
-#: actions/public.php:233
+#: actions/public.php:241
#, php-format
msgid ""
"This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2671,7 +2723,7 @@ msgstr ""
"الآن](%%action.register%%) لتشارك اشعاراتك مع أصدقائك وعائلتك وزملائك! "
"([اقرأ المزيد](%%doc.help%%))"
-#: actions/public.php:238
+#: actions/public.php:246
#, php-format
msgid ""
"This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -3002,7 +3054,7 @@ msgstr "لا يمكنك تكرار ملاحظتك الشخصيه."
msgid "You already repeated that notice."
msgstr "أنت كررت هذه الملاحظه بالفعل."
-#: actions/repeat.php:114 lib/noticelist.php:626
+#: actions/repeat.php:114 lib/noticelist.php:642
msgid "Repeated"
msgstr "مكرر"
@@ -3062,6 +3114,10 @@ msgstr ""
msgid "Replies to %1$s on %2$s!"
msgstr ""
+#: actions/rsd.php:146 actions/version.php:157
+msgid "StatusNet"
+msgstr "ستاتس نت"
+
#: actions/sandbox.php:65 actions/unsandbox.php:65
msgid "You cannot sandbox users on this site."
msgstr ""
@@ -3105,76 +3161,81 @@ msgstr "اذف إعدادت الموقع"
msgid "You must be logged in to view an application."
msgstr "يجب أن تكون مسجل الدخول لرؤيه تطبيق."
-#: actions/showapplication.php:158
+#: actions/showapplication.php:157
msgid "Application profile"
msgstr ""
-#: actions/showapplication.php:160 lib/applicationeditform.php:180
+#: actions/showapplication.php:159 lib/applicationeditform.php:180
msgid "Icon"
msgstr ""
-#: actions/showapplication.php:170 actions/version.php:195
+#: actions/showapplication.php:169 actions/version.php:195
#: lib/applicationeditform.php:195
msgid "Name"
msgstr "الاسم"
-#: actions/showapplication.php:179 lib/applicationeditform.php:222
+#: actions/showapplication.php:178 lib/applicationeditform.php:222
msgid "Organization"
msgstr "المنظمة"
-#: actions/showapplication.php:188 actions/version.php:198
+#: actions/showapplication.php:187 actions/version.php:198
#: lib/applicationeditform.php:209 lib/groupeditform.php:172
msgid "Description"
msgstr "الوصف"
-#: actions/showapplication.php:193 actions/showgroup.php:429
+#: actions/showapplication.php:192 actions/showgroup.php:429
#: lib/profileaction.php:174
msgid "Statistics"
msgstr "إحصاءات"
-#: actions/showapplication.php:204
+#: actions/showapplication.php:203
#, php-format
-msgid "created by %1$s - %2$s access by default - %3$d users"
+msgid "Created by %1$s - %2$s access by default - %3$d users"
msgstr ""
-#: actions/showapplication.php:214
+#: actions/showapplication.php:213
msgid "Application actions"
msgstr ""
-#: actions/showapplication.php:233
+#: actions/showapplication.php:236
msgid "Reset key & secret"
msgstr ""
-#: actions/showapplication.php:241
+#: actions/showapplication.php:261
msgid "Application info"
msgstr ""
-#: actions/showapplication.php:243
+#: actions/showapplication.php:263
msgid "Consumer key"
msgstr ""
-#: actions/showapplication.php:248
+#: actions/showapplication.php:268
msgid "Consumer secret"
msgstr ""
-#: actions/showapplication.php:253
+#: actions/showapplication.php:273
msgid "Request token URL"
msgstr ""
-#: actions/showapplication.php:258
+#: actions/showapplication.php:278
msgid "Access token URL"
msgstr ""
-#: actions/showapplication.php:263
+#: actions/showapplication.php:283
msgid "Authorize URL"
msgstr "اسمح بالمسار"
-#: actions/showapplication.php:268
+#: actions/showapplication.php:288
msgid ""
"Note: We support HMAC-SHA1 signatures. We do not support the plaintext "
"signature method."
msgstr ""
+#: actions/showapplication.php:309
+#, fuzzy
+msgid "Are you sure you want to reset your consumer key and secret?"
+msgstr "أمتأكد من أنك تريد حذف هذا الإشعار؟"
+
#: actions/showfavorites.php:79
#, fuzzy, php-format
msgid "%1$s's favorite notices, page %2$d"
@@ -3378,25 +3439,25 @@ msgstr ""
msgid "FOAF for %s"
msgstr ""
-#: actions/showstream.php:191
+#: actions/showstream.php:200
#, php-format
msgid "This is the timeline for %1$s but %2$s hasn't posted anything yet."
msgstr ""
-#: actions/showstream.php:196
+#: actions/showstream.php:205
msgid ""
"Seen anything interesting recently? You haven't posted any notices yet, now "
"would be a good time to start :)"
msgstr ""
-#: actions/showstream.php:198
+#: actions/showstream.php:207
#, php-format
msgid ""
"You can try to nudge %1$s or [post something to his or her attention](%%%%"
"action.newnotice%%%%?status_textarea=%2$s)."
msgstr ""
-#: actions/showstream.php:234
+#: actions/showstream.php:243
#, php-format
msgid ""
"**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3405,7 +3466,7 @@ msgid ""
"follow **%s**'s notices and many more! ([Read more](%%%%doc.help%%%%))"
msgstr ""
-#: actions/showstream.php:239
+#: actions/showstream.php:248
#, php-format
msgid ""
"**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3413,7 +3474,7 @@ msgid ""
"[StatusNet](http://status.net/) tool. "
msgstr ""
-#: actions/showstream.php:296
+#: actions/showstream.php:305
#, php-format
msgid "Repeat of %s"
msgstr "تكرارات %s"
@@ -4053,10 +4114,6 @@ msgid ""
"Inc. and contributors."
msgstr ""
-#: actions/version.php:157
-msgid "StatusNet"
-msgstr "ستاتس نت"
-
#: actions/version.php:161
msgid "Contributors"
msgstr ""
@@ -4174,22 +4231,22 @@ msgstr ""
msgid "Problem saving notice."
msgstr "مشكله أثناء حفظ الإشعار."
-#: classes/Notice.php:790
+#: classes/Notice.php:788
#, fuzzy
msgid "Problem saving group inbox."
msgstr "مشكله أثناء حفظ الإشعار."
-#: classes/Notice.php:850
+#: classes/Notice.php:848
#, php-format
msgid "DB error inserting reply: %s"
msgstr ""
-#: classes/Notice.php:1233
+#: classes/Notice.php:1231
#, php-format
msgid "RT @%1$s %2$s"
msgstr "آر تى @%1$s %2$s"
-#: classes/User.php:382
+#: classes/User.php:385
#, php-format
msgid "Welcome to %1$s, @%2$s!"
msgstr "أهلا بكم فى %1$s يا @%2$s!"
@@ -4466,11 +4523,11 @@ msgstr "ضبط المسارات"
msgid "Sessions configuration"
msgstr "ضبط التصميم"
-#: lib/apiauth.php:99
+#: lib/apiauth.php:95
msgid "API resource requires read-write access, but you only have read access."
msgstr ""
-#: lib/apiauth.php:279
+#: lib/apiauth.php:273
#, php-format
msgid "Failed API auth attempt, nickname = %1$s, proxy = %2$s, ip = %3$s"
msgstr ""
@@ -4841,19 +4898,19 @@ msgid ""
"tracking - not yet implemented.\n"
msgstr ""
-#: lib/common.php:131
+#: lib/common.php:135
msgid "No configuration file found. "
msgstr ""
-#: lib/common.php:132
+#: lib/common.php:136
msgid "I looked for configuration files in the following places: "
msgstr ""
-#: lib/common.php:134
+#: lib/common.php:138
msgid "You may wish to run the installer to fix this."
msgstr ""
-#: lib/common.php:135
+#: lib/common.php:139
msgid "Go to the installer."
msgstr "اذهب إلى المُثبّت."
@@ -5404,23 +5461,23 @@ msgstr "غ"
msgid "at"
msgstr "في"
-#: lib/noticelist.php:531
+#: lib/noticelist.php:547
msgid "in context"
msgstr "فى السياق"
-#: lib/noticelist.php:556
+#: lib/noticelist.php:572
msgid "Repeated by"
msgstr "مكرر بواسطة"
-#: lib/noticelist.php:582
+#: lib/noticelist.php:598
msgid "Reply to this notice"
msgstr "رُد على هذا الإشعار"
-#: lib/noticelist.php:583
+#: lib/noticelist.php:599
msgid "Reply"
msgstr "رُد"
-#: lib/noticelist.php:625
+#: lib/noticelist.php:641
msgid "Notice repeated"
msgstr "الإشعار مكرر"
@@ -5561,6 +5618,10 @@ msgstr "كرر هذا الإشعار؟"
msgid "Repeat this notice"
msgstr "كرر هذا الإشعار"
+#: lib/router.php:665
+msgid "No single user defined for single-user mode."
+msgstr ""
+
#: lib/sandboxform.php:67
msgid "Sandbox"
msgstr ""
@@ -5726,47 +5787,47 @@ msgstr "رسالة"
msgid "Moderate"
msgstr ""
-#: lib/util.php:868
+#: lib/util.php:867
msgid "a few seconds ago"
msgstr "قبل لحظات قليلة"
-#: lib/util.php:870
+#: lib/util.php:869
msgid "about a minute ago"
msgstr "قبل دقيقه تقريبًا"
-#: lib/util.php:872
+#: lib/util.php:871
#, php-format
msgid "about %d minutes ago"
msgstr ""
-#: lib/util.php:874
+#: lib/util.php:873
msgid "about an hour ago"
msgstr "قبل ساعه تقريبًا"
-#: lib/util.php:876
+#: lib/util.php:875
#, php-format
msgid "about %d hours ago"
msgstr ""
-#: lib/util.php:878
+#: lib/util.php:877
msgid "about a day ago"
msgstr "قبل يوم تقريبا"
-#: lib/util.php:880
+#: lib/util.php:879
#, php-format
msgid "about %d days ago"
msgstr ""
-#: lib/util.php:882
+#: lib/util.php:881
msgid "about a month ago"
msgstr "قبل شهر تقريبًا"
-#: lib/util.php:884
+#: lib/util.php:883
#, php-format
msgid "about %d months ago"
msgstr ""
-#: lib/util.php:886
+#: lib/util.php:885
msgid "about a year ago"
msgstr "قبل سنه تقريبًا"
diff --git a/locale/bg/LC_MESSAGES/statusnet.po b/locale/bg/LC_MESSAGES/statusnet.po
index 513055266..0121a235c 100644
--- a/locale/bg/LC_MESSAGES/statusnet.po
+++ b/locale/bg/LC_MESSAGES/statusnet.po
@@ -9,12 +9,12 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-01-30 23:41+0000\n"
-"PO-Revision-Date: 2010-01-30 23:41:22+0000\n"
+"POT-Creation-Date: 2010-02-04 10:31+0000\n"
+"PO-Revision-Date: 2010-02-04 10:32:10+0000\n"
"Language-Team: Bulgarian\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.16alpha (r61734); Translate extension (2010-01-16)\n"
+"X-Generator: MediaWiki 1.16alpha (r61969); Translate extension (2010-01-16)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: bg\n"
"X-Message-Group: out-statusnet\n"
@@ -96,7 +96,7 @@ msgstr "Няма такака страница."
#: actions/favoritesrss.php:74 actions/foaf.php:40 actions/foaf.php:58
#: actions/microsummary.php:62 actions/newmessage.php:116 actions/otp.php:76
#: actions/remotesubscribe.php:145 actions/remotesubscribe.php:154
-#: actions/replies.php:73 actions/repliesrss.php:38
+#: actions/replies.php:73 actions/repliesrss.php:38 actions/rsd.php:116
#: actions/showfavorites.php:105 actions/userbyid.php:74
#: actions/usergroups.php:91 actions/userrss.php:38 actions/xrds.php:71
#: lib/command.php:163 lib/command.php:302 lib/command.php:355
@@ -153,7 +153,7 @@ msgid ""
"his or her attention](%%%%action.newnotice%%%%?status_textarea=%3$s)."
msgstr ""
-#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:202
+#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:211
#, php-format
msgid ""
"Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
@@ -385,8 +385,8 @@ msgstr "Опитайте друг псевдоним, този вече е за
msgid "Not a valid nickname."
msgstr "Неправилен псевдоним."
-#: actions/apigroupcreate.php:196 actions/editapplication.php:212
-#: actions/editgroup.php:195 actions/newapplication.php:200
+#: actions/apigroupcreate.php:196 actions/editapplication.php:215
+#: actions/editgroup.php:195 actions/newapplication.php:203
#: actions/newgroup.php:139 actions/profilesettings.php:222
#: actions/register.php:217
msgid "Homepage is not a valid URL."
@@ -398,8 +398,8 @@ msgstr "Адресът на личната страница не е правил
msgid "Full name is too long (max 255 chars)."
msgstr "Пълното име е твърде дълго (макс. 255 знака)"
-#: actions/apigroupcreate.php:213 actions/editapplication.php:187
-#: actions/newapplication.php:169
+#: actions/apigroupcreate.php:213 actions/editapplication.php:190
+#: actions/newapplication.php:172
#, php-format
msgid "Description is too long (max %d chars)."
msgstr "Описанието е твърде дълго (до %d символа)."
@@ -476,18 +476,23 @@ msgstr "Групи на %s"
msgid "groups on %s"
msgstr "групи в %s"
-#: actions/apioauthauthorize.php:108 actions/apioauthauthorize.php:114
-msgid "Bad request."
+#: actions/apioauthauthorize.php:101
+msgid "No oauth_token parameter provided."
msgstr ""
-#: actions/apioauthauthorize.php:134 actions/avatarsettings.php:268
+#: actions/apioauthauthorize.php:106
+#, fuzzy
+msgid "Invalid token."
+msgstr "Неправилен размер."
+
+#: actions/apioauthauthorize.php:123 actions/avatarsettings.php:268
#: actions/deletenotice.php:157 actions/disfavor.php:74
-#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:50
+#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:54
#: actions/groupblock.php:66 actions/grouplogo.php:309
#: actions/groupunblock.php:66 actions/imsettings.php:206
#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
-#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:139
+#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:135
#: actions/othersettings.php:145 actions/passwordsettings.php:138
#: actions/profilesettings.php:194 actions/recoverpassword.php:337
#: actions/register.php:165 actions/remotesubscribe.php:77
@@ -498,76 +503,84 @@ msgstr ""
msgid "There was a problem with your session token. Try again, please."
msgstr "Имаше проблем със сесията ви в сайта. Моля, опитайте отново!"
-#: actions/apioauthauthorize.php:146
+#: actions/apioauthauthorize.php:135
#, fuzzy
msgid "Invalid nickname / password!"
msgstr "Неправилно име или парола."
-#: actions/apioauthauthorize.php:170
+#: actions/apioauthauthorize.php:159
#, fuzzy
msgid "Database error deleting OAuth application user."
msgstr "Грешка в настройките на потребителя."
-#: actions/apioauthauthorize.php:196
+#: actions/apioauthauthorize.php:185
#, fuzzy
msgid "Database error inserting OAuth application user."
msgstr "Грешка в базата от данни — отговор при вмъкването: %s"
-#: actions/apioauthauthorize.php:231
+#: actions/apioauthauthorize.php:214
#, php-format
msgid ""
"The request token %s has been authorized. Please exchange it for an access "
"token."
msgstr ""
-#: actions/apioauthauthorize.php:241
+#: actions/apioauthauthorize.php:227
#, php-format
-msgid "The request token %s has been denied."
+msgid "The request token %s has been denied and revoked."
msgstr ""
-#: actions/apioauthauthorize.php:246 actions/avatarsettings.php:281
+#: actions/apioauthauthorize.php:232 actions/avatarsettings.php:281
#: actions/designadminpanel.php:103 actions/editapplication.php:139
#: actions/emailsettings.php:256 actions/grouplogo.php:319
#: actions/imsettings.php:220 actions/newapplication.php:121
-#: actions/oauthconnectionssettings.php:151 actions/recoverpassword.php:44
+#: actions/oauthconnectionssettings.php:147 actions/recoverpassword.php:44
#: actions/smssettings.php:248 lib/designsettings.php:304
msgid "Unexpected form submission."
msgstr "Неочаквано изпращане на форма."
-#: actions/apioauthauthorize.php:273
+#: actions/apioauthauthorize.php:259
msgid "An application would like to connect to your account"
msgstr ""
-#: actions/apioauthauthorize.php:290
+#: actions/apioauthauthorize.php:276
msgid "Allow or deny access"
msgstr ""
-#: actions/apioauthauthorize.php:320 lib/action.php:441
+#: actions/apioauthauthorize.php:292
+#, php-format
+msgid ""
+"The application <strong>%1$s</strong> by <strong>%2$s</strong> would like "
+"the ability to <strong>%3$s</strong> your %4$s account data. You should only "
+"give access to your %4$s account to third parties you trust."
+msgstr ""
+
+#: actions/apioauthauthorize.php:310 lib/action.php:441
msgid "Account"
msgstr "Сметка"
-#: actions/apioauthauthorize.php:323 actions/login.php:230
+#: actions/apioauthauthorize.php:313 actions/login.php:230
#: actions/profilesettings.php:106 actions/register.php:424
#: actions/showgroup.php:236 actions/tagother.php:94 lib/groupeditform.php:152
#: lib/userprofile.php:131
msgid "Nickname"
msgstr "Псевдоним"
-#: actions/apioauthauthorize.php:326 actions/login.php:233
+#: actions/apioauthauthorize.php:316 actions/login.php:233
#: actions/register.php:429 lib/accountsettingsaction.php:116
msgid "Password"
msgstr "Парола"
-#: actions/apioauthauthorize.php:338
+#: actions/apioauthauthorize.php:328
msgid "Deny"
msgstr ""
-#: actions/apioauthauthorize.php:344
+#: actions/apioauthauthorize.php:334
#, fuzzy
msgid "Allow"
msgstr "Всички"
-#: actions/apioauthauthorize.php:361
+#: actions/apioauthauthorize.php:351
msgid "Allow or deny access to your account information."
msgstr ""
@@ -738,8 +751,8 @@ msgstr "Оригинал"
msgid "Preview"
msgstr "Преглед"
-#: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:608
+#: actions/avatarsettings.php:149 actions/showapplication.php:252
+#: lib/deleteuserform.php:66 lib/noticelist.php:624
msgid "Delete"
msgstr "Изтриване"
@@ -786,8 +799,9 @@ msgid ""
"will not be notified of any @-replies from them."
msgstr ""
-#: actions/block.php:143 actions/deletenotice.php:145
-#: actions/deleteuser.php:147 actions/groupblock.php:178
+#: actions/block.php:143 actions/deleteapplication.php:153
+#: actions/deletenotice.php:145 actions/deleteuser.php:147
+#: actions/groupblock.php:178
msgid "No"
msgstr "Не"
@@ -795,9 +809,9 @@ msgstr "Не"
msgid "Do not block this user"
msgstr "Да не се блокира този потребител"
-#: actions/block.php:144 actions/deletenotice.php:146
-#: actions/deleteuser.php:148 actions/groupblock.php:179
-#: lib/repeatform.php:132
+#: actions/block.php:144 actions/deleteapplication.php:158
+#: actions/deletenotice.php:146 actions/deleteuser.php:148
+#: actions/groupblock.php:179 lib/repeatform.php:132
msgid "Yes"
msgstr "Да"
@@ -904,6 +918,50 @@ msgstr "Разговор"
msgid "Notices"
msgstr "Бележки"
+#: actions/deleteapplication.php:63
+#, fuzzy
+msgid "You must be logged in to delete an application."
+msgstr "За да редактирате група, трябва да сте влезли."
+
+#: actions/deleteapplication.php:71
+#, fuzzy
+msgid "Application not found."
+msgstr "Бележката няма профил"
+
+#: actions/deleteapplication.php:78 actions/editapplication.php:77
+#: actions/showapplication.php:94
+#, fuzzy
+msgid "You are not the owner of this application."
+msgstr "Не членувате в тази група."
+
+#: actions/deleteapplication.php:102 actions/editapplication.php:127
+#: actions/newapplication.php:110 actions/showapplication.php:118
+#: lib/action.php:1195
+msgid "There was a problem with your session token."
+msgstr "Имаше проблем със сесията ви в сайта."
+
+#: actions/deleteapplication.php:123 actions/deleteapplication.php:147
+#, fuzzy
+msgid "Delete application"
+msgstr "Няма такава бележка."
+
+#: actions/deleteapplication.php:149
+msgid ""
+"Are you sure you want to delete this application? This will clear all data "
+"about the application from the database, including all existing user "
+"connections."
+msgstr ""
+
+#: actions/deleteapplication.php:156
+#, fuzzy
+msgid "Do not delete this application"
+msgstr "Да не се изтрива бележката"
+
+#: actions/deleteapplication.php:160
+#, fuzzy
+msgid "Delete this application"
+msgstr "Изтриване на бележката"
+
#: actions/deletenotice.php:67 actions/disfavor.php:61 actions/favor.php:62
#: actions/groupblock.php:61 actions/groupunblock.php:61 actions/logout.php:69
#: actions/makeadmin.php:61 actions/newmessage.php:87 actions/newnotice.php:89
@@ -936,7 +994,7 @@ msgstr "Наистина ли искате да изтриете тази бел
msgid "Do not delete this notice"
msgstr "Да не се изтрива бележката"
-#: actions/deletenotice.php:146 lib/noticelist.php:608
+#: actions/deletenotice.php:146 lib/noticelist.php:624
msgid "Delete this notice"
msgstr "Изтриване на бележката"
@@ -1081,7 +1139,7 @@ msgstr "Тази бележка не е отбелязана като любим
msgid "Add to favorites"
msgstr "Добавяне към любимите"
-#: actions/doc.php:155
+#: actions/doc.php:158
#, fuzzy, php-format
msgid "No such document \"%s\""
msgstr "Няма такъв документ."
@@ -1096,22 +1154,12 @@ msgstr "Други настройки"
msgid "You must be logged in to edit an application."
msgstr "За да редактирате група, трябва да сте влезли."
-#: actions/editapplication.php:77 actions/showapplication.php:94
-#, fuzzy
-msgid "You are not the owner of this application."
-msgstr "Не членувате в тази група."
-
-#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:163
+#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:166
#: actions/showapplication.php:87
#, fuzzy
msgid "No such application."
msgstr "Няма такава бележка."
-#: actions/editapplication.php:127 actions/newapplication.php:110
-#: actions/showapplication.php:118 lib/action.php:1195
-msgid "There was a problem with your session token."
-msgstr "Имаше проблем със сесията ви в сайта."
-
#: actions/editapplication.php:161
#, fuzzy
msgid "Use this form to edit your application."
@@ -1122,47 +1170,52 @@ msgstr "Използвайте тази бланка за създаване н
msgid "Name is required."
msgstr "Същото като паролата по-горе. Задължително поле."
-#: actions/editapplication.php:180 actions/newapplication.php:162
+#: actions/editapplication.php:180 actions/newapplication.php:165
#, fuzzy
msgid "Name is too long (max 255 chars)."
msgstr "Пълното име е твърде дълго (макс. 255 знака)"
-#: actions/editapplication.php:183 actions/newapplication.php:165
+#: actions/editapplication.php:183 actions/newapplication.php:162
+#, fuzzy
+msgid "Name already in use. Try another one."
+msgstr "Опитайте друг псевдоним, този вече е зает."
+
+#: actions/editapplication.php:186 actions/newapplication.php:168
#, fuzzy
msgid "Description is required."
msgstr "Описание"
-#: actions/editapplication.php:191
+#: actions/editapplication.php:194
msgid "Source URL is too long."
msgstr ""
-#: actions/editapplication.php:197 actions/newapplication.php:182
+#: actions/editapplication.php:200 actions/newapplication.php:185
#, fuzzy
msgid "Source URL is not valid."
msgstr "Адресът на личната страница не е правилен URL."
-#: actions/editapplication.php:200 actions/newapplication.php:185
+#: actions/editapplication.php:203 actions/newapplication.php:188
msgid "Organization is required."
msgstr ""
-#: actions/editapplication.php:203 actions/newapplication.php:188
+#: actions/editapplication.php:206 actions/newapplication.php:191
#, fuzzy
msgid "Organization is too long (max 255 chars)."
msgstr "Името на местоположението е твърде дълго (макс. 255 знака)."
-#: actions/editapplication.php:206 actions/newapplication.php:191
+#: actions/editapplication.php:209 actions/newapplication.php:194
msgid "Organization homepage is required."
msgstr ""
-#: actions/editapplication.php:215 actions/newapplication.php:203
+#: actions/editapplication.php:218 actions/newapplication.php:206
msgid "Callback is too long."
msgstr ""
-#: actions/editapplication.php:222 actions/newapplication.php:212
+#: actions/editapplication.php:225 actions/newapplication.php:215
msgid "Callback URL is not valid."
msgstr ""
-#: actions/editapplication.php:255
+#: actions/editapplication.php:258
#, fuzzy
msgid "Could not update application."
msgstr "Грешка при обновяване на групата."
@@ -2095,11 +2148,11 @@ msgstr "За да създавате група, трябва да сте вле
msgid "Use this form to register a new application."
msgstr "Използвайте тази бланка за създаване на нова група."
-#: actions/newapplication.php:173
+#: actions/newapplication.php:176
msgid "Source URL is required."
msgstr ""
-#: actions/newapplication.php:255 actions/newapplication.php:264
+#: actions/newapplication.php:258 actions/newapplication.php:267
#, fuzzy
msgid "Could not create application."
msgstr "Грешка при отбелязване като любима."
@@ -2231,29 +2284,29 @@ msgstr ""
msgid "You have not registered any applications yet."
msgstr ""
-#: actions/oauthconnectionssettings.php:71
+#: actions/oauthconnectionssettings.php:72
msgid "Connected applications"
msgstr ""
-#: actions/oauthconnectionssettings.php:87
+#: actions/oauthconnectionssettings.php:83
msgid "You have allowed the following applications to access you account."
msgstr ""
-#: actions/oauthconnectionssettings.php:170
+#: actions/oauthconnectionssettings.php:175
#, fuzzy
msgid "You are not a user of that application."
msgstr "Не членувате в тази група."
-#: actions/oauthconnectionssettings.php:180
+#: actions/oauthconnectionssettings.php:186
msgid "Unable to revoke access for app: "
msgstr ""
-#: actions/oauthconnectionssettings.php:192
+#: actions/oauthconnectionssettings.php:198
#, php-format
msgid "You have not authorized any applications to use your account."
msgstr ""
-#: actions/oauthconnectionssettings.php:205
+#: actions/oauthconnectionssettings.php:211
msgid "Developers can edit the registration settings for their applications "
msgstr ""
@@ -2759,36 +2812,36 @@ msgstr "Общ поток, страница %d"
msgid "Public timeline"
msgstr "Общ поток"
-#: actions/public.php:151
+#: actions/public.php:159
msgid "Public Stream Feed (RSS 1.0)"
msgstr "Емисия на общия поток (RSS 1.0)"
-#: actions/public.php:155
+#: actions/public.php:163
msgid "Public Stream Feed (RSS 2.0)"
msgstr "Емисия на общия поток (RSS 2.0)"
-#: actions/public.php:159
+#: actions/public.php:167
msgid "Public Stream Feed (Atom)"
msgstr "Емисия на общия поток (Atom)"
-#: actions/public.php:179
+#: actions/public.php:187
#, php-format
msgid ""
"This is the public timeline for %%site.name%% but no one has posted anything "
"yet."
msgstr ""
-#: actions/public.php:182
+#: actions/public.php:190
msgid "Be the first to post!"
msgstr ""
-#: actions/public.php:186
+#: actions/public.php:194
#, php-format
msgid ""
"Why not [register an account](%%action.register%%) and be the first to post!"
msgstr ""
-#: actions/public.php:233
+#: actions/public.php:241
#, php-format
msgid ""
"This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2797,7 +2850,7 @@ msgid ""
"friends, family, and colleagues! ([Read more](%%doc.help%%))"
msgstr ""
-#: actions/public.php:238
+#: actions/public.php:246
#, php-format
msgid ""
"This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -3155,7 +3208,7 @@ msgstr "Не можете да повтаряте собствена бележ
msgid "You already repeated that notice."
msgstr "Вече сте повторили тази бележка."
-#: actions/repeat.php:114 lib/noticelist.php:626
+#: actions/repeat.php:114 lib/noticelist.php:642
msgid "Repeated"
msgstr "Повторено"
@@ -3215,6 +3268,11 @@ msgstr ""
msgid "Replies to %1$s on %2$s!"
msgstr "Отговори до %1$s в %2$s!"
+#: actions/rsd.php:146 actions/version.php:157
+#, fuzzy
+msgid "StatusNet"
+msgstr "Бележката е изтрита."
+
#: actions/sandbox.php:65 actions/unsandbox.php:65
#, fuzzy
msgid "You cannot sandbox users on this site."
@@ -3261,80 +3319,85 @@ msgstr "Запазване настройките на сайта"
msgid "You must be logged in to view an application."
msgstr "За напуснете група, трябва да сте влезли."
-#: actions/showapplication.php:158
+#: actions/showapplication.php:157
#, fuzzy
msgid "Application profile"
msgstr "Бележката няма профил"
-#: actions/showapplication.php:160 lib/applicationeditform.php:180
+#: actions/showapplication.php:159 lib/applicationeditform.php:180
msgid "Icon"
msgstr ""
-#: actions/showapplication.php:170 actions/version.php:195
+#: actions/showapplication.php:169 actions/version.php:195
#: lib/applicationeditform.php:195
#, fuzzy
msgid "Name"
msgstr "Псевдоним"
-#: actions/showapplication.php:179 lib/applicationeditform.php:222
+#: actions/showapplication.php:178 lib/applicationeditform.php:222
#, fuzzy
msgid "Organization"
msgstr "Страниране"
-#: actions/showapplication.php:188 actions/version.php:198
+#: actions/showapplication.php:187 actions/version.php:198
#: lib/applicationeditform.php:209 lib/groupeditform.php:172
msgid "Description"
msgstr "Описание"
-#: actions/showapplication.php:193 actions/showgroup.php:429
+#: actions/showapplication.php:192 actions/showgroup.php:429
#: lib/profileaction.php:174
msgid "Statistics"
msgstr "Статистики"
-#: actions/showapplication.php:204
+#: actions/showapplication.php:203
#, php-format
-msgid "created by %1$s - %2$s access by default - %3$d users"
+msgid "Created by %1$s - %2$s access by default - %3$d users"
msgstr ""
-#: actions/showapplication.php:214
+#: actions/showapplication.php:213
msgid "Application actions"
msgstr ""
-#: actions/showapplication.php:233
+#: actions/showapplication.php:236
msgid "Reset key & secret"
msgstr ""
-#: actions/showapplication.php:241
+#: actions/showapplication.php:261
msgid "Application info"
msgstr ""
-#: actions/showapplication.php:243
+#: actions/showapplication.php:263
msgid "Consumer key"
msgstr ""
-#: actions/showapplication.php:248
+#: actions/showapplication.php:268
msgid "Consumer secret"
msgstr ""
-#: actions/showapplication.php:253
+#: actions/showapplication.php:273
msgid "Request token URL"
msgstr ""
-#: actions/showapplication.php:258
+#: actions/showapplication.php:278
msgid "Access token URL"
msgstr ""
-#: actions/showapplication.php:263
+#: actions/showapplication.php:283
#, fuzzy
msgid "Authorize URL"
msgstr "Автор"
-#: actions/showapplication.php:268
+#: actions/showapplication.php:288
msgid ""
"Note: We support HMAC-SHA1 signatures. We do not support the plaintext "
"signature method."
msgstr ""
+#: actions/showapplication.php:309
+#, fuzzy
+msgid "Are you sure you want to reset your consumer key and secret?"
+msgstr "Наистина ли искате да изтриете тази бележка?"
+
#: actions/showfavorites.php:79
#, fuzzy, php-format
msgid "%1$s's favorite notices, page %2$d"
@@ -3534,25 +3597,25 @@ msgstr "Емисия с бележки на %s (Atom)"
msgid "FOAF for %s"
msgstr "FOAF за %s"
-#: actions/showstream.php:191
+#: actions/showstream.php:200
#, php-format
msgid "This is the timeline for %1$s but %2$s hasn't posted anything yet."
msgstr ""
-#: actions/showstream.php:196
+#: actions/showstream.php:205
msgid ""
"Seen anything interesting recently? You haven't posted any notices yet, now "
"would be a good time to start :)"
msgstr ""
-#: actions/showstream.php:198
+#: actions/showstream.php:207
#, php-format
msgid ""
"You can try to nudge %1$s or [post something to his or her attention](%%%%"
"action.newnotice%%%%?status_textarea=%2$s)."
msgstr ""
-#: actions/showstream.php:234
+#: actions/showstream.php:243
#, php-format
msgid ""
"**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3561,7 +3624,7 @@ msgid ""
"follow **%s**'s notices and many more! ([Read more](%%%%doc.help%%%%))"
msgstr ""
-#: actions/showstream.php:239
+#: actions/showstream.php:248
#, php-format
msgid ""
"**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3569,7 +3632,7 @@ msgid ""
"[StatusNet](http://status.net/) tool. "
msgstr ""
-#: actions/showstream.php:296
+#: actions/showstream.php:305
#, fuzzy, php-format
msgid "Repeat of %s"
msgstr "Отговори на %s"
@@ -4245,11 +4308,6 @@ msgid ""
"Inc. and contributors."
msgstr ""
-#: actions/version.php:157
-#, fuzzy
-msgid "StatusNet"
-msgstr "Бележката е изтрита."
-
#: actions/version.php:161
msgid "Contributors"
msgstr ""
@@ -4379,22 +4437,22 @@ msgstr "Забранено ви е да публикувате бележки в
msgid "Problem saving notice."
msgstr "Проблем при записване на бележката."
-#: classes/Notice.php:790
+#: classes/Notice.php:788
#, fuzzy
msgid "Problem saving group inbox."
msgstr "Проблем при записване на бележката."
-#: classes/Notice.php:850
+#: classes/Notice.php:848
#, php-format
msgid "DB error inserting reply: %s"
msgstr "Грешка в базата от данни — отговор при вмъкването: %s"
-#: classes/Notice.php:1233
+#: classes/Notice.php:1231
#, php-format
msgid "RT @%1$s %2$s"
msgstr "RT @%1$s %2$s"
-#: classes/User.php:382
+#: classes/User.php:385
#, php-format
msgid "Welcome to %1$s, @%2$s!"
msgstr "Добре дошли в %1$s, @%2$s!"
@@ -4681,11 +4739,11 @@ msgstr "Настройка на пътищата"
msgid "Sessions configuration"
msgstr "Настройка на оформлението"
-#: lib/apiauth.php:99
+#: lib/apiauth.php:95
msgid "API resource requires read-write access, but you only have read access."
msgstr ""
-#: lib/apiauth.php:279
+#: lib/apiauth.php:273
#, php-format
msgid "Failed API auth attempt, nickname = %1$s, proxy = %2$s, ip = %3$s"
msgstr ""
@@ -5054,19 +5112,19 @@ msgid ""
"tracking - not yet implemented.\n"
msgstr ""
-#: lib/common.php:131
+#: lib/common.php:135
msgid "No configuration file found. "
msgstr "Не е открит файл с настройки. "
-#: lib/common.php:132
+#: lib/common.php:136
msgid "I looked for configuration files in the following places: "
msgstr ""
-#: lib/common.php:134
+#: lib/common.php:138
msgid "You may wish to run the installer to fix this."
msgstr ""
-#: lib/common.php:135
+#: lib/common.php:139
#, fuzzy
msgid "Go to the installer."
msgstr "Влизане в сайта"
@@ -5639,23 +5697,23 @@ msgstr "З"
msgid "at"
msgstr ""
-#: lib/noticelist.php:531
+#: lib/noticelist.php:547
msgid "in context"
msgstr "в контекст"
-#: lib/noticelist.php:556
+#: lib/noticelist.php:572
msgid "Repeated by"
msgstr "Повторено от"
-#: lib/noticelist.php:582
+#: lib/noticelist.php:598
msgid "Reply to this notice"
msgstr "Отговаряне на тази бележка"
-#: lib/noticelist.php:583
+#: lib/noticelist.php:599
msgid "Reply"
msgstr "Отговор"
-#: lib/noticelist.php:625
+#: lib/noticelist.php:641
msgid "Notice repeated"
msgstr "Бележката е повторена."
@@ -5801,6 +5859,10 @@ msgstr "Повтаряне на тази бележка"
msgid "Repeat this notice"
msgstr "Повтаряне на тази бележка"
+#: lib/router.php:665
+msgid "No single user defined for single-user mode."
+msgstr ""
+
#: lib/sandboxform.php:67
#, fuzzy
msgid "Sandbox"
@@ -5974,47 +6036,47 @@ msgstr "Съобщение"
msgid "Moderate"
msgstr ""
-#: lib/util.php:868
+#: lib/util.php:867
msgid "a few seconds ago"
msgstr "преди няколко секунди"
-#: lib/util.php:870
+#: lib/util.php:869
msgid "about a minute ago"
msgstr "преди около минута"
-#: lib/util.php:872
+#: lib/util.php:871
#, php-format
msgid "about %d minutes ago"
msgstr "преди около %d минути"
-#: lib/util.php:874
+#: lib/util.php:873
msgid "about an hour ago"
msgstr "преди около час"
-#: lib/util.php:876
+#: lib/util.php:875
#, php-format
msgid "about %d hours ago"
msgstr "преди около %d часа"
-#: lib/util.php:878
+#: lib/util.php:877
msgid "about a day ago"
msgstr "преди около ден"
-#: lib/util.php:880
+#: lib/util.php:879
#, php-format
msgid "about %d days ago"
msgstr "преди около %d дни"
-#: lib/util.php:882
+#: lib/util.php:881
msgid "about a month ago"
msgstr "преди около месец"
-#: lib/util.php:884
+#: lib/util.php:883
#, php-format
msgid "about %d months ago"
msgstr "преди около %d месеца"
-#: lib/util.php:886
+#: lib/util.php:885
msgid "about a year ago"
msgstr "преди около година"
diff --git a/locale/ca/LC_MESSAGES/statusnet.po b/locale/ca/LC_MESSAGES/statusnet.po
index 2152e54c2..8be73131c 100644
--- a/locale/ca/LC_MESSAGES/statusnet.po
+++ b/locale/ca/LC_MESSAGES/statusnet.po
@@ -9,12 +9,12 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-01-30 23:41+0000\n"
-"PO-Revision-Date: 2010-01-30 23:41:24+0000\n"
+"POT-Creation-Date: 2010-02-04 10:31+0000\n"
+"PO-Revision-Date: 2010-02-04 10:32:13+0000\n"
"Language-Team: Catalan\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.16alpha (r61734); Translate extension (2010-01-16)\n"
+"X-Generator: MediaWiki 1.16alpha (r61969); Translate extension (2010-01-16)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: ca\n"
"X-Message-Group: out-statusnet\n"
@@ -98,7 +98,7 @@ msgstr "No existeix la pàgina."
#: actions/favoritesrss.php:74 actions/foaf.php:40 actions/foaf.php:58
#: actions/microsummary.php:62 actions/newmessage.php:116 actions/otp.php:76
#: actions/remotesubscribe.php:145 actions/remotesubscribe.php:154
-#: actions/replies.php:73 actions/repliesrss.php:38
+#: actions/replies.php:73 actions/repliesrss.php:38 actions/rsd.php:116
#: actions/showfavorites.php:105 actions/userbyid.php:74
#: actions/usergroups.php:91 actions/userrss.php:38 actions/xrds.php:71
#: lib/command.php:163 lib/command.php:302 lib/command.php:355
@@ -157,7 +157,7 @@ msgid ""
"his or her attention](%%%%action.newnotice%%%%?status_textarea=%3$s)."
msgstr ""
-#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:202
+#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:211
#, php-format
msgid ""
"Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
@@ -395,8 +395,8 @@ msgstr "Aquest sobrenom ja existeix. Prova un altre. "
msgid "Not a valid nickname."
msgstr "Sobrenom no vàlid."
-#: actions/apigroupcreate.php:196 actions/editapplication.php:212
-#: actions/editgroup.php:195 actions/newapplication.php:200
+#: actions/apigroupcreate.php:196 actions/editapplication.php:215
+#: actions/editgroup.php:195 actions/newapplication.php:203
#: actions/newgroup.php:139 actions/profilesettings.php:222
#: actions/register.php:217
msgid "Homepage is not a valid URL."
@@ -408,8 +408,8 @@ msgstr "La pàgina personal no és un URL vàlid."
msgid "Full name is too long (max 255 chars)."
msgstr "El teu nom és massa llarg (màx. 255 caràcters)."
-#: actions/apigroupcreate.php:213 actions/editapplication.php:187
-#: actions/newapplication.php:169
+#: actions/apigroupcreate.php:213 actions/editapplication.php:190
+#: actions/newapplication.php:172
#, php-format
msgid "Description is too long (max %d chars)."
msgstr "La descripció és massa llarga (màx. %d caràcters)."
@@ -486,18 +486,23 @@ msgstr "%s grups"
msgid "groups on %s"
msgstr "grups sobre %s"
-#: actions/apioauthauthorize.php:108 actions/apioauthauthorize.php:114
-msgid "Bad request."
+#: actions/apioauthauthorize.php:101
+msgid "No oauth_token parameter provided."
msgstr ""
-#: actions/apioauthauthorize.php:134 actions/avatarsettings.php:268
+#: actions/apioauthauthorize.php:106
+#, fuzzy
+msgid "Invalid token."
+msgstr "Mida invàlida."
+
+#: actions/apioauthauthorize.php:123 actions/avatarsettings.php:268
#: actions/deletenotice.php:157 actions/disfavor.php:74
-#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:50
+#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:54
#: actions/groupblock.php:66 actions/grouplogo.php:309
#: actions/groupunblock.php:66 actions/imsettings.php:206
#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
-#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:139
+#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:135
#: actions/othersettings.php:145 actions/passwordsettings.php:138
#: actions/profilesettings.php:194 actions/recoverpassword.php:337
#: actions/register.php:165 actions/remotesubscribe.php:77
@@ -510,77 +515,85 @@ msgstr ""
"Sembla que hi ha hagut un problema amb la teva sessió. Prova-ho de nou, si "
"us plau."
-#: actions/apioauthauthorize.php:146
+#: actions/apioauthauthorize.php:135
#, fuzzy
msgid "Invalid nickname / password!"
msgstr "Nom d'usuari o contrasenya invàlids."
-#: actions/apioauthauthorize.php:170
+#: actions/apioauthauthorize.php:159
#, fuzzy
msgid "Database error deleting OAuth application user."
msgstr "Error en configurar l'usuari."
-#: actions/apioauthauthorize.php:196
+#: actions/apioauthauthorize.php:185
#, fuzzy
msgid "Database error inserting OAuth application user."
msgstr "Hashtag de l'error de la base de dades:%s"
-#: actions/apioauthauthorize.php:231
+#: actions/apioauthauthorize.php:214
#, php-format
msgid ""
"The request token %s has been authorized. Please exchange it for an access "
"token."
msgstr ""
-#: actions/apioauthauthorize.php:241
+#: actions/apioauthauthorize.php:227
#, php-format
-msgid "The request token %s has been denied."
+msgid "The request token %s has been denied and revoked."
msgstr ""
-#: actions/apioauthauthorize.php:246 actions/avatarsettings.php:281
+#: actions/apioauthauthorize.php:232 actions/avatarsettings.php:281
#: actions/designadminpanel.php:103 actions/editapplication.php:139
#: actions/emailsettings.php:256 actions/grouplogo.php:319
#: actions/imsettings.php:220 actions/newapplication.php:121
-#: actions/oauthconnectionssettings.php:151 actions/recoverpassword.php:44
+#: actions/oauthconnectionssettings.php:147 actions/recoverpassword.php:44
#: actions/smssettings.php:248 lib/designsettings.php:304
msgid "Unexpected form submission."
msgstr "Enviament de formulari inesperat."
-#: actions/apioauthauthorize.php:273
+#: actions/apioauthauthorize.php:259
msgid "An application would like to connect to your account"
msgstr ""
-#: actions/apioauthauthorize.php:290
+#: actions/apioauthauthorize.php:276
msgid "Allow or deny access"
msgstr ""
-#: actions/apioauthauthorize.php:320 lib/action.php:441
+#: actions/apioauthauthorize.php:292
+#, php-format
+msgid ""
+"The application <strong>%1$s</strong> by <strong>%2$s</strong> would like "
+"the ability to <strong>%3$s</strong> your %4$s account data. You should only "
+"give access to your %4$s account to third parties you trust."
+msgstr ""
+
+#: actions/apioauthauthorize.php:310 lib/action.php:441
msgid "Account"
msgstr "Compte"
-#: actions/apioauthauthorize.php:323 actions/login.php:230
+#: actions/apioauthauthorize.php:313 actions/login.php:230
#: actions/profilesettings.php:106 actions/register.php:424
#: actions/showgroup.php:236 actions/tagother.php:94 lib/groupeditform.php:152
#: lib/userprofile.php:131
msgid "Nickname"
msgstr "Sobrenom"
-#: actions/apioauthauthorize.php:326 actions/login.php:233
+#: actions/apioauthauthorize.php:316 actions/login.php:233
#: actions/register.php:429 lib/accountsettingsaction.php:116
msgid "Password"
msgstr "Contrasenya"
-#: actions/apioauthauthorize.php:338
+#: actions/apioauthauthorize.php:328
#, fuzzy
msgid "Deny"
msgstr "Disseny"
-#: actions/apioauthauthorize.php:344
+#: actions/apioauthauthorize.php:334
#, fuzzy
msgid "Allow"
msgstr "Tot"
-#: actions/apioauthauthorize.php:361
+#: actions/apioauthauthorize.php:351
msgid "Allow or deny access to your account information."
msgstr ""
@@ -752,8 +765,8 @@ msgstr "Original"
msgid "Preview"
msgstr "Vista prèvia"
-#: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:608
+#: actions/avatarsettings.php:149 actions/showapplication.php:252
+#: lib/deleteuserform.php:66 lib/noticelist.php:624
msgid "Delete"
msgstr "Suprimeix"
@@ -802,8 +815,9 @@ msgid ""
"will not be notified of any @-replies from them."
msgstr ""
-#: actions/block.php:143 actions/deletenotice.php:145
-#: actions/deleteuser.php:147 actions/groupblock.php:178
+#: actions/block.php:143 actions/deleteapplication.php:153
+#: actions/deletenotice.php:145 actions/deleteuser.php:147
+#: actions/groupblock.php:178
msgid "No"
msgstr "No"
@@ -811,9 +825,9 @@ msgstr "No"
msgid "Do not block this user"
msgstr "No bloquis l'usuari"
-#: actions/block.php:144 actions/deletenotice.php:146
-#: actions/deleteuser.php:148 actions/groupblock.php:179
-#: lib/repeatform.php:132
+#: actions/block.php:144 actions/deleteapplication.php:158
+#: actions/deletenotice.php:146 actions/deleteuser.php:148
+#: actions/groupblock.php:179 lib/repeatform.php:132
msgid "Yes"
msgstr "Sí"
@@ -919,6 +933,50 @@ msgstr "Conversa"
msgid "Notices"
msgstr "Avisos"
+#: actions/deleteapplication.php:63
+#, fuzzy
+msgid "You must be logged in to delete an application."
+msgstr "Heu d'iniciar una sessió per editar un grup."
+
+#: actions/deleteapplication.php:71
+#, fuzzy
+msgid "Application not found."
+msgstr "Avís sense perfil"
+
+#: actions/deleteapplication.php:78 actions/editapplication.php:77
+#: actions/showapplication.php:94
+#, fuzzy
+msgid "You are not the owner of this application."
+msgstr "No sou un membre del grup."
+
+#: actions/deleteapplication.php:102 actions/editapplication.php:127
+#: actions/newapplication.php:110 actions/showapplication.php:118
+#: lib/action.php:1195
+msgid "There was a problem with your session token."
+msgstr "Ha ocorregut algun problema amb la teva sessió."
+
+#: actions/deleteapplication.php:123 actions/deleteapplication.php:147
+#, fuzzy
+msgid "Delete application"
+msgstr "No existeix aquest avís."
+
+#: actions/deleteapplication.php:149
+msgid ""
+"Are you sure you want to delete this application? This will clear all data "
+"about the application from the database, including all existing user "
+"connections."
+msgstr ""
+
+#: actions/deleteapplication.php:156
+#, fuzzy
+msgid "Do not delete this application"
+msgstr "No es pot esborrar la notificació."
+
+#: actions/deleteapplication.php:160
+#, fuzzy
+msgid "Delete this application"
+msgstr "Eliminar aquesta nota"
+
#: actions/deletenotice.php:67 actions/disfavor.php:61 actions/favor.php:62
#: actions/groupblock.php:61 actions/groupunblock.php:61 actions/logout.php:69
#: actions/makeadmin.php:61 actions/newmessage.php:87 actions/newnotice.php:89
@@ -955,7 +1013,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:608
+#: actions/deletenotice.php:146 lib/noticelist.php:624
msgid "Delete this notice"
msgstr "Eliminar aquesta nota"
@@ -1096,7 +1154,7 @@ msgstr "Aquesta notificació no és un favorit!"
msgid "Add to favorites"
msgstr "Afegeix als preferits"
-#: actions/doc.php:155
+#: actions/doc.php:158
#, fuzzy, php-format
msgid "No such document \"%s\""
msgstr "No existeix aquest document."
@@ -1111,22 +1169,12 @@ msgstr "Altres opcions"
msgid "You must be logged in to edit an application."
msgstr "Heu d'iniciar una sessió per editar un grup."
-#: actions/editapplication.php:77 actions/showapplication.php:94
-#, fuzzy
-msgid "You are not the owner of this application."
-msgstr "No sou un membre del grup."
-
-#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:163
+#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:166
#: actions/showapplication.php:87
#, fuzzy
msgid "No such application."
msgstr "No existeix aquest avís."
-#: actions/editapplication.php:127 actions/newapplication.php:110
-#: actions/showapplication.php:118 lib/action.php:1195
-msgid "There was a problem with your session token."
-msgstr "Ha ocorregut algun problema amb la teva sessió."
-
#: actions/editapplication.php:161
#, fuzzy
msgid "Use this form to edit your application."
@@ -1137,47 +1185,52 @@ msgstr "Utilitza aquest formulari per editar el grup."
msgid "Name is required."
msgstr "Igual a la contrasenya de dalt. Requerit."
-#: actions/editapplication.php:180 actions/newapplication.php:162
+#: actions/editapplication.php:180 actions/newapplication.php:165
#, fuzzy
msgid "Name is too long (max 255 chars)."
msgstr "El teu nom és massa llarg (màx. 255 caràcters)."
-#: actions/editapplication.php:183 actions/newapplication.php:165
+#: actions/editapplication.php:183 actions/newapplication.php:162
+#, fuzzy
+msgid "Name already in use. Try another one."
+msgstr "Aquest sobrenom ja existeix. Prova un altre. "
+
+#: actions/editapplication.php:186 actions/newapplication.php:168
#, fuzzy
msgid "Description is required."
msgstr "Descripció"
-#: actions/editapplication.php:191
+#: actions/editapplication.php:194
msgid "Source URL is too long."
msgstr ""
-#: actions/editapplication.php:197 actions/newapplication.php:182
+#: actions/editapplication.php:200 actions/newapplication.php:185
#, fuzzy
msgid "Source URL is not valid."
msgstr "La pàgina personal no és un URL vàlid."
-#: actions/editapplication.php:200 actions/newapplication.php:185
+#: actions/editapplication.php:203 actions/newapplication.php:188
msgid "Organization is required."
msgstr ""
-#: actions/editapplication.php:203 actions/newapplication.php:188
+#: actions/editapplication.php:206 actions/newapplication.php:191
#, fuzzy
msgid "Organization is too long (max 255 chars)."
msgstr "La ubicació és massa llarga (màx. 255 caràcters)."
-#: actions/editapplication.php:206 actions/newapplication.php:191
+#: actions/editapplication.php:209 actions/newapplication.php:194
msgid "Organization homepage is required."
msgstr ""
-#: actions/editapplication.php:215 actions/newapplication.php:203
+#: actions/editapplication.php:218 actions/newapplication.php:206
msgid "Callback is too long."
msgstr ""
-#: actions/editapplication.php:222 actions/newapplication.php:212
+#: actions/editapplication.php:225 actions/newapplication.php:215
msgid "Callback URL is not valid."
msgstr ""
-#: actions/editapplication.php:255
+#: actions/editapplication.php:258
#, fuzzy
msgid "Could not update application."
msgstr "No s'ha pogut actualitzar el grup."
@@ -2114,11 +2167,11 @@ msgstr "Has d'haver entrat per crear un grup."
msgid "Use this form to register a new application."
msgstr "Utilitza aquest formulari per crear un nou grup."
-#: actions/newapplication.php:173
+#: actions/newapplication.php:176
msgid "Source URL is required."
msgstr ""
-#: actions/newapplication.php:255 actions/newapplication.php:264
+#: actions/newapplication.php:258 actions/newapplication.php:267
#, fuzzy
msgid "Could not create application."
msgstr "No s'han pogut crear els àlies."
@@ -2251,29 +2304,29 @@ msgstr ""
msgid "You have not registered any applications yet."
msgstr ""
-#: actions/oauthconnectionssettings.php:71
+#: actions/oauthconnectionssettings.php:72
msgid "Connected applications"
msgstr ""
-#: actions/oauthconnectionssettings.php:87
+#: actions/oauthconnectionssettings.php:83
msgid "You have allowed the following applications to access you account."
msgstr ""
-#: actions/oauthconnectionssettings.php:170
+#: actions/oauthconnectionssettings.php:175
#, fuzzy
msgid "You are not a user of that application."
msgstr "No ets membre d'aquest grup."
-#: actions/oauthconnectionssettings.php:180
+#: actions/oauthconnectionssettings.php:186
msgid "Unable to revoke access for app: "
msgstr ""
-#: actions/oauthconnectionssettings.php:192
+#: actions/oauthconnectionssettings.php:198
#, php-format
msgid "You have not authorized any applications to use your account."
msgstr ""
-#: actions/oauthconnectionssettings.php:205
+#: actions/oauthconnectionssettings.php:211
msgid "Developers can edit the registration settings for their applications "
msgstr ""
@@ -2786,19 +2839,19 @@ msgstr "Línia temporal pública, pàgina %d"
msgid "Public timeline"
msgstr "Línia temporal pública"
-#: actions/public.php:151
+#: actions/public.php:159
msgid "Public Stream Feed (RSS 1.0)"
msgstr "Flux de canal públic (RSS 1.0)"
-#: actions/public.php:155
+#: actions/public.php:163
msgid "Public Stream Feed (RSS 2.0)"
msgstr "Flux de canal públic (RSS 2.0)"
-#: actions/public.php:159
+#: actions/public.php:167
msgid "Public Stream Feed (Atom)"
msgstr "Flux de canal públic (Atom)"
-#: actions/public.php:179
+#: actions/public.php:187
#, php-format
msgid ""
"This is the public timeline for %%site.name%% but no one has posted anything "
@@ -2807,11 +2860,11 @@ msgstr ""
"Aquesta és la línia temporal pública de %%site.name%%, però ningú no hi ha "
"enviat res encara."
-#: actions/public.php:182
+#: actions/public.php:190
msgid "Be the first to post!"
msgstr "Sigueu el primer en escriure-hi!"
-#: actions/public.php:186
+#: actions/public.php:194
#, php-format
msgid ""
"Why not [register an account](%%action.register%%) and be the first to post!"
@@ -2819,7 +2872,7 @@ msgstr ""
"Per què no [registreu un compte](%%action.register%%) i sou el primer en "
"escriure-hi!"
-#: actions/public.php:233
+#: actions/public.php:241
#, php-format
msgid ""
"This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2828,7 +2881,7 @@ msgid ""
"friends, family, and colleagues! ([Read more](%%doc.help%%))"
msgstr ""
-#: actions/public.php:238
+#: actions/public.php:246
#, fuzzy, php-format
msgid ""
"This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -3197,7 +3250,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:626
+#: actions/repeat.php:114 lib/noticelist.php:642
msgid "Repeated"
msgstr "Repetit"
@@ -3259,6 +3312,11 @@ msgstr ""
msgid "Replies to %1$s on %2$s!"
msgstr "Respostes a %1$s el %2$s!"
+#: actions/rsd.php:146 actions/version.php:157
+#, fuzzy
+msgid "StatusNet"
+msgstr "S'ha suprimit l'estat."
+
#: actions/sandbox.php:65 actions/unsandbox.php:65
#, fuzzy
msgid "You cannot sandbox users on this site."
@@ -3305,79 +3363,84 @@ msgstr "Desa els paràmetres del lloc"
msgid "You must be logged in to view an application."
msgstr "Has d'haver entrat per a poder marxar d'un grup."
-#: actions/showapplication.php:158
+#: actions/showapplication.php:157
#, fuzzy
msgid "Application profile"
msgstr "Avís sense perfil"
-#: actions/showapplication.php:160 lib/applicationeditform.php:180
+#: actions/showapplication.php:159 lib/applicationeditform.php:180
msgid "Icon"
msgstr ""
-#: actions/showapplication.php:170 actions/version.php:195
+#: actions/showapplication.php:169 actions/version.php:195
#: lib/applicationeditform.php:195
msgid "Name"
msgstr "Nom"
-#: actions/showapplication.php:179 lib/applicationeditform.php:222
+#: actions/showapplication.php:178 lib/applicationeditform.php:222
#, fuzzy
msgid "Organization"
msgstr "Paginació"
-#: actions/showapplication.php:188 actions/version.php:198
+#: actions/showapplication.php:187 actions/version.php:198
#: lib/applicationeditform.php:209 lib/groupeditform.php:172
msgid "Description"
msgstr "Descripció"
-#: actions/showapplication.php:193 actions/showgroup.php:429
+#: actions/showapplication.php:192 actions/showgroup.php:429
#: lib/profileaction.php:174
msgid "Statistics"
msgstr "Estadístiques"
-#: actions/showapplication.php:204
+#: actions/showapplication.php:203
#, php-format
-msgid "created by %1$s - %2$s access by default - %3$d users"
+msgid "Created by %1$s - %2$s access by default - %3$d users"
msgstr ""
-#: actions/showapplication.php:214
+#: actions/showapplication.php:213
msgid "Application actions"
msgstr ""
-#: actions/showapplication.php:233
+#: actions/showapplication.php:236
msgid "Reset key & secret"
msgstr ""
-#: actions/showapplication.php:241
+#: actions/showapplication.php:261
msgid "Application info"
msgstr ""
-#: actions/showapplication.php:243
+#: actions/showapplication.php:263
msgid "Consumer key"
msgstr ""
-#: actions/showapplication.php:248
+#: actions/showapplication.php:268
msgid "Consumer secret"
msgstr ""
-#: actions/showapplication.php:253
+#: actions/showapplication.php:273
msgid "Request token URL"
msgstr ""
-#: actions/showapplication.php:258
+#: actions/showapplication.php:278
msgid "Access token URL"
msgstr ""
-#: actions/showapplication.php:263
+#: actions/showapplication.php:283
#, fuzzy
msgid "Authorize URL"
msgstr "Autoria"
-#: actions/showapplication.php:268
+#: actions/showapplication.php:288
msgid ""
"Note: We support HMAC-SHA1 signatures. We do not support the plaintext "
"signature method."
msgstr ""
+#: actions/showapplication.php:309
+#, fuzzy
+msgid "Are you sure you want to reset your consumer key and secret?"
+msgstr "N'estàs segur que vols eliminar aquesta notificació?"
+
#: actions/showfavorites.php:79
#, fuzzy, php-format
msgid "%1$s's favorite notices, page %2$d"
@@ -3580,27 +3643,27 @@ msgstr "Feed d'avisos de %s"
msgid "FOAF for %s"
msgstr "Safata de sortida per %s"
-#: actions/showstream.php:191
+#: actions/showstream.php:200
#, fuzzy, php-format
msgid "This is the timeline for %1$s but %2$s hasn't posted anything yet."
msgstr ""
"Aquesta és la línia temporal de %s i amics, però ningú hi ha enviat res "
"encara."
-#: actions/showstream.php:196
+#: actions/showstream.php:205
msgid ""
"Seen anything interesting recently? You haven't posted any notices yet, now "
"would be a good time to start :)"
msgstr ""
-#: actions/showstream.php:198
+#: actions/showstream.php:207
#, php-format
msgid ""
"You can try to nudge %1$s or [post something to his or her attention](%%%%"
"action.newnotice%%%%?status_textarea=%2$s)."
msgstr ""
-#: actions/showstream.php:234
+#: actions/showstream.php:243
#, php-format
msgid ""
"**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3609,7 +3672,7 @@ msgid ""
"follow **%s**'s notices and many more! ([Read more](%%%%doc.help%%%%))"
msgstr ""
-#: actions/showstream.php:239
+#: actions/showstream.php:248
#, fuzzy, php-format
msgid ""
"**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3619,7 +3682,7 @@ msgstr ""
"**%s** té un compte a %%%%site.name%%%%, un servei de [microblogging](http://"
"ca.wikipedia.org/wiki/Microblogging) "
-#: actions/showstream.php:296
+#: actions/showstream.php:305
#, php-format
msgid "Repeat of %s"
msgstr "Repetició de %s"
@@ -4298,11 +4361,6 @@ msgid ""
"Inc. and contributors."
msgstr ""
-#: actions/version.php:157
-#, fuzzy
-msgid "StatusNet"
-msgstr "S'ha suprimit l'estat."
-
#: actions/version.php:161
msgid "Contributors"
msgstr "Col·laboració"
@@ -4431,22 +4489,22 @@ msgstr "Ha estat bandejat de publicar notificacions en aquest lloc."
msgid "Problem saving notice."
msgstr "Problema en guardar l'avís."
-#: classes/Notice.php:790
+#: classes/Notice.php:788
#, fuzzy
msgid "Problem saving group inbox."
msgstr "Problema en guardar l'avís."
-#: classes/Notice.php:850
+#: classes/Notice.php:848
#, php-format
msgid "DB error inserting reply: %s"
msgstr "Error de BD en inserir resposta: %s"
-#: classes/Notice.php:1233
+#: classes/Notice.php:1231
#, fuzzy, php-format
msgid "RT @%1$s %2$s"
msgstr "%1$s (%2$s)"
-#: classes/User.php:382
+#: classes/User.php:385
#, php-format
msgid "Welcome to %1$s, @%2$s!"
msgstr "Us donem la benvinguda a %1$s, @%2$s!"
@@ -4729,11 +4787,11 @@ msgstr "Configuració dels camins"
msgid "Sessions configuration"
msgstr "Configuració del disseny"
-#: lib/apiauth.php:99
+#: lib/apiauth.php:95
msgid "API resource requires read-write access, but you only have read access."
msgstr ""
-#: lib/apiauth.php:279
+#: lib/apiauth.php:273
#, php-format
msgid "Failed API auth attempt, nickname = %1$s, proxy = %2$s, ip = %3$s"
msgstr ""
@@ -5102,19 +5160,19 @@ msgid ""
"tracking - not yet implemented.\n"
msgstr ""
-#: lib/common.php:131
+#: lib/common.php:135
msgid "No configuration file found. "
msgstr "No s'ha trobat cap fitxer de configuració. "
-#: lib/common.php:132
+#: lib/common.php:136
msgid "I looked for configuration files in the following places: "
msgstr ""
-#: lib/common.php:134
+#: lib/common.php:138
msgid "You may wish to run the installer to fix this."
msgstr "Podeu voler executar l'instal·lador per a corregir-ho."
-#: lib/common.php:135
+#: lib/common.php:139
msgid "Go to the installer."
msgstr "Vés a l'instal·lador."
@@ -5687,23 +5745,23 @@ msgstr ""
msgid "at"
msgstr ""
-#: lib/noticelist.php:531
+#: lib/noticelist.php:547
msgid "in context"
msgstr "en context"
-#: lib/noticelist.php:556
+#: lib/noticelist.php:572
msgid "Repeated by"
msgstr "Repetit per"
-#: lib/noticelist.php:582
+#: lib/noticelist.php:598
msgid "Reply to this notice"
msgstr "respondre a aquesta nota"
-#: lib/noticelist.php:583
+#: lib/noticelist.php:599
msgid "Reply"
msgstr "Respon"
-#: lib/noticelist.php:625
+#: lib/noticelist.php:641
#, fuzzy
msgid "Notice repeated"
msgstr "Notificació publicada"
@@ -5849,6 +5907,10 @@ msgstr "Repeteix l'avís"
msgid "Repeat this notice"
msgstr "Repeteix l'avís"
+#: lib/router.php:665
+msgid "No single user defined for single-user mode."
+msgstr ""
+
#: lib/sandboxform.php:67
#, fuzzy
msgid "Sandbox"
@@ -6019,47 +6081,47 @@ msgstr "Missatge"
msgid "Moderate"
msgstr "Modera"
-#: lib/util.php:868
+#: lib/util.php:867
msgid "a few seconds ago"
msgstr "fa pocs segons"
-#: lib/util.php:870
+#: lib/util.php:869
msgid "about a minute ago"
msgstr "fa un minut"
-#: lib/util.php:872
+#: lib/util.php:871
#, php-format
msgid "about %d minutes ago"
msgstr "fa %d minuts"
-#: lib/util.php:874
+#: lib/util.php:873
msgid "about an hour ago"
msgstr "fa una hora"
-#: lib/util.php:876
+#: lib/util.php:875
#, php-format
msgid "about %d hours ago"
msgstr "fa %d hores"
-#: lib/util.php:878
+#: lib/util.php:877
msgid "about a day ago"
msgstr "fa un dia"
-#: lib/util.php:880
+#: lib/util.php:879
#, php-format
msgid "about %d days ago"
msgstr "fa %d dies"
-#: lib/util.php:882
+#: lib/util.php:881
msgid "about a month ago"
msgstr "fa un mes"
-#: lib/util.php:884
+#: lib/util.php:883
#, php-format
msgid "about %d months ago"
msgstr "fa %d mesos"
-#: lib/util.php:886
+#: lib/util.php:885
msgid "about a year ago"
msgstr "fa un any"
diff --git a/locale/cs/LC_MESSAGES/statusnet.po b/locale/cs/LC_MESSAGES/statusnet.po
index 83985a640..73e7ca60a 100644
--- a/locale/cs/LC_MESSAGES/statusnet.po
+++ b/locale/cs/LC_MESSAGES/statusnet.po
@@ -9,12 +9,12 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-01-30 23:41+0000\n"
-"PO-Revision-Date: 2010-01-30 23:41:27+0000\n"
+"POT-Creation-Date: 2010-02-04 10:31+0000\n"
+"PO-Revision-Date: 2010-02-04 10:32:16+0000\n"
"Language-Team: Czech\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.16alpha (r61734); Translate extension (2010-01-16)\n"
+"X-Generator: MediaWiki 1.16alpha (r61969); Translate extension (2010-01-16)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: cs\n"
"X-Message-Group: out-statusnet\n"
@@ -100,7 +100,7 @@ msgstr "Žádné takové oznámení."
#: actions/favoritesrss.php:74 actions/foaf.php:40 actions/foaf.php:58
#: actions/microsummary.php:62 actions/newmessage.php:116 actions/otp.php:76
#: actions/remotesubscribe.php:145 actions/remotesubscribe.php:154
-#: actions/replies.php:73 actions/repliesrss.php:38
+#: actions/replies.php:73 actions/repliesrss.php:38 actions/rsd.php:116
#: actions/showfavorites.php:105 actions/userbyid.php:74
#: actions/usergroups.php:91 actions/userrss.php:38 actions/xrds.php:71
#: lib/command.php:163 lib/command.php:302 lib/command.php:355
@@ -157,7 +157,7 @@ msgid ""
"his or her attention](%%%%action.newnotice%%%%?status_textarea=%3$s)."
msgstr ""
-#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:202
+#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:211
#, php-format
msgid ""
"Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
@@ -390,8 +390,8 @@ msgstr "Přezdívku již někdo používá. Zkuste jinou"
msgid "Not a valid nickname."
msgstr "Není platnou přezdívkou."
-#: actions/apigroupcreate.php:196 actions/editapplication.php:212
-#: actions/editgroup.php:195 actions/newapplication.php:200
+#: actions/apigroupcreate.php:196 actions/editapplication.php:215
+#: actions/editgroup.php:195 actions/newapplication.php:203
#: actions/newgroup.php:139 actions/profilesettings.php:222
#: actions/register.php:217
msgid "Homepage is not a valid URL."
@@ -403,8 +403,8 @@ msgstr "Stránka není platnou URL."
msgid "Full name is too long (max 255 chars)."
msgstr "Jméno je moc dlouhé (maximální délka je 255 znaků)"
-#: actions/apigroupcreate.php:213 actions/editapplication.php:187
-#: actions/newapplication.php:169
+#: actions/apigroupcreate.php:213 actions/editapplication.php:190
+#: actions/newapplication.php:172
#, fuzzy, php-format
msgid "Description is too long (max %d chars)."
msgstr "Text je příliš dlouhý (maximální délka je 140 zanků)"
@@ -484,18 +484,23 @@ msgstr ""
msgid "groups on %s"
msgstr ""
-#: actions/apioauthauthorize.php:108 actions/apioauthauthorize.php:114
-msgid "Bad request."
+#: actions/apioauthauthorize.php:101
+msgid "No oauth_token parameter provided."
msgstr ""
-#: actions/apioauthauthorize.php:134 actions/avatarsettings.php:268
+#: actions/apioauthauthorize.php:106
+#, fuzzy
+msgid "Invalid token."
+msgstr "Neplatná velikost"
+
+#: actions/apioauthauthorize.php:123 actions/avatarsettings.php:268
#: actions/deletenotice.php:157 actions/disfavor.php:74
-#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:50
+#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:54
#: actions/groupblock.php:66 actions/grouplogo.php:309
#: actions/groupunblock.php:66 actions/imsettings.php:206
#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
-#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:139
+#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:135
#: actions/othersettings.php:145 actions/passwordsettings.php:138
#: actions/profilesettings.php:194 actions/recoverpassword.php:337
#: actions/register.php:165 actions/remotesubscribe.php:77
@@ -506,77 +511,85 @@ msgstr ""
msgid "There was a problem with your session token. Try again, please."
msgstr ""
-#: actions/apioauthauthorize.php:146
+#: actions/apioauthauthorize.php:135
#, fuzzy
msgid "Invalid nickname / password!"
msgstr "Neplatné jméno nebo heslo"
-#: actions/apioauthauthorize.php:170
+#: actions/apioauthauthorize.php:159
#, fuzzy
msgid "Database error deleting OAuth application user."
msgstr "Chyba nastavení uživatele"
-#: actions/apioauthauthorize.php:196
+#: actions/apioauthauthorize.php:185
#, fuzzy
msgid "Database error inserting OAuth application user."
msgstr "Chyba v DB při vkládání odpovědi: %s"
-#: actions/apioauthauthorize.php:231
+#: actions/apioauthauthorize.php:214
#, php-format
msgid ""
"The request token %s has been authorized. Please exchange it for an access "
"token."
msgstr ""
-#: actions/apioauthauthorize.php:241
+#: actions/apioauthauthorize.php:227
#, php-format
-msgid "The request token %s has been denied."
+msgid "The request token %s has been denied and revoked."
msgstr ""
-#: actions/apioauthauthorize.php:246 actions/avatarsettings.php:281
+#: actions/apioauthauthorize.php:232 actions/avatarsettings.php:281
#: actions/designadminpanel.php:103 actions/editapplication.php:139
#: actions/emailsettings.php:256 actions/grouplogo.php:319
#: actions/imsettings.php:220 actions/newapplication.php:121
-#: actions/oauthconnectionssettings.php:151 actions/recoverpassword.php:44
+#: actions/oauthconnectionssettings.php:147 actions/recoverpassword.php:44
#: actions/smssettings.php:248 lib/designsettings.php:304
msgid "Unexpected form submission."
msgstr "Nečekaná forma submission."
-#: actions/apioauthauthorize.php:273
+#: actions/apioauthauthorize.php:259
msgid "An application would like to connect to your account"
msgstr ""
-#: actions/apioauthauthorize.php:290
+#: actions/apioauthauthorize.php:276
msgid "Allow or deny access"
msgstr ""
-#: actions/apioauthauthorize.php:320 lib/action.php:441
+#: actions/apioauthauthorize.php:292
+#, php-format
+msgid ""
+"The application <strong>%1$s</strong> by <strong>%2$s</strong> would like "
+"the ability to <strong>%3$s</strong> your %4$s account data. You should only "
+"give access to your %4$s account to third parties you trust."
+msgstr ""
+
+#: actions/apioauthauthorize.php:310 lib/action.php:441
#, fuzzy
msgid "Account"
msgstr "O nás"
-#: actions/apioauthauthorize.php:323 actions/login.php:230
+#: actions/apioauthauthorize.php:313 actions/login.php:230
#: actions/profilesettings.php:106 actions/register.php:424
#: actions/showgroup.php:236 actions/tagother.php:94 lib/groupeditform.php:152
#: lib/userprofile.php:131
msgid "Nickname"
msgstr "Přezdívka"
-#: actions/apioauthauthorize.php:326 actions/login.php:233
+#: actions/apioauthauthorize.php:316 actions/login.php:233
#: actions/register.php:429 lib/accountsettingsaction.php:116
msgid "Password"
msgstr "Heslo"
-#: actions/apioauthauthorize.php:338
+#: actions/apioauthauthorize.php:328
#, fuzzy
msgid "Deny"
msgstr "Vzhled"
-#: actions/apioauthauthorize.php:344
+#: actions/apioauthauthorize.php:334
msgid "Allow"
msgstr ""
-#: actions/apioauthauthorize.php:361
+#: actions/apioauthauthorize.php:351
msgid "Allow or deny access to your account information."
msgstr ""
@@ -752,8 +765,8 @@ msgstr ""
msgid "Preview"
msgstr ""
-#: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:608
+#: actions/avatarsettings.php:149 actions/showapplication.php:252
+#: lib/deleteuserform.php:66 lib/noticelist.php:624
msgid "Delete"
msgstr "Odstranit"
@@ -802,8 +815,9 @@ msgid ""
"will not be notified of any @-replies from them."
msgstr ""
-#: actions/block.php:143 actions/deletenotice.php:145
-#: actions/deleteuser.php:147 actions/groupblock.php:178
+#: actions/block.php:143 actions/deleteapplication.php:153
+#: actions/deletenotice.php:145 actions/deleteuser.php:147
+#: actions/groupblock.php:178
msgid "No"
msgstr "Ne"
@@ -812,9 +826,9 @@ msgstr "Ne"
msgid "Do not block this user"
msgstr "Žádný takový uživatel."
-#: actions/block.php:144 actions/deletenotice.php:146
-#: actions/deleteuser.php:148 actions/groupblock.php:179
-#: lib/repeatform.php:132
+#: actions/block.php:144 actions/deleteapplication.php:158
+#: actions/deletenotice.php:146 actions/deleteuser.php:148
+#: actions/groupblock.php:179 lib/repeatform.php:132
msgid "Yes"
msgstr "Ano"
@@ -923,6 +937,50 @@ msgstr "Umístění"
msgid "Notices"
msgstr "Sdělení"
+#: actions/deleteapplication.php:63
+#, fuzzy
+msgid "You must be logged in to delete an application."
+msgstr "Nelze aktualizovat uživatele"
+
+#: actions/deleteapplication.php:71
+#, fuzzy
+msgid "Application not found."
+msgstr "Sdělení nemá profil"
+
+#: actions/deleteapplication.php:78 actions/editapplication.php:77
+#: actions/showapplication.php:94
+#, fuzzy
+msgid "You are not the owner of this application."
+msgstr "Neodeslal jste nám profil"
+
+#: actions/deleteapplication.php:102 actions/editapplication.php:127
+#: actions/newapplication.php:110 actions/showapplication.php:118
+#: lib/action.php:1195
+msgid "There was a problem with your session token."
+msgstr ""
+
+#: actions/deleteapplication.php:123 actions/deleteapplication.php:147
+#, fuzzy
+msgid "Delete application"
+msgstr "Žádné takové oznámení."
+
+#: actions/deleteapplication.php:149
+msgid ""
+"Are you sure you want to delete this application? This will clear all data "
+"about the application from the database, including all existing user "
+"connections."
+msgstr ""
+
+#: actions/deleteapplication.php:156
+#, fuzzy
+msgid "Do not delete this application"
+msgstr "Žádné takové oznámení."
+
+#: actions/deleteapplication.php:160
+#, fuzzy
+msgid "Delete this application"
+msgstr "Odstranit toto oznámení"
+
#: actions/deletenotice.php:67 actions/disfavor.php:61 actions/favor.php:62
#: actions/groupblock.php:61 actions/groupunblock.php:61 actions/logout.php:69
#: actions/makeadmin.php:61 actions/newmessage.php:87 actions/newnotice.php:89
@@ -956,7 +1014,7 @@ msgstr ""
msgid "Do not delete this notice"
msgstr "Žádné takové oznámení."
-#: actions/deletenotice.php:146 lib/noticelist.php:608
+#: actions/deletenotice.php:146 lib/noticelist.php:624
msgid "Delete this notice"
msgstr "Odstranit toto oznámení"
@@ -1104,7 +1162,7 @@ msgstr ""
msgid "Add to favorites"
msgstr "Přidat do oblíbených"
-#: actions/doc.php:155
+#: actions/doc.php:158
#, fuzzy, php-format
msgid "No such document \"%s\""
msgstr "Žádný takový dokument."
@@ -1118,22 +1176,12 @@ msgstr "Sdělení nemá profil"
msgid "You must be logged in to edit an application."
msgstr ""
-#: actions/editapplication.php:77 actions/showapplication.php:94
-#, fuzzy
-msgid "You are not the owner of this application."
-msgstr "Neodeslal jste nám profil"
-
-#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:163
+#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:166
#: actions/showapplication.php:87
#, fuzzy
msgid "No such application."
msgstr "Žádné takové oznámení."
-#: actions/editapplication.php:127 actions/newapplication.php:110
-#: actions/showapplication.php:118 lib/action.php:1195
-msgid "There was a problem with your session token."
-msgstr ""
-
#: actions/editapplication.php:161
msgid "Use this form to edit your application."
msgstr ""
@@ -1142,47 +1190,52 @@ msgstr ""
msgid "Name is required."
msgstr ""
-#: actions/editapplication.php:180 actions/newapplication.php:162
+#: actions/editapplication.php:180 actions/newapplication.php:165
#, fuzzy
msgid "Name is too long (max 255 chars)."
msgstr "Jméno je moc dlouhé (maximální délka je 255 znaků)"
-#: actions/editapplication.php:183 actions/newapplication.php:165
+#: actions/editapplication.php:183 actions/newapplication.php:162
+#, fuzzy
+msgid "Name already in use. Try another one."
+msgstr "Přezdívku již někdo používá. Zkuste jinou"
+
+#: actions/editapplication.php:186 actions/newapplication.php:168
#, fuzzy
msgid "Description is required."
msgstr "Odběry"
-#: actions/editapplication.php:191
+#: actions/editapplication.php:194
msgid "Source URL is too long."
msgstr ""
-#: actions/editapplication.php:197 actions/newapplication.php:182
+#: actions/editapplication.php:200 actions/newapplication.php:185
#, fuzzy
msgid "Source URL is not valid."
msgstr "Stránka není platnou URL."
-#: actions/editapplication.php:200 actions/newapplication.php:185
+#: actions/editapplication.php:203 actions/newapplication.php:188
msgid "Organization is required."
msgstr ""
-#: actions/editapplication.php:203 actions/newapplication.php:188
+#: actions/editapplication.php:206 actions/newapplication.php:191
#, fuzzy
msgid "Organization is too long (max 255 chars)."
msgstr "Umístění příliš dlouhé (maximálně 255 znaků)"
-#: actions/editapplication.php:206 actions/newapplication.php:191
+#: actions/editapplication.php:209 actions/newapplication.php:194
msgid "Organization homepage is required."
msgstr ""
-#: actions/editapplication.php:215 actions/newapplication.php:203
+#: actions/editapplication.php:218 actions/newapplication.php:206
msgid "Callback is too long."
msgstr ""
-#: actions/editapplication.php:222 actions/newapplication.php:212
+#: actions/editapplication.php:225 actions/newapplication.php:215
msgid "Callback URL is not valid."
msgstr ""
-#: actions/editapplication.php:255
+#: actions/editapplication.php:258
#, fuzzy
msgid "Could not update application."
msgstr "Nelze aktualizovat uživatele"
@@ -2087,11 +2140,11 @@ msgstr ""
msgid "Use this form to register a new application."
msgstr ""
-#: actions/newapplication.php:173
+#: actions/newapplication.php:176
msgid "Source URL is required."
msgstr ""
-#: actions/newapplication.php:255 actions/newapplication.php:264
+#: actions/newapplication.php:258 actions/newapplication.php:267
#, fuzzy
msgid "Could not create application."
msgstr "Nelze uložin informace o obrázku"
@@ -2220,29 +2273,29 @@ msgstr ""
msgid "You have not registered any applications yet."
msgstr ""
-#: actions/oauthconnectionssettings.php:71
+#: actions/oauthconnectionssettings.php:72
msgid "Connected applications"
msgstr ""
-#: actions/oauthconnectionssettings.php:87
+#: actions/oauthconnectionssettings.php:83
msgid "You have allowed the following applications to access you account."
msgstr ""
-#: actions/oauthconnectionssettings.php:170
+#: actions/oauthconnectionssettings.php:175
#, fuzzy
msgid "You are not a user of that application."
msgstr "Neodeslal jste nám profil"
-#: actions/oauthconnectionssettings.php:180
+#: actions/oauthconnectionssettings.php:186
msgid "Unable to revoke access for app: "
msgstr ""
-#: actions/oauthconnectionssettings.php:192
+#: actions/oauthconnectionssettings.php:198
#, php-format
msgid "You have not authorized any applications to use your account."
msgstr ""
-#: actions/oauthconnectionssettings.php:205
+#: actions/oauthconnectionssettings.php:211
msgid "Developers can edit the registration settings for their applications "
msgstr ""
@@ -2761,39 +2814,39 @@ msgstr "Veřejné zprávy"
msgid "Public timeline"
msgstr "Veřejné zprávy"
-#: actions/public.php:151
+#: actions/public.php:159
#, fuzzy
msgid "Public Stream Feed (RSS 1.0)"
msgstr "Veřejný Stream Feed"
-#: actions/public.php:155
+#: actions/public.php:163
#, fuzzy
msgid "Public Stream Feed (RSS 2.0)"
msgstr "Veřejný Stream Feed"
-#: actions/public.php:159
+#: actions/public.php:167
#, fuzzy
msgid "Public Stream Feed (Atom)"
msgstr "Veřejný Stream Feed"
-#: actions/public.php:179
+#: actions/public.php:187
#, php-format
msgid ""
"This is the public timeline for %%site.name%% but no one has posted anything "
"yet."
msgstr ""
-#: actions/public.php:182
+#: actions/public.php:190
msgid "Be the first to post!"
msgstr ""
-#: actions/public.php:186
+#: actions/public.php:194
#, php-format
msgid ""
"Why not [register an account](%%action.register%%) and be the first to post!"
msgstr ""
-#: actions/public.php:233
+#: actions/public.php:241
#, php-format
msgid ""
"This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2802,7 +2855,7 @@ msgid ""
"friends, family, and colleagues! ([Read more](%%doc.help%%))"
msgstr ""
-#: actions/public.php:238
+#: actions/public.php:246
#, php-format
msgid ""
"This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -3147,7 +3200,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:626
+#: actions/repeat.php:114 lib/noticelist.php:642
#, fuzzy
msgid "Repeated"
msgstr "Vytvořit"
@@ -3209,6 +3262,11 @@ msgstr ""
msgid "Replies to %1$s on %2$s!"
msgstr "Odpovědi na %s"
+#: actions/rsd.php:146 actions/version.php:157
+#, fuzzy
+msgid "StatusNet"
+msgstr "Obrázek nahrán"
+
#: actions/sandbox.php:65 actions/unsandbox.php:65
#, fuzzy
msgid "You cannot sandbox users on this site."
@@ -3254,80 +3312,84 @@ msgstr "Nastavení"
msgid "You must be logged in to view an application."
msgstr ""
-#: actions/showapplication.php:158
+#: actions/showapplication.php:157
#, fuzzy
msgid "Application profile"
msgstr "Sdělení nemá profil"
-#: actions/showapplication.php:160 lib/applicationeditform.php:180
+#: actions/showapplication.php:159 lib/applicationeditform.php:180
msgid "Icon"
msgstr ""
-#: actions/showapplication.php:170 actions/version.php:195
+#: actions/showapplication.php:169 actions/version.php:195
#: lib/applicationeditform.php:195
#, fuzzy
msgid "Name"
msgstr "Přezdívka"
-#: actions/showapplication.php:179 lib/applicationeditform.php:222
+#: actions/showapplication.php:178 lib/applicationeditform.php:222
#, fuzzy
msgid "Organization"
msgstr "Umístění"
-#: actions/showapplication.php:188 actions/version.php:198
+#: actions/showapplication.php:187 actions/version.php:198
#: lib/applicationeditform.php:209 lib/groupeditform.php:172
#, fuzzy
msgid "Description"
msgstr "Odběry"
-#: actions/showapplication.php:193 actions/showgroup.php:429
+#: actions/showapplication.php:192 actions/showgroup.php:429
#: lib/profileaction.php:174
msgid "Statistics"
msgstr "Statistiky"
-#: actions/showapplication.php:204
+#: actions/showapplication.php:203
#, php-format
-msgid "created by %1$s - %2$s access by default - %3$d users"
+msgid "Created by %1$s - %2$s access by default - %3$d users"
msgstr ""
-#: actions/showapplication.php:214
+#: actions/showapplication.php:213
msgid "Application actions"
msgstr ""
-#: actions/showapplication.php:233
+#: actions/showapplication.php:236
msgid "Reset key & secret"
msgstr ""
-#: actions/showapplication.php:241
+#: actions/showapplication.php:261
msgid "Application info"
msgstr ""
-#: actions/showapplication.php:243
+#: actions/showapplication.php:263
msgid "Consumer key"
msgstr ""
-#: actions/showapplication.php:248
+#: actions/showapplication.php:268
msgid "Consumer secret"
msgstr ""
-#: actions/showapplication.php:253
+#: actions/showapplication.php:273
msgid "Request token URL"
msgstr ""
-#: actions/showapplication.php:258
+#: actions/showapplication.php:278
msgid "Access token URL"
msgstr ""
-#: actions/showapplication.php:263
+#: actions/showapplication.php:283
msgid "Authorize URL"
msgstr ""
-#: actions/showapplication.php:268
+#: actions/showapplication.php:288
msgid ""
"Note: We support HMAC-SHA1 signatures. We do not support the plaintext "
"signature method."
msgstr ""
+#: actions/showapplication.php:309
+msgid "Are you sure you want to reset your consumer key and secret?"
+msgstr ""
+
#: actions/showfavorites.php:79
#, fuzzy, php-format
msgid "%1$s's favorite notices, page %2$d"
@@ -3531,25 +3593,25 @@ msgstr "Feed sdělení pro %s"
msgid "FOAF for %s"
msgstr ""
-#: actions/showstream.php:191
+#: actions/showstream.php:200
#, php-format
msgid "This is the timeline for %1$s but %2$s hasn't posted anything yet."
msgstr ""
-#: actions/showstream.php:196
+#: actions/showstream.php:205
msgid ""
"Seen anything interesting recently? You haven't posted any notices yet, now "
"would be a good time to start :)"
msgstr ""
-#: actions/showstream.php:198
+#: actions/showstream.php:207
#, php-format
msgid ""
"You can try to nudge %1$s or [post something to his or her attention](%%%%"
"action.newnotice%%%%?status_textarea=%2$s)."
msgstr ""
-#: actions/showstream.php:234
+#: actions/showstream.php:243
#, php-format
msgid ""
"**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3558,7 +3620,7 @@ msgid ""
"follow **%s**'s notices and many more! ([Read more](%%%%doc.help%%%%))"
msgstr ""
-#: actions/showstream.php:239
+#: actions/showstream.php:248
#, php-format
msgid ""
"**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3566,7 +3628,7 @@ msgid ""
"[StatusNet](http://status.net/) tool. "
msgstr ""
-#: actions/showstream.php:296
+#: actions/showstream.php:305
#, fuzzy, php-format
msgid "Repeat of %s"
msgstr "Odpovědi na %s"
@@ -4246,11 +4308,6 @@ msgid ""
"Inc. and contributors."
msgstr ""
-#: actions/version.php:157
-#, fuzzy
-msgid "StatusNet"
-msgstr "Obrázek nahrán"
-
#: actions/version.php:161
msgid "Contributors"
msgstr ""
@@ -4374,22 +4431,22 @@ msgstr ""
msgid "Problem saving notice."
msgstr "Problém při ukládání sdělení"
-#: classes/Notice.php:790
+#: classes/Notice.php:788
#, fuzzy
msgid "Problem saving group inbox."
msgstr "Problém při ukládání sdělení"
-#: classes/Notice.php:850
+#: classes/Notice.php:848
#, php-format
msgid "DB error inserting reply: %s"
msgstr "Chyba v DB při vkládání odpovědi: %s"
-#: classes/Notice.php:1233
+#: classes/Notice.php:1231
#, php-format
msgid "RT @%1$s %2$s"
msgstr ""
-#: classes/User.php:382
+#: classes/User.php:385
#, php-format
msgid "Welcome to %1$s, @%2$s!"
msgstr ""
@@ -4682,11 +4739,11 @@ msgstr "Potvrzení emailové adresy"
msgid "Sessions configuration"
msgstr "Potvrzení emailové adresy"
-#: lib/apiauth.php:99
+#: lib/apiauth.php:95
msgid "API resource requires read-write access, but you only have read access."
msgstr ""
-#: lib/apiauth.php:279
+#: lib/apiauth.php:273
#, php-format
msgid "Failed API auth attempt, nickname = %1$s, proxy = %2$s, ip = %3$s"
msgstr ""
@@ -5062,20 +5119,20 @@ msgid ""
"tracking - not yet implemented.\n"
msgstr ""
-#: lib/common.php:131
+#: lib/common.php:135
#, fuzzy
msgid "No configuration file found. "
msgstr "Žádný potvrzující kód."
-#: lib/common.php:132
+#: lib/common.php:136
msgid "I looked for configuration files in the following places: "
msgstr ""
-#: lib/common.php:134
+#: lib/common.php:138
msgid "You may wish to run the installer to fix this."
msgstr ""
-#: lib/common.php:135
+#: lib/common.php:139
msgid "Go to the installer."
msgstr ""
@@ -5650,26 +5707,26 @@ msgstr ""
msgid "at"
msgstr ""
-#: lib/noticelist.php:531
+#: lib/noticelist.php:547
#, fuzzy
msgid "in context"
msgstr "Žádný obsah!"
-#: lib/noticelist.php:556
+#: lib/noticelist.php:572
#, fuzzy
msgid "Repeated by"
msgstr "Vytvořit"
-#: lib/noticelist.php:582
+#: lib/noticelist.php:598
msgid "Reply to this notice"
msgstr ""
-#: lib/noticelist.php:583
+#: lib/noticelist.php:599
#, fuzzy
msgid "Reply"
msgstr "odpověď"
-#: lib/noticelist.php:625
+#: lib/noticelist.php:641
#, fuzzy
msgid "Notice repeated"
msgstr "Sdělení"
@@ -5816,6 +5873,10 @@ msgstr "Odstranit toto oznámení"
msgid "Repeat this notice"
msgstr "Odstranit toto oznámení"
+#: lib/router.php:665
+msgid "No single user defined for single-user mode."
+msgstr ""
+
#: lib/sandboxform.php:67
msgid "Sandbox"
msgstr ""
@@ -5992,47 +6053,47 @@ msgstr "Zpráva"
msgid "Moderate"
msgstr ""
-#: lib/util.php:868
+#: lib/util.php:867
msgid "a few seconds ago"
msgstr "před pár sekundami"
-#: lib/util.php:870
+#: lib/util.php:869
msgid "about a minute ago"
msgstr "asi před minutou"
-#: lib/util.php:872
+#: lib/util.php:871
#, php-format
msgid "about %d minutes ago"
msgstr "asi před %d minutami"
-#: lib/util.php:874
+#: lib/util.php:873
msgid "about an hour ago"
msgstr "asi před hodinou"
-#: lib/util.php:876
+#: lib/util.php:875
#, php-format
msgid "about %d hours ago"
msgstr "asi před %d hodinami"
-#: lib/util.php:878
+#: lib/util.php:877
msgid "about a day ago"
msgstr "asi přede dnem"
-#: lib/util.php:880
+#: lib/util.php:879
#, php-format
msgid "about %d days ago"
msgstr "před %d dny"
-#: lib/util.php:882
+#: lib/util.php:881
msgid "about a month ago"
msgstr "asi před měsícem"
-#: lib/util.php:884
+#: lib/util.php:883
#, php-format
msgid "about %d months ago"
msgstr "asi před %d mesíci"
-#: lib/util.php:886
+#: lib/util.php:885
msgid "about a year ago"
msgstr "asi před rokem"
diff --git a/locale/de/LC_MESSAGES/statusnet.po b/locale/de/LC_MESSAGES/statusnet.po
index d925f47e6..53e7646e5 100644
--- a/locale/de/LC_MESSAGES/statusnet.po
+++ b/locale/de/LC_MESSAGES/statusnet.po
@@ -12,12 +12,12 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-01-30 23:41+0000\n"
-"PO-Revision-Date: 2010-01-30 23:41:30+0000\n"
+"POT-Creation-Date: 2010-02-04 10:31+0000\n"
+"PO-Revision-Date: 2010-02-04 10:32:19+0000\n"
"Language-Team: German\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.16alpha (r61734); Translate extension (2010-01-16)\n"
+"X-Generator: MediaWiki 1.16alpha (r61969); Translate extension (2010-01-16)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: de\n"
"X-Message-Group: out-statusnet\n"
@@ -29,9 +29,8 @@ msgid "Access"
msgstr "Akzeptieren"
#: actions/accessadminpanel.php:65
-#, fuzzy
msgid "Site access settings"
-msgstr "Site-Einstellungen speichern"
+msgstr "Zugangseinstellungen speichern"
#: actions/accessadminpanel.php:158
#, fuzzy
@@ -103,7 +102,7 @@ msgstr "Seite nicht vorhanden"
#: actions/favoritesrss.php:74 actions/foaf.php:40 actions/foaf.php:58
#: actions/microsummary.php:62 actions/newmessage.php:116 actions/otp.php:76
#: actions/remotesubscribe.php:145 actions/remotesubscribe.php:154
-#: actions/replies.php:73 actions/repliesrss.php:38
+#: actions/replies.php:73 actions/repliesrss.php:38 actions/rsd.php:116
#: actions/showfavorites.php:105 actions/userbyid.php:74
#: actions/usergroups.php:91 actions/userrss.php:38 actions/xrds.php:71
#: lib/command.php:163 lib/command.php:302 lib/command.php:355
@@ -167,7 +166,7 @@ msgstr ""
"posten](%%%%action.newnotice%%%%?status_textarea=%s) um seine Aufmerksamkeit "
"zu erregen."
-#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:202
+#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:211
#, php-format
msgid ""
"Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
@@ -397,8 +396,8 @@ msgstr "Nutzername wird bereits verwendet. Suche dir einen anderen aus."
msgid "Not a valid nickname."
msgstr "Ungültiger Nutzername."
-#: actions/apigroupcreate.php:196 actions/editapplication.php:212
-#: actions/editgroup.php:195 actions/newapplication.php:200
+#: actions/apigroupcreate.php:196 actions/editapplication.php:215
+#: actions/editgroup.php:195 actions/newapplication.php:203
#: actions/newgroup.php:139 actions/profilesettings.php:222
#: actions/register.php:217
msgid "Homepage is not a valid URL."
@@ -411,8 +410,8 @@ msgstr ""
msgid "Full name is too long (max 255 chars)."
msgstr "Der vollständige Name ist zu lang (maximal 255 Zeichen)."
-#: actions/apigroupcreate.php:213 actions/editapplication.php:187
-#: actions/newapplication.php:169
+#: actions/apigroupcreate.php:213 actions/editapplication.php:190
+#: actions/newapplication.php:172
#, php-format
msgid "Description is too long (max %d chars)."
msgstr "Die Beschreibung ist zu lang (max. %d Zeichen)."
@@ -489,18 +488,23 @@ msgstr "%s Gruppen"
msgid "groups on %s"
msgstr "Gruppen von %s"
-#: actions/apioauthauthorize.php:108 actions/apioauthauthorize.php:114
-msgid "Bad request."
+#: actions/apioauthauthorize.php:101
+msgid "No oauth_token parameter provided."
msgstr ""
-#: actions/apioauthauthorize.php:134 actions/avatarsettings.php:268
+#: actions/apioauthauthorize.php:106
+#, fuzzy
+msgid "Invalid token."
+msgstr "Ungültige Größe."
+
+#: actions/apioauthauthorize.php:123 actions/avatarsettings.php:268
#: actions/deletenotice.php:157 actions/disfavor.php:74
-#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:50
+#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:54
#: actions/groupblock.php:66 actions/grouplogo.php:309
#: actions/groupunblock.php:66 actions/imsettings.php:206
#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
-#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:139
+#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:135
#: actions/othersettings.php:145 actions/passwordsettings.php:138
#: actions/profilesettings.php:194 actions/recoverpassword.php:337
#: actions/register.php:165 actions/remotesubscribe.php:77
@@ -511,76 +515,83 @@ msgstr ""
msgid "There was a problem with your session token. Try again, please."
msgstr "Es gab ein Problem mit deinem Sitzungstoken. Bitte versuche es erneut."
-#: actions/apioauthauthorize.php:146
-#, fuzzy
+#: actions/apioauthauthorize.php:135
msgid "Invalid nickname / password!"
msgstr "Benutzername oder Passwort falsch."
-#: actions/apioauthauthorize.php:170
+#: actions/apioauthauthorize.php:159
#, fuzzy
msgid "Database error deleting OAuth application user."
msgstr "Fehler bei den Nutzereinstellungen."
-#: actions/apioauthauthorize.php:196
+#: actions/apioauthauthorize.php:185
#, fuzzy
msgid "Database error inserting OAuth application user."
msgstr "Datenbankfehler beim Einfügen des Hashtags: %s"
-#: actions/apioauthauthorize.php:231
+#: actions/apioauthauthorize.php:214
#, php-format
msgid ""
"The request token %s has been authorized. Please exchange it for an access "
"token."
msgstr ""
-#: actions/apioauthauthorize.php:241
+#: actions/apioauthauthorize.php:227
#, php-format
-msgid "The request token %s has been denied."
+msgid "The request token %s has been denied and revoked."
msgstr ""
-#: actions/apioauthauthorize.php:246 actions/avatarsettings.php:281
+#: actions/apioauthauthorize.php:232 actions/avatarsettings.php:281
#: actions/designadminpanel.php:103 actions/editapplication.php:139
#: actions/emailsettings.php:256 actions/grouplogo.php:319
#: actions/imsettings.php:220 actions/newapplication.php:121
-#: actions/oauthconnectionssettings.php:151 actions/recoverpassword.php:44
+#: actions/oauthconnectionssettings.php:147 actions/recoverpassword.php:44
#: actions/smssettings.php:248 lib/designsettings.php:304
msgid "Unexpected form submission."
msgstr "Unerwartete Formulareingabe."
-#: actions/apioauthauthorize.php:273
+#: actions/apioauthauthorize.php:259
msgid "An application would like to connect to your account"
msgstr ""
-#: actions/apioauthauthorize.php:290
+#: actions/apioauthauthorize.php:276
msgid "Allow or deny access"
msgstr ""
-#: actions/apioauthauthorize.php:320 lib/action.php:441
+#: actions/apioauthauthorize.php:292
+#, php-format
+msgid ""
+"The application <strong>%1$s</strong> by <strong>%2$s</strong> would like "
+"the ability to <strong>%3$s</strong> your %4$s account data. You should only "
+"give access to your %4$s account to third parties you trust."
+msgstr ""
+
+#: actions/apioauthauthorize.php:310 lib/action.php:441
msgid "Account"
msgstr "Konto"
-#: actions/apioauthauthorize.php:323 actions/login.php:230
+#: actions/apioauthauthorize.php:313 actions/login.php:230
#: actions/profilesettings.php:106 actions/register.php:424
#: actions/showgroup.php:236 actions/tagother.php:94 lib/groupeditform.php:152
#: lib/userprofile.php:131
msgid "Nickname"
msgstr "Nutzername"
-#: actions/apioauthauthorize.php:326 actions/login.php:233
+#: actions/apioauthauthorize.php:316 actions/login.php:233
#: actions/register.php:429 lib/accountsettingsaction.php:116
msgid "Password"
msgstr "Passwort"
-#: actions/apioauthauthorize.php:338
+#: actions/apioauthauthorize.php:328
msgid "Deny"
msgstr ""
-#: actions/apioauthauthorize.php:344
+#: actions/apioauthauthorize.php:334
#, fuzzy
msgid "Allow"
msgstr "Alle"
-#: actions/apioauthauthorize.php:361
+#: actions/apioauthauthorize.php:351
msgid "Allow or deny access to your account information."
msgstr ""
@@ -753,8 +764,8 @@ msgstr "Original"
msgid "Preview"
msgstr "Vorschau"
-#: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:608
+#: actions/avatarsettings.php:149 actions/showapplication.php:252
+#: lib/deleteuserform.php:66 lib/noticelist.php:624
msgid "Delete"
msgstr "Löschen"
@@ -802,8 +813,9 @@ msgid ""
"will not be notified of any @-replies from them."
msgstr ""
-#: actions/block.php:143 actions/deletenotice.php:145
-#: actions/deleteuser.php:147 actions/groupblock.php:178
+#: actions/block.php:143 actions/deleteapplication.php:153
+#: actions/deletenotice.php:145 actions/deleteuser.php:147
+#: actions/groupblock.php:178
msgid "No"
msgstr "Nein"
@@ -811,9 +823,9 @@ msgstr "Nein"
msgid "Do not block this user"
msgstr "Diesen Benutzer freigeben"
-#: actions/block.php:144 actions/deletenotice.php:146
-#: actions/deleteuser.php:148 actions/groupblock.php:179
-#: lib/repeatform.php:132
+#: actions/block.php:144 actions/deleteapplication.php:158
+#: actions/deletenotice.php:146 actions/deleteuser.php:148
+#: actions/groupblock.php:179 lib/repeatform.php:132
msgid "Yes"
msgstr "Ja"
@@ -918,6 +930,50 @@ msgstr "Unterhaltung"
msgid "Notices"
msgstr "Nachrichten"
+#: actions/deleteapplication.php:63
+#, fuzzy
+msgid "You must be logged in to delete an application."
+msgstr "Du musst angemeldet sein, um eine Gruppe zu bearbeiten."
+
+#: actions/deleteapplication.php:71
+#, fuzzy
+msgid "Application not found."
+msgstr "Nachricht hat kein Profil"
+
+#: actions/deleteapplication.php:78 actions/editapplication.php:77
+#: actions/showapplication.php:94
+#, fuzzy
+msgid "You are not the owner of this application."
+msgstr "Du bist kein Mitglied dieser Gruppe."
+
+#: actions/deleteapplication.php:102 actions/editapplication.php:127
+#: actions/newapplication.php:110 actions/showapplication.php:118
+#: lib/action.php:1195
+msgid "There was a problem with your session token."
+msgstr "Es gab ein Problem mit deinem Sessiontoken."
+
+#: actions/deleteapplication.php:123 actions/deleteapplication.php:147
+#, fuzzy
+msgid "Delete application"
+msgstr "Unbekannte Nachricht."
+
+#: actions/deleteapplication.php:149
+msgid ""
+"Are you sure you want to delete this application? This will clear all data "
+"about the application from the database, including all existing user "
+"connections."
+msgstr ""
+
+#: actions/deleteapplication.php:156
+#, fuzzy
+msgid "Do not delete this application"
+msgstr "Diese Nachricht nicht löschen"
+
+#: actions/deleteapplication.php:160
+#, fuzzy
+msgid "Delete this application"
+msgstr "Nachricht löschen"
+
#: actions/deletenotice.php:67 actions/disfavor.php:61 actions/favor.php:62
#: actions/groupblock.php:61 actions/groupunblock.php:61 actions/logout.php:69
#: actions/makeadmin.php:61 actions/newmessage.php:87 actions/newnotice.php:89
@@ -952,7 +1008,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:608
+#: actions/deletenotice.php:146 lib/noticelist.php:624
msgid "Delete this notice"
msgstr "Nachricht löschen"
@@ -1094,7 +1150,7 @@ msgstr "Diese Nachricht ist kein Favorit!"
msgid "Add to favorites"
msgstr "Zu Favoriten hinzufügen"
-#: actions/doc.php:155
+#: actions/doc.php:158
#, fuzzy, php-format
msgid "No such document \"%s\""
msgstr "Unbekanntes Dokument."
@@ -1109,22 +1165,12 @@ msgstr "Sonstige Optionen"
msgid "You must be logged in to edit an application."
msgstr "Du musst angemeldet sein, um eine Gruppe zu bearbeiten."
-#: actions/editapplication.php:77 actions/showapplication.php:94
-#, fuzzy
-msgid "You are not the owner of this application."
-msgstr "Du bist kein Mitglied dieser Gruppe."
-
-#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:163
+#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:166
#: actions/showapplication.php:87
#, fuzzy
msgid "No such application."
msgstr "Unbekannte Nachricht."
-#: actions/editapplication.php:127 actions/newapplication.php:110
-#: actions/showapplication.php:118 lib/action.php:1195
-msgid "There was a problem with your session token."
-msgstr "Es gab ein Problem mit deinem Sessiontoken."
-
#: actions/editapplication.php:161
#, fuzzy
msgid "Use this form to edit your application."
@@ -1135,48 +1181,53 @@ msgstr "Benutze dieses Formular, um die Gruppe zu bearbeiten."
msgid "Name is required."
msgstr "Gleiches Passwort wie zuvor. Pflichteingabe."
-#: actions/editapplication.php:180 actions/newapplication.php:162
+#: actions/editapplication.php:180 actions/newapplication.php:165
#, fuzzy
msgid "Name is too long (max 255 chars)."
msgstr "Der vollständige Name ist zu lang (maximal 255 Zeichen)."
-#: actions/editapplication.php:183 actions/newapplication.php:165
+#: actions/editapplication.php:183 actions/newapplication.php:162
+#, fuzzy
+msgid "Name already in use. Try another one."
+msgstr "Nutzername wird bereits verwendet. Suche dir einen anderen aus."
+
+#: actions/editapplication.php:186 actions/newapplication.php:168
#, fuzzy
msgid "Description is required."
msgstr "Beschreibung"
-#: actions/editapplication.php:191
+#: actions/editapplication.php:194
msgid "Source URL is too long."
msgstr ""
-#: actions/editapplication.php:197 actions/newapplication.php:182
+#: actions/editapplication.php:200 actions/newapplication.php:185
#, fuzzy
msgid "Source URL is not valid."
msgstr ""
"Homepage ist keine gültige URL. URL’s müssen ein Präfix wie http enthalten."
-#: actions/editapplication.php:200 actions/newapplication.php:185
+#: actions/editapplication.php:203 actions/newapplication.php:188
msgid "Organization is required."
msgstr ""
-#: actions/editapplication.php:203 actions/newapplication.php:188
+#: actions/editapplication.php:206 actions/newapplication.php:191
#, fuzzy
msgid "Organization is too long (max 255 chars)."
msgstr "Der eingegebene Aufenthaltsort ist zu lang (maximal 255 Zeichen)."
-#: actions/editapplication.php:206 actions/newapplication.php:191
+#: actions/editapplication.php:209 actions/newapplication.php:194
msgid "Organization homepage is required."
msgstr ""
-#: actions/editapplication.php:215 actions/newapplication.php:203
+#: actions/editapplication.php:218 actions/newapplication.php:206
msgid "Callback is too long."
msgstr ""
-#: actions/editapplication.php:222 actions/newapplication.php:212
+#: actions/editapplication.php:225 actions/newapplication.php:215
msgid "Callback URL is not valid."
msgstr ""
-#: actions/editapplication.php:255
+#: actions/editapplication.php:258
#, fuzzy
msgid "Could not update application."
msgstr "Konnte Gruppe nicht aktualisieren."
@@ -2112,11 +2163,11 @@ msgstr "Du musst angemeldet sein, um eine Gruppe zu erstellen."
msgid "Use this form to register a new application."
msgstr "Benutzer dieses Formular, um eine neue Gruppe zu erstellen."
-#: actions/newapplication.php:173
+#: actions/newapplication.php:176
msgid "Source URL is required."
msgstr ""
-#: actions/newapplication.php:255 actions/newapplication.php:264
+#: actions/newapplication.php:258 actions/newapplication.php:267
#, fuzzy
msgid "Could not create application."
msgstr "Konnte keinen Favoriten erstellen."
@@ -2250,29 +2301,29 @@ msgstr ""
msgid "You have not registered any applications yet."
msgstr ""
-#: actions/oauthconnectionssettings.php:71
+#: actions/oauthconnectionssettings.php:72
msgid "Connected applications"
msgstr ""
-#: actions/oauthconnectionssettings.php:87
+#: actions/oauthconnectionssettings.php:83
msgid "You have allowed the following applications to access you account."
msgstr ""
-#: actions/oauthconnectionssettings.php:170
+#: actions/oauthconnectionssettings.php:175
#, fuzzy
msgid "You are not a user of that application."
msgstr "Du bist kein Mitglied dieser Gruppe."
-#: actions/oauthconnectionssettings.php:180
+#: actions/oauthconnectionssettings.php:186
msgid "Unable to revoke access for app: "
msgstr ""
-#: actions/oauthconnectionssettings.php:192
+#: actions/oauthconnectionssettings.php:198
#, php-format
msgid "You have not authorized any applications to use your account."
msgstr ""
-#: actions/oauthconnectionssettings.php:205
+#: actions/oauthconnectionssettings.php:211
msgid "Developers can edit the registration settings for their applications "
msgstr ""
@@ -2787,36 +2838,36 @@ msgstr "Öffentliche Zeitleiste, Seite %d"
msgid "Public timeline"
msgstr "Öffentliche Zeitleiste"
-#: actions/public.php:151
+#: actions/public.php:159
msgid "Public Stream Feed (RSS 1.0)"
msgstr "Feed des öffentlichen Streams (RSS 1.0)"
-#: actions/public.php:155
+#: actions/public.php:163
msgid "Public Stream Feed (RSS 2.0)"
msgstr "Feed des öffentlichen Streams (RSS 2.0)"
-#: actions/public.php:159
+#: actions/public.php:167
msgid "Public Stream Feed (Atom)"
msgstr "Feed des öffentlichen Streams (Atom)"
-#: actions/public.php:179
+#: actions/public.php:187
#, php-format
msgid ""
"This is the public timeline for %%site.name%% but no one has posted anything "
"yet."
msgstr ""
-#: actions/public.php:182
+#: actions/public.php:190
msgid "Be the first to post!"
msgstr ""
-#: actions/public.php:186
+#: actions/public.php:194
#, php-format
msgid ""
"Why not [register an account](%%action.register%%) and be the first to post!"
msgstr ""
-#: actions/public.php:233
+#: actions/public.php:241
#, php-format
msgid ""
"This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2825,7 +2876,7 @@ msgid ""
"friends, family, and colleagues! ([Read more](%%doc.help%%))"
msgstr ""
-#: actions/public.php:238
+#: actions/public.php:246
#, php-format
msgid ""
"This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -3193,7 +3244,7 @@ msgstr ""
msgid "You already repeated that notice."
msgstr "Du hast diesen Benutzer bereits blockiert."
-#: actions/repeat.php:114 lib/noticelist.php:626
+#: actions/repeat.php:114 lib/noticelist.php:642
#, fuzzy
msgid "Repeated"
msgstr "Erstellt"
@@ -3260,6 +3311,11 @@ msgstr ""
msgid "Replies to %1$s on %2$s!"
msgstr "Antworten an %1$s auf %2$s!"
+#: actions/rsd.php:146 actions/version.php:157
+#, fuzzy
+msgid "StatusNet"
+msgstr "Status gelöscht."
+
#: actions/sandbox.php:65 actions/unsandbox.php:65
#, fuzzy
msgid "You cannot sandbox users on this site."
@@ -3306,80 +3362,85 @@ msgstr "Site-Einstellungen speichern"
msgid "You must be logged in to view an application."
msgstr "Du musst angemeldet sein, um aus einer Gruppe auszutreten."
-#: actions/showapplication.php:158
+#: actions/showapplication.php:157
#, fuzzy
msgid "Application profile"
msgstr "Nachricht hat kein Profil"
-#: actions/showapplication.php:160 lib/applicationeditform.php:180
+#: actions/showapplication.php:159 lib/applicationeditform.php:180
msgid "Icon"
msgstr ""
-#: actions/showapplication.php:170 actions/version.php:195
+#: actions/showapplication.php:169 actions/version.php:195
#: lib/applicationeditform.php:195
#, fuzzy
msgid "Name"
msgstr "Nutzername"
-#: actions/showapplication.php:179 lib/applicationeditform.php:222
+#: actions/showapplication.php:178 lib/applicationeditform.php:222
#, fuzzy
msgid "Organization"
msgstr "Seitenerstellung"
-#: actions/showapplication.php:188 actions/version.php:198
+#: actions/showapplication.php:187 actions/version.php:198
#: lib/applicationeditform.php:209 lib/groupeditform.php:172
msgid "Description"
msgstr "Beschreibung"
-#: actions/showapplication.php:193 actions/showgroup.php:429
+#: actions/showapplication.php:192 actions/showgroup.php:429
#: lib/profileaction.php:174
msgid "Statistics"
msgstr "Statistiken"
-#: actions/showapplication.php:204
+#: actions/showapplication.php:203
#, php-format
-msgid "created by %1$s - %2$s access by default - %3$d users"
+msgid "Created by %1$s - %2$s access by default - %3$d users"
msgstr ""
-#: actions/showapplication.php:214
+#: actions/showapplication.php:213
msgid "Application actions"
msgstr ""
-#: actions/showapplication.php:233
+#: actions/showapplication.php:236
msgid "Reset key & secret"
msgstr ""
-#: actions/showapplication.php:241
+#: actions/showapplication.php:261
msgid "Application info"
msgstr ""
-#: actions/showapplication.php:243
+#: actions/showapplication.php:263
msgid "Consumer key"
msgstr ""
-#: actions/showapplication.php:248
+#: actions/showapplication.php:268
msgid "Consumer secret"
msgstr ""
-#: actions/showapplication.php:253
+#: actions/showapplication.php:273
msgid "Request token URL"
msgstr ""
-#: actions/showapplication.php:258
+#: actions/showapplication.php:278
msgid "Access token URL"
msgstr ""
-#: actions/showapplication.php:263
+#: actions/showapplication.php:283
#, fuzzy
msgid "Authorize URL"
msgstr "Autor"
-#: actions/showapplication.php:268
+#: actions/showapplication.php:288
msgid ""
"Note: We support HMAC-SHA1 signatures. We do not support the plaintext "
"signature method."
msgstr ""
+#: actions/showapplication.php:309
+#, fuzzy
+msgid "Are you sure you want to reset your consumer key and secret?"
+msgstr "Bist du sicher, dass du diese Nachricht löschen möchtest?"
+
#: actions/showfavorites.php:79
#, fuzzy, php-format
msgid "%1$s's favorite notices, page %2$d"
@@ -3583,20 +3644,20 @@ msgstr "Feed der Nachrichten von %s (Atom)"
msgid "FOAF for %s"
msgstr "FOAF von %s"
-#: actions/showstream.php:191
+#: actions/showstream.php:200
#, fuzzy, php-format
msgid "This is the timeline for %1$s but %2$s hasn't posted anything yet."
msgstr ""
"Dies ist die Zeitleiste für %s und Freunde aber bisher hat niemand etwas "
"gepostet."
-#: actions/showstream.php:196
+#: actions/showstream.php:205
msgid ""
"Seen anything interesting recently? You haven't posted any notices yet, now "
"would be a good time to start :)"
msgstr ""
-#: actions/showstream.php:198
+#: actions/showstream.php:207
#, fuzzy, php-format
msgid ""
"You can try to nudge %1$s or [post something to his or her attention](%%%%"
@@ -3606,7 +3667,7 @@ msgstr ""
"posten](%%%%action.newnotice%%%%?status_textarea=%s) um seine Aufmerksamkeit "
"zu erregen."
-#: actions/showstream.php:234
+#: actions/showstream.php:243
#, php-format
msgid ""
"**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3615,7 +3676,7 @@ msgid ""
"follow **%s**'s notices and many more! ([Read more](%%%%doc.help%%%%))"
msgstr ""
-#: actions/showstream.php:239
+#: actions/showstream.php:248
#, php-format
msgid ""
"**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3626,7 +3687,7 @@ msgstr ""
"(http://de.wikipedia.org/wiki/Mikro-blogging) basierend auf der Freien "
"Software [StatusNet](http://status.net/). "
-#: actions/showstream.php:296
+#: actions/showstream.php:305
#, fuzzy, php-format
msgid "Repeat of %s"
msgstr "Antworten an %s"
@@ -4317,11 +4378,6 @@ msgid ""
"Inc. and contributors."
msgstr ""
-#: actions/version.php:157
-#, fuzzy
-msgid "StatusNet"
-msgstr "Status gelöscht."
-
#: actions/version.php:161
msgid "Contributors"
msgstr ""
@@ -4451,22 +4507,22 @@ msgstr ""
msgid "Problem saving notice."
msgstr "Problem bei Speichern der Nachricht."
-#: classes/Notice.php:790
+#: classes/Notice.php:788
#, fuzzy
msgid "Problem saving group inbox."
msgstr "Problem bei Speichern der Nachricht."
-#: classes/Notice.php:850
+#: classes/Notice.php:848
#, php-format
msgid "DB error inserting reply: %s"
msgstr "Datenbankfehler beim Einfügen der Antwort: %s"
-#: classes/Notice.php:1233
+#: classes/Notice.php:1231
#, fuzzy, php-format
msgid "RT @%1$s %2$s"
msgstr "%1$s (%2$s)"
-#: classes/User.php:382
+#: classes/User.php:385
#, php-format
msgid "Welcome to %1$s, @%2$s!"
msgstr "Herzlich willkommen bei %1$s, @%2$s!"
@@ -4753,11 +4809,11 @@ msgstr "SMS-Konfiguration"
msgid "Sessions configuration"
msgstr "SMS-Konfiguration"
-#: lib/apiauth.php:99
+#: lib/apiauth.php:95
msgid "API resource requires read-write access, but you only have read access."
msgstr ""
-#: lib/apiauth.php:279
+#: lib/apiauth.php:273
#, php-format
msgid "Failed API auth attempt, nickname = %1$s, proxy = %2$s, ip = %3$s"
msgstr ""
@@ -5122,19 +5178,19 @@ msgid ""
"tracking - not yet implemented.\n"
msgstr ""
-#: lib/common.php:131
+#: lib/common.php:135
msgid "No configuration file found. "
msgstr "Keine Konfigurationsdatei gefunden."
-#: lib/common.php:132
+#: lib/common.php:136
msgid "I looked for configuration files in the following places: "
msgstr "Ich habe an folgenden Stellen nach Konfigurationsdateien gesucht: "
-#: lib/common.php:134
+#: lib/common.php:138
msgid "You may wish to run the installer to fix this."
msgstr ""
-#: lib/common.php:135
+#: lib/common.php:139
#, fuzzy
msgid "Go to the installer."
msgstr "Auf der Seite anmelden"
@@ -5768,24 +5824,24 @@ msgstr ""
msgid "at"
msgstr ""
-#: lib/noticelist.php:531
+#: lib/noticelist.php:547
msgid "in context"
msgstr "im Zusammenhang"
-#: lib/noticelist.php:556
+#: lib/noticelist.php:572
#, fuzzy
msgid "Repeated by"
msgstr "Erstellt"
-#: lib/noticelist.php:582
+#: lib/noticelist.php:598
msgid "Reply to this notice"
msgstr "Auf diese Nachricht antworten"
-#: lib/noticelist.php:583
+#: lib/noticelist.php:599
msgid "Reply"
msgstr "Antworten"
-#: lib/noticelist.php:625
+#: lib/noticelist.php:641
#, fuzzy
msgid "Notice repeated"
msgstr "Nachricht gelöscht."
@@ -5933,6 +5989,10 @@ msgstr "Auf diese Nachricht antworten"
msgid "Repeat this notice"
msgstr "Auf diese Nachricht antworten"
+#: lib/router.php:665
+msgid "No single user defined for single-user mode."
+msgstr ""
+
#: lib/sandboxform.php:67
#, fuzzy
msgid "Sandbox"
@@ -6107,47 +6167,47 @@ msgstr "Nachricht"
msgid "Moderate"
msgstr ""
-#: lib/util.php:868
+#: lib/util.php:867
msgid "a few seconds ago"
msgstr "vor wenigen Sekunden"
-#: lib/util.php:870
+#: lib/util.php:869
msgid "about a minute ago"
msgstr "vor einer Minute"
-#: lib/util.php:872
+#: lib/util.php:871
#, php-format
msgid "about %d minutes ago"
msgstr "vor %d Minuten"
-#: lib/util.php:874
+#: lib/util.php:873
msgid "about an hour ago"
msgstr "vor einer Stunde"
-#: lib/util.php:876
+#: lib/util.php:875
#, php-format
msgid "about %d hours ago"
msgstr "vor %d Stunden"
-#: lib/util.php:878
+#: lib/util.php:877
msgid "about a day ago"
msgstr "vor einem Tag"
-#: lib/util.php:880
+#: lib/util.php:879
#, php-format
msgid "about %d days ago"
msgstr "vor %d Tagen"
-#: lib/util.php:882
+#: lib/util.php:881
msgid "about a month ago"
msgstr "vor einem Monat"
-#: lib/util.php:884
+#: lib/util.php:883
#, php-format
msgid "about %d months ago"
msgstr "vor %d Monaten"
-#: lib/util.php:886
+#: lib/util.php:885
msgid "about a year ago"
msgstr "vor einem Jahr"
diff --git a/locale/el/LC_MESSAGES/statusnet.po b/locale/el/LC_MESSAGES/statusnet.po
index 29420e44e..ae1aaed7d 100644
--- a/locale/el/LC_MESSAGES/statusnet.po
+++ b/locale/el/LC_MESSAGES/statusnet.po
@@ -9,12 +9,12 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-01-30 23:41+0000\n"
-"PO-Revision-Date: 2010-01-30 23:41:33+0000\n"
+"POT-Creation-Date: 2010-02-04 10:31+0000\n"
+"PO-Revision-Date: 2010-02-04 10:32:22+0000\n"
"Language-Team: Greek\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.16alpha (r61734); Translate extension (2010-01-16)\n"
+"X-Generator: MediaWiki 1.16alpha (r61969); Translate extension (2010-01-16)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: el\n"
"X-Message-Group: out-statusnet\n"
@@ -96,7 +96,7 @@ msgstr "Δεν υπάρχει τέτοια σελίδα"
#: actions/favoritesrss.php:74 actions/foaf.php:40 actions/foaf.php:58
#: actions/microsummary.php:62 actions/newmessage.php:116 actions/otp.php:76
#: actions/remotesubscribe.php:145 actions/remotesubscribe.php:154
-#: actions/replies.php:73 actions/repliesrss.php:38
+#: actions/replies.php:73 actions/repliesrss.php:38 actions/rsd.php:116
#: actions/showfavorites.php:105 actions/userbyid.php:74
#: actions/usergroups.php:91 actions/userrss.php:38 actions/xrds.php:71
#: lib/command.php:163 lib/command.php:302 lib/command.php:355
@@ -153,7 +153,7 @@ msgid ""
"his or her attention](%%%%action.newnotice%%%%?status_textarea=%3$s)."
msgstr ""
-#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:202
+#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:211
#, php-format
msgid ""
"Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
@@ -384,8 +384,8 @@ msgstr "Το ψευδώνυμο είναι ήδη σε χρήση. Δοκιμά
msgid "Not a valid nickname."
msgstr ""
-#: actions/apigroupcreate.php:196 actions/editapplication.php:212
-#: actions/editgroup.php:195 actions/newapplication.php:200
+#: actions/apigroupcreate.php:196 actions/editapplication.php:215
+#: actions/editgroup.php:195 actions/newapplication.php:203
#: actions/newgroup.php:139 actions/profilesettings.php:222
#: actions/register.php:217
msgid "Homepage is not a valid URL."
@@ -397,8 +397,8 @@ msgstr "Η αρχική σελίδα δεν είναι έγκυρο URL."
msgid "Full name is too long (max 255 chars)."
msgstr "Το ονοματεπώνυμο είναι πολύ μεγάλο (μέγιστο 255 χαρακτ.)."
-#: actions/apigroupcreate.php:213 actions/editapplication.php:187
-#: actions/newapplication.php:169
+#: actions/apigroupcreate.php:213 actions/editapplication.php:190
+#: actions/newapplication.php:172
#, php-format
msgid "Description is too long (max %d chars)."
msgstr "Η περιγραφή είναι πολύ μεγάλη (μέγιστο %d χαρακτ.)."
@@ -475,18 +475,23 @@ msgstr ""
msgid "groups on %s"
msgstr "ομάδες του χρήστη %s"
-#: actions/apioauthauthorize.php:108 actions/apioauthauthorize.php:114
-msgid "Bad request."
+#: actions/apioauthauthorize.php:101
+msgid "No oauth_token parameter provided."
msgstr ""
-#: actions/apioauthauthorize.php:134 actions/avatarsettings.php:268
+#: actions/apioauthauthorize.php:106
+#, fuzzy
+msgid "Invalid token."
+msgstr "Μήνυμα"
+
+#: actions/apioauthauthorize.php:123 actions/avatarsettings.php:268
#: actions/deletenotice.php:157 actions/disfavor.php:74
-#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:50
+#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:54
#: actions/groupblock.php:66 actions/grouplogo.php:309
#: actions/groupunblock.php:66 actions/imsettings.php:206
#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
-#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:139
+#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:135
#: actions/othersettings.php:145 actions/passwordsettings.php:138
#: actions/profilesettings.php:194 actions/recoverpassword.php:337
#: actions/register.php:165 actions/remotesubscribe.php:77
@@ -497,74 +502,82 @@ msgstr ""
msgid "There was a problem with your session token. Try again, please."
msgstr ""
-#: actions/apioauthauthorize.php:146
+#: actions/apioauthauthorize.php:135
msgid "Invalid nickname / password!"
msgstr ""
-#: actions/apioauthauthorize.php:170
+#: actions/apioauthauthorize.php:159
#, fuzzy
msgid "Database error deleting OAuth application user."
msgstr "Σφάλμα στη βάση δεδομένων κατά την εισαγωγή hashtag: %s"
-#: actions/apioauthauthorize.php:196
+#: actions/apioauthauthorize.php:185
#, fuzzy
msgid "Database error inserting OAuth application user."
msgstr "Σφάλμα στη βάση δεδομένων κατά την εισαγωγή hashtag: %s"
-#: actions/apioauthauthorize.php:231
+#: actions/apioauthauthorize.php:214
#, php-format
msgid ""
"The request token %s has been authorized. Please exchange it for an access "
"token."
msgstr ""
-#: actions/apioauthauthorize.php:241
+#: actions/apioauthauthorize.php:227
#, php-format
-msgid "The request token %s has been denied."
+msgid "The request token %s has been denied and revoked."
msgstr ""
-#: actions/apioauthauthorize.php:246 actions/avatarsettings.php:281
+#: actions/apioauthauthorize.php:232 actions/avatarsettings.php:281
#: actions/designadminpanel.php:103 actions/editapplication.php:139
#: actions/emailsettings.php:256 actions/grouplogo.php:319
#: actions/imsettings.php:220 actions/newapplication.php:121
-#: actions/oauthconnectionssettings.php:151 actions/recoverpassword.php:44
+#: actions/oauthconnectionssettings.php:147 actions/recoverpassword.php:44
#: actions/smssettings.php:248 lib/designsettings.php:304
msgid "Unexpected form submission."
msgstr ""
-#: actions/apioauthauthorize.php:273
+#: actions/apioauthauthorize.php:259
msgid "An application would like to connect to your account"
msgstr ""
-#: actions/apioauthauthorize.php:290
+#: actions/apioauthauthorize.php:276
msgid "Allow or deny access"
msgstr ""
-#: actions/apioauthauthorize.php:320 lib/action.php:441
+#: actions/apioauthauthorize.php:292
+#, php-format
+msgid ""
+"The application <strong>%1$s</strong> by <strong>%2$s</strong> would like "
+"the ability to <strong>%3$s</strong> your %4$s account data. You should only "
+"give access to your %4$s account to third parties you trust."
+msgstr ""
+
+#: actions/apioauthauthorize.php:310 lib/action.php:441
msgid "Account"
msgstr "Λογαριασμός"
-#: actions/apioauthauthorize.php:323 actions/login.php:230
+#: actions/apioauthauthorize.php:313 actions/login.php:230
#: actions/profilesettings.php:106 actions/register.php:424
#: actions/showgroup.php:236 actions/tagother.php:94 lib/groupeditform.php:152
#: lib/userprofile.php:131
msgid "Nickname"
msgstr "Ψευδώνυμο"
-#: actions/apioauthauthorize.php:326 actions/login.php:233
+#: actions/apioauthauthorize.php:316 actions/login.php:233
#: actions/register.php:429 lib/accountsettingsaction.php:116
msgid "Password"
msgstr "Κωδικός"
-#: actions/apioauthauthorize.php:338
+#: actions/apioauthauthorize.php:328
msgid "Deny"
msgstr ""
-#: actions/apioauthauthorize.php:344
+#: actions/apioauthauthorize.php:334
msgid "Allow"
msgstr ""
-#: actions/apioauthauthorize.php:361
+#: actions/apioauthauthorize.php:351
msgid "Allow or deny access to your account information."
msgstr ""
@@ -735,8 +748,8 @@ msgstr ""
msgid "Preview"
msgstr ""
-#: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:608
+#: actions/avatarsettings.php:149 actions/showapplication.php:252
+#: lib/deleteuserform.php:66 lib/noticelist.php:624
msgid "Delete"
msgstr "Διαγραφή"
@@ -785,8 +798,9 @@ msgid ""
"will not be notified of any @-replies from them."
msgstr ""
-#: actions/block.php:143 actions/deletenotice.php:145
-#: actions/deleteuser.php:147 actions/groupblock.php:178
+#: actions/block.php:143 actions/deleteapplication.php:153
+#: actions/deletenotice.php:145 actions/deleteuser.php:147
+#: actions/groupblock.php:178
msgid "No"
msgstr "Όχι"
@@ -795,9 +809,9 @@ msgstr "Όχι"
msgid "Do not block this user"
msgstr "Αδυναμία διαγραφής αυτού του μηνύματος."
-#: actions/block.php:144 actions/deletenotice.php:146
-#: actions/deleteuser.php:148 actions/groupblock.php:179
-#: lib/repeatform.php:132
+#: actions/block.php:144 actions/deleteapplication.php:158
+#: actions/deletenotice.php:146 actions/deleteuser.php:148
+#: actions/groupblock.php:179 lib/repeatform.php:132
msgid "Yes"
msgstr "Ναι"
@@ -903,6 +917,50 @@ msgstr "Συζήτηση"
msgid "Notices"
msgstr ""
+#: actions/deleteapplication.php:63
+#, fuzzy
+msgid "You must be logged in to delete an application."
+msgstr "Αδύνατη η αποθήκευση του προφίλ."
+
+#: actions/deleteapplication.php:71
+#, fuzzy
+msgid "Application not found."
+msgstr "Ο κωδικός επιβεβαίωσης δεν βρέθηκε."
+
+#: actions/deleteapplication.php:78 actions/editapplication.php:77
+#: actions/showapplication.php:94
+#, fuzzy
+msgid "You are not the owner of this application."
+msgstr "Ομάδες με τα περισσότερα μέλη"
+
+#: actions/deleteapplication.php:102 actions/editapplication.php:127
+#: actions/newapplication.php:110 actions/showapplication.php:118
+#: lib/action.php:1195
+msgid "There was a problem with your session token."
+msgstr ""
+
+#: actions/deleteapplication.php:123 actions/deleteapplication.php:147
+#, fuzzy
+msgid "Delete application"
+msgstr "Δεν υπάρχει τέτοιο σελίδα."
+
+#: actions/deleteapplication.php:149
+msgid ""
+"Are you sure you want to delete this application? This will clear all data "
+"about the application from the database, including all existing user "
+"connections."
+msgstr ""
+
+#: actions/deleteapplication.php:156
+#, fuzzy
+msgid "Do not delete this application"
+msgstr "Αδυναμία διαγραφής αυτού του μηνύματος."
+
+#: actions/deleteapplication.php:160
+#, fuzzy
+msgid "Delete this application"
+msgstr "Περιγράψτε την ομάδα ή το θέμα"
+
#: actions/deletenotice.php:67 actions/disfavor.php:61 actions/favor.php:62
#: actions/groupblock.php:61 actions/groupunblock.php:61 actions/logout.php:69
#: actions/makeadmin.php:61 actions/newmessage.php:87 actions/newnotice.php:89
@@ -937,7 +995,7 @@ msgstr "Είσαι σίγουρος ότι θες να διαγράψεις αυ
msgid "Do not delete this notice"
msgstr "Αδυναμία διαγραφής αυτού του μηνύματος."
-#: actions/deletenotice.php:146 lib/noticelist.php:608
+#: actions/deletenotice.php:146 lib/noticelist.php:624
msgid "Delete this notice"
msgstr ""
@@ -1081,7 +1139,7 @@ msgstr ""
msgid "Add to favorites"
msgstr ""
-#: actions/doc.php:155
+#: actions/doc.php:158
#, php-format
msgid "No such document \"%s\""
msgstr ""
@@ -1095,22 +1153,12 @@ msgstr "Δεν υπάρχει τέτοιο σελίδα."
msgid "You must be logged in to edit an application."
msgstr ""
-#: actions/editapplication.php:77 actions/showapplication.php:94
-#, fuzzy
-msgid "You are not the owner of this application."
-msgstr "Ομάδες με τα περισσότερα μέλη"
-
-#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:163
+#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:166
#: actions/showapplication.php:87
#, fuzzy
msgid "No such application."
msgstr "Δεν υπάρχει τέτοιο σελίδα."
-#: actions/editapplication.php:127 actions/newapplication.php:110
-#: actions/showapplication.php:118 lib/action.php:1195
-msgid "There was a problem with your session token."
-msgstr ""
-
#: actions/editapplication.php:161
msgid "Use this form to edit your application."
msgstr ""
@@ -1119,47 +1167,52 @@ msgstr ""
msgid "Name is required."
msgstr ""
-#: actions/editapplication.php:180 actions/newapplication.php:162
+#: actions/editapplication.php:180 actions/newapplication.php:165
#, fuzzy
msgid "Name is too long (max 255 chars)."
msgstr "Το ονοματεπώνυμο είναι πολύ μεγάλο (μέγιστο 255 χαρακτ.)."
-#: actions/editapplication.php:183 actions/newapplication.php:165
+#: actions/editapplication.php:183 actions/newapplication.php:162
+#, fuzzy
+msgid "Name already in use. Try another one."
+msgstr "Το ψευδώνυμο είναι ήδη σε χρήση. Δοκιμάστε κάποιο άλλο."
+
+#: actions/editapplication.php:186 actions/newapplication.php:168
#, fuzzy
msgid "Description is required."
msgstr "Περιγραφή"
-#: actions/editapplication.php:191
+#: actions/editapplication.php:194
msgid "Source URL is too long."
msgstr ""
-#: actions/editapplication.php:197 actions/newapplication.php:182
+#: actions/editapplication.php:200 actions/newapplication.php:185
#, fuzzy
msgid "Source URL is not valid."
msgstr "Η αρχική σελίδα δεν είναι έγκυρο URL."
-#: actions/editapplication.php:200 actions/newapplication.php:185
+#: actions/editapplication.php:203 actions/newapplication.php:188
msgid "Organization is required."
msgstr ""
-#: actions/editapplication.php:203 actions/newapplication.php:188
+#: actions/editapplication.php:206 actions/newapplication.php:191
#, fuzzy
msgid "Organization is too long (max 255 chars)."
msgstr "Η τοποθεσία είναι πολύ μεγάλη (μέγιστο 255 χαρακτ.)."
-#: actions/editapplication.php:206 actions/newapplication.php:191
+#: actions/editapplication.php:209 actions/newapplication.php:194
msgid "Organization homepage is required."
msgstr ""
-#: actions/editapplication.php:215 actions/newapplication.php:203
+#: actions/editapplication.php:218 actions/newapplication.php:206
msgid "Callback is too long."
msgstr ""
-#: actions/editapplication.php:222 actions/newapplication.php:212
+#: actions/editapplication.php:225 actions/newapplication.php:215
msgid "Callback URL is not valid."
msgstr ""
-#: actions/editapplication.php:255
+#: actions/editapplication.php:258
#, fuzzy
msgid "Could not update application."
msgstr "Αδύνατη η αποθήκευση του προφίλ."
@@ -2048,11 +2101,11 @@ msgstr ""
msgid "Use this form to register a new application."
msgstr ""
-#: actions/newapplication.php:173
+#: actions/newapplication.php:176
msgid "Source URL is required."
msgstr ""
-#: actions/newapplication.php:255 actions/newapplication.php:264
+#: actions/newapplication.php:258 actions/newapplication.php:267
#, fuzzy
msgid "Could not create application."
msgstr "Αδύνατη η αποθήκευση του προφίλ."
@@ -2178,29 +2231,29 @@ msgstr ""
msgid "You have not registered any applications yet."
msgstr ""
-#: actions/oauthconnectionssettings.php:71
+#: actions/oauthconnectionssettings.php:72
msgid "Connected applications"
msgstr ""
-#: actions/oauthconnectionssettings.php:87
+#: actions/oauthconnectionssettings.php:83
msgid "You have allowed the following applications to access you account."
msgstr ""
-#: actions/oauthconnectionssettings.php:170
+#: actions/oauthconnectionssettings.php:175
#, fuzzy
msgid "You are not a user of that application."
msgstr "Δεν είστε μέλος καμίας ομάδας."
-#: actions/oauthconnectionssettings.php:180
+#: actions/oauthconnectionssettings.php:186
msgid "Unable to revoke access for app: "
msgstr ""
-#: actions/oauthconnectionssettings.php:192
+#: actions/oauthconnectionssettings.php:198
#, php-format
msgid "You have not authorized any applications to use your account."
msgstr ""
-#: actions/oauthconnectionssettings.php:205
+#: actions/oauthconnectionssettings.php:211
msgid "Developers can edit the registration settings for their applications "
msgstr ""
@@ -2713,37 +2766,37 @@ msgstr ""
msgid "Public timeline"
msgstr ""
-#: actions/public.php:151
+#: actions/public.php:159
msgid "Public Stream Feed (RSS 1.0)"
msgstr ""
-#: actions/public.php:155
+#: actions/public.php:163
msgid "Public Stream Feed (RSS 2.0)"
msgstr ""
-#: actions/public.php:159
+#: actions/public.php:167
#, fuzzy
msgid "Public Stream Feed (Atom)"
msgstr "Δημόσια ροή %s"
-#: actions/public.php:179
+#: actions/public.php:187
#, php-format
msgid ""
"This is the public timeline for %%site.name%% but no one has posted anything "
"yet."
msgstr ""
-#: actions/public.php:182
+#: actions/public.php:190
msgid "Be the first to post!"
msgstr ""
-#: actions/public.php:186
+#: actions/public.php:194
#, php-format
msgid ""
"Why not [register an account](%%action.register%%) and be the first to post!"
msgstr ""
-#: actions/public.php:233
+#: actions/public.php:241
#, php-format
msgid ""
"This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2752,7 +2805,7 @@ msgid ""
"friends, family, and colleagues! ([Read more](%%doc.help%%))"
msgstr ""
-#: actions/public.php:238
+#: actions/public.php:246
#, php-format
msgid ""
"This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -3107,7 +3160,7 @@ msgstr ""
msgid "You already repeated that notice."
msgstr "Αδυναμία διαγραφής αυτού του μηνύματος."
-#: actions/repeat.php:114 lib/noticelist.php:626
+#: actions/repeat.php:114 lib/noticelist.php:642
#, fuzzy
msgid "Repeated"
msgstr "Δημιουργία"
@@ -3169,6 +3222,11 @@ msgstr ""
msgid "Replies to %1$s on %2$s!"
msgstr ""
+#: actions/rsd.php:146 actions/version.php:157
+#, fuzzy
+msgid "StatusNet"
+msgstr "Η κατάσταση διαγράφεται."
+
#: actions/sandbox.php:65 actions/unsandbox.php:65
msgid "You cannot sandbox users on this site."
msgstr ""
@@ -3212,78 +3270,83 @@ msgstr "Ρυθμίσεις OpenID"
msgid "You must be logged in to view an application."
msgstr ""
-#: actions/showapplication.php:158
+#: actions/showapplication.php:157
msgid "Application profile"
msgstr ""
-#: actions/showapplication.php:160 lib/applicationeditform.php:180
+#: actions/showapplication.php:159 lib/applicationeditform.php:180
msgid "Icon"
msgstr ""
-#: actions/showapplication.php:170 actions/version.php:195
+#: actions/showapplication.php:169 actions/version.php:195
#: lib/applicationeditform.php:195
#, fuzzy
msgid "Name"
msgstr "Ψευδώνυμο"
-#: actions/showapplication.php:179 lib/applicationeditform.php:222
+#: actions/showapplication.php:178 lib/applicationeditform.php:222
#, fuzzy
msgid "Organization"
msgstr "Προσκλήσεις"
-#: actions/showapplication.php:188 actions/version.php:198
+#: actions/showapplication.php:187 actions/version.php:198
#: lib/applicationeditform.php:209 lib/groupeditform.php:172
msgid "Description"
msgstr "Περιγραφή"
-#: actions/showapplication.php:193 actions/showgroup.php:429
+#: actions/showapplication.php:192 actions/showgroup.php:429
#: lib/profileaction.php:174
msgid "Statistics"
msgstr ""
-#: actions/showapplication.php:204
+#: actions/showapplication.php:203
#, php-format
-msgid "created by %1$s - %2$s access by default - %3$d users"
+msgid "Created by %1$s - %2$s access by default - %3$d users"
msgstr ""
-#: actions/showapplication.php:214
+#: actions/showapplication.php:213
msgid "Application actions"
msgstr ""
-#: actions/showapplication.php:233
+#: actions/showapplication.php:236
msgid "Reset key & secret"
msgstr ""
-#: actions/showapplication.php:241
+#: actions/showapplication.php:261
msgid "Application info"
msgstr ""
-#: actions/showapplication.php:243
+#: actions/showapplication.php:263
msgid "Consumer key"
msgstr ""
-#: actions/showapplication.php:248
+#: actions/showapplication.php:268
msgid "Consumer secret"
msgstr ""
-#: actions/showapplication.php:253
+#: actions/showapplication.php:273
msgid "Request token URL"
msgstr ""
-#: actions/showapplication.php:258
+#: actions/showapplication.php:278
msgid "Access token URL"
msgstr ""
-#: actions/showapplication.php:263
+#: actions/showapplication.php:283
msgid "Authorize URL"
msgstr ""
-#: actions/showapplication.php:268
+#: actions/showapplication.php:288
msgid ""
"Note: We support HMAC-SHA1 signatures. We do not support the plaintext "
"signature method."
msgstr ""
+#: actions/showapplication.php:309
+#, fuzzy
+msgid "Are you sure you want to reset your consumer key and secret?"
+msgstr "Είσαι σίγουρος ότι θες να διαγράψεις αυτό το μήνυμα;"
+
#: actions/showfavorites.php:79
#, fuzzy, php-format
msgid "%1$s's favorite notices, page %2$d"
@@ -3485,25 +3548,25 @@ msgstr ""
msgid "FOAF for %s"
msgstr ""
-#: actions/showstream.php:191
+#: actions/showstream.php:200
#, php-format
msgid "This is the timeline for %1$s but %2$s hasn't posted anything yet."
msgstr ""
-#: actions/showstream.php:196
+#: actions/showstream.php:205
msgid ""
"Seen anything interesting recently? You haven't posted any notices yet, now "
"would be a good time to start :)"
msgstr ""
-#: actions/showstream.php:198
+#: actions/showstream.php:207
#, php-format
msgid ""
"You can try to nudge %1$s or [post something to his or her attention](%%%%"
"action.newnotice%%%%?status_textarea=%2$s)."
msgstr ""
-#: actions/showstream.php:234
+#: actions/showstream.php:243
#, php-format
msgid ""
"**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3512,7 +3575,7 @@ msgid ""
"follow **%s**'s notices and many more! ([Read more](%%%%doc.help%%%%))"
msgstr ""
-#: actions/showstream.php:239
+#: actions/showstream.php:248
#, php-format
msgid ""
"**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3520,7 +3583,7 @@ msgid ""
"[StatusNet](http://status.net/) tool. "
msgstr ""
-#: actions/showstream.php:296
+#: actions/showstream.php:305
#, php-format
msgid "Repeat of %s"
msgstr ""
@@ -4176,11 +4239,6 @@ msgid ""
"Inc. and contributors."
msgstr ""
-#: actions/version.php:157
-#, fuzzy
-msgid "StatusNet"
-msgstr "Η κατάσταση διαγράφεται."
-
#: actions/version.php:161
msgid "Contributors"
msgstr ""
@@ -4302,21 +4360,21 @@ msgstr ""
msgid "Problem saving notice."
msgstr ""
-#: classes/Notice.php:790
+#: classes/Notice.php:788
msgid "Problem saving group inbox."
msgstr ""
-#: classes/Notice.php:850
+#: classes/Notice.php:848
#, php-format
msgid "DB error inserting reply: %s"
msgstr "Σφάλμα βάσης δεδομένων κατά την εισαγωγή απάντησης: %s"
-#: classes/Notice.php:1233
+#: classes/Notice.php:1231
#, php-format
msgid "RT @%1$s %2$s"
msgstr ""
-#: classes/User.php:382
+#: classes/User.php:385
#, php-format
msgid "Welcome to %1$s, @%2$s!"
msgstr ""
@@ -4596,11 +4654,11 @@ msgstr "Επιβεβαίωση διεύθυνσης email"
msgid "Sessions configuration"
msgstr "Επιβεβαίωση διεύθυνσης email"
-#: lib/apiauth.php:99
+#: lib/apiauth.php:95
msgid "API resource requires read-write access, but you only have read access."
msgstr ""
-#: lib/apiauth.php:279
+#: lib/apiauth.php:273
#, php-format
msgid "Failed API auth attempt, nickname = %1$s, proxy = %2$s, ip = %3$s"
msgstr ""
@@ -4964,20 +5022,20 @@ msgid ""
"tracking - not yet implemented.\n"
msgstr ""
-#: lib/common.php:131
+#: lib/common.php:135
#, fuzzy
msgid "No configuration file found. "
msgstr "Ο κωδικός επιβεβαίωσης δεν βρέθηκε."
-#: lib/common.php:132
+#: lib/common.php:136
msgid "I looked for configuration files in the following places: "
msgstr ""
-#: lib/common.php:134
+#: lib/common.php:138
msgid "You may wish to run the installer to fix this."
msgstr ""
-#: lib/common.php:135
+#: lib/common.php:139
msgid "Go to the installer."
msgstr ""
@@ -5536,23 +5594,23 @@ msgstr ""
msgid "at"
msgstr ""
-#: lib/noticelist.php:531
+#: lib/noticelist.php:547
msgid "in context"
msgstr ""
-#: lib/noticelist.php:556
+#: lib/noticelist.php:572
msgid "Repeated by"
msgstr "Επαναλαμβάνεται από"
-#: lib/noticelist.php:582
+#: lib/noticelist.php:598
msgid "Reply to this notice"
msgstr ""
-#: lib/noticelist.php:583
+#: lib/noticelist.php:599
msgid "Reply"
msgstr ""
-#: lib/noticelist.php:625
+#: lib/noticelist.php:641
#, fuzzy
msgid "Notice repeated"
msgstr "Ρυθμίσεις OpenID"
@@ -5697,6 +5755,10 @@ msgstr "Αδυναμία διαγραφής αυτού του μηνύματος
msgid "Repeat this notice"
msgstr "Αδυναμία διαγραφής αυτού του μηνύματος."
+#: lib/router.php:665
+msgid "No single user defined for single-user mode."
+msgstr ""
+
#: lib/sandboxform.php:67
msgid "Sandbox"
msgstr ""
@@ -5868,47 +5930,47 @@ msgstr "Μήνυμα"
msgid "Moderate"
msgstr ""
-#: lib/util.php:868
+#: lib/util.php:867
msgid "a few seconds ago"
msgstr ""
-#: lib/util.php:870
+#: lib/util.php:869
msgid "about a minute ago"
msgstr ""
-#: lib/util.php:872
+#: lib/util.php:871
#, php-format
msgid "about %d minutes ago"
msgstr ""
-#: lib/util.php:874
+#: lib/util.php:873
msgid "about an hour ago"
msgstr ""
-#: lib/util.php:876
+#: lib/util.php:875
#, php-format
msgid "about %d hours ago"
msgstr ""
-#: lib/util.php:878
+#: lib/util.php:877
msgid "about a day ago"
msgstr ""
-#: lib/util.php:880
+#: lib/util.php:879
#, php-format
msgid "about %d days ago"
msgstr ""
-#: lib/util.php:882
+#: lib/util.php:881
msgid "about a month ago"
msgstr ""
-#: lib/util.php:884
+#: lib/util.php:883
#, php-format
msgid "about %d months ago"
msgstr ""
-#: lib/util.php:886
+#: lib/util.php:885
msgid "about a year ago"
msgstr ""
diff --git a/locale/en_GB/LC_MESSAGES/statusnet.po b/locale/en_GB/LC_MESSAGES/statusnet.po
index c3d5b7b7b..3c4095d0d 100644
--- a/locale/en_GB/LC_MESSAGES/statusnet.po
+++ b/locale/en_GB/LC_MESSAGES/statusnet.po
@@ -10,12 +10,12 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-01-30 23:41+0000\n"
-"PO-Revision-Date: 2010-01-30 23:41:36+0000\n"
+"POT-Creation-Date: 2010-02-04 10:31+0000\n"
+"PO-Revision-Date: 2010-02-04 10:32:26+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 (r61734); Translate extension (2010-01-16)\n"
+"X-Generator: MediaWiki 1.16alpha (r61969); Translate extension (2010-01-16)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: en-gb\n"
"X-Message-Group: out-statusnet\n"
@@ -26,14 +26,12 @@ msgid "Access"
msgstr "Access"
#: actions/accessadminpanel.php:65
-#, fuzzy
msgid "Site access settings"
-msgstr "Save site settings"
+msgstr "Site access settings"
#: actions/accessadminpanel.php:158
-#, fuzzy
msgid "Registration"
-msgstr "Register"
+msgstr "Registration"
#: actions/accessadminpanel.php:161
msgid "Private"
@@ -41,7 +39,7 @@ msgstr "Private"
#: actions/accessadminpanel.php:163
msgid "Prohibit anonymous users (not logged in) from viewing site?"
-msgstr ""
+msgstr "Prohibit anonymous users (not logged in) from viewing site?"
#: actions/accessadminpanel.php:167
msgid "Invite only"
@@ -49,7 +47,7 @@ msgstr "Invite only"
#: actions/accessadminpanel.php:169
msgid "Make registration invitation only."
-msgstr ""
+msgstr "Make registration invitation only."
#: actions/accessadminpanel.php:173
msgid "Closed"
@@ -57,7 +55,7 @@ msgstr "Closed"
#: actions/accessadminpanel.php:175
msgid "Disable new registrations."
-msgstr ""
+msgstr "Disable new registrations."
#: actions/accessadminpanel.php:189 actions/designadminpanel.php:586
#: actions/emailsettings.php:195 actions/imsettings.php:163
@@ -72,9 +70,8 @@ msgid "Save"
msgstr "Save"
#: actions/accessadminpanel.php:189
-#, fuzzy
msgid "Save access settings"
-msgstr "Save site settings"
+msgstr "Save access settings"
#: actions/all.php:63 actions/public.php:97 actions/replies.php:92
#: actions/showfavorites.php:137 actions/tag.php:51
@@ -97,7 +94,7 @@ msgstr "No such page"
#: actions/favoritesrss.php:74 actions/foaf.php:40 actions/foaf.php:58
#: actions/microsummary.php:62 actions/newmessage.php:116 actions/otp.php:76
#: actions/remotesubscribe.php:145 actions/remotesubscribe.php:154
-#: actions/replies.php:73 actions/repliesrss.php:38
+#: actions/replies.php:73 actions/repliesrss.php:38 actions/rsd.php:116
#: actions/showfavorites.php:105 actions/userbyid.php:74
#: actions/usergroups.php:91 actions/userrss.php:38 actions/xrds.php:71
#: lib/command.php:163 lib/command.php:302 lib/command.php:355
@@ -159,7 +156,7 @@ msgstr ""
"You can try to [nudge %1$s](../%2$s) from his profile or [post something to "
"his or her attention](%%%%action.newnotice%%%%?status_textarea=%3$s)."
-#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:202
+#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:211
#, php-format
msgid ""
"Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
@@ -389,8 +386,8 @@ msgstr "Nickname already in use. Try another one."
msgid "Not a valid nickname."
msgstr "Not a valid nickname."
-#: actions/apigroupcreate.php:196 actions/editapplication.php:212
-#: actions/editgroup.php:195 actions/newapplication.php:200
+#: actions/apigroupcreate.php:196 actions/editapplication.php:215
+#: actions/editgroup.php:195 actions/newapplication.php:203
#: actions/newgroup.php:139 actions/profilesettings.php:222
#: actions/register.php:217
msgid "Homepage is not a valid URL."
@@ -402,8 +399,8 @@ msgstr "Homepage is not a valid URL."
msgid "Full name is too long (max 255 chars)."
msgstr "Full name is too long (max 255 chars)."
-#: actions/apigroupcreate.php:213 actions/editapplication.php:187
-#: actions/newapplication.php:169
+#: actions/apigroupcreate.php:213 actions/editapplication.php:190
+#: actions/newapplication.php:172
#, php-format
msgid "Description is too long (max %d chars)."
msgstr "Description is too long (max %d chars)"
@@ -480,18 +477,22 @@ msgstr "%s groups"
msgid "groups on %s"
msgstr "groups on %s"
-#: actions/apioauthauthorize.php:108 actions/apioauthauthorize.php:114
-msgid "Bad request."
-msgstr "Bad request."
+#: actions/apioauthauthorize.php:101
+msgid "No oauth_token parameter provided."
+msgstr "No oauth_token parameter provided."
-#: actions/apioauthauthorize.php:134 actions/avatarsettings.php:268
+#: actions/apioauthauthorize.php:106
+msgid "Invalid token."
+msgstr "Invalid token."
+
+#: actions/apioauthauthorize.php:123 actions/avatarsettings.php:268
#: actions/deletenotice.php:157 actions/disfavor.php:74
-#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:50
+#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:54
#: actions/groupblock.php:66 actions/grouplogo.php:309
#: actions/groupunblock.php:66 actions/imsettings.php:206
#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
-#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:139
+#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:135
#: actions/othersettings.php:145 actions/passwordsettings.php:138
#: actions/profilesettings.php:194 actions/recoverpassword.php:337
#: actions/register.php:165 actions/remotesubscribe.php:77
@@ -502,21 +503,19 @@ msgstr "Bad request."
msgid "There was a problem with your session token. Try again, please."
msgstr "There was a problem with your session token. Try again, please."
-#: actions/apioauthauthorize.php:146
+#: actions/apioauthauthorize.php:135
msgid "Invalid nickname / password!"
msgstr "Invalid nickname / password!"
-#: actions/apioauthauthorize.php:170
-#, fuzzy
+#: actions/apioauthauthorize.php:159
msgid "Database error deleting OAuth application user."
-msgstr "DB error deleting OAuth app user."
+msgstr "Database error deleting OAuth application user."
-#: actions/apioauthauthorize.php:196
-#, fuzzy
+#: actions/apioauthauthorize.php:185
msgid "Database error inserting OAuth application user."
-msgstr "DB error inserting OAuth app user."
+msgstr "Database error inserting OAuth application user."
-#: actions/apioauthauthorize.php:231
+#: actions/apioauthauthorize.php:214
#, php-format
msgid ""
"The request token %s has been authorized. Please exchange it for an access "
@@ -525,53 +524,64 @@ msgstr ""
"The request token %s has been authorised. Please exchange it for an access "
"token."
-#: actions/apioauthauthorize.php:241
+#: actions/apioauthauthorize.php:227
#, php-format
-msgid "The request token %s has been denied."
-msgstr "The request token %s has been denied."
+msgid "The request token %s has been denied and revoked."
+msgstr "The request token %s has been denied and revoked."
-#: actions/apioauthauthorize.php:246 actions/avatarsettings.php:281
+#: actions/apioauthauthorize.php:232 actions/avatarsettings.php:281
#: actions/designadminpanel.php:103 actions/editapplication.php:139
#: actions/emailsettings.php:256 actions/grouplogo.php:319
#: actions/imsettings.php:220 actions/newapplication.php:121
-#: actions/oauthconnectionssettings.php:151 actions/recoverpassword.php:44
+#: actions/oauthconnectionssettings.php:147 actions/recoverpassword.php:44
#: actions/smssettings.php:248 lib/designsettings.php:304
msgid "Unexpected form submission."
msgstr "Unexpected form submission."
-#: actions/apioauthauthorize.php:273
+#: actions/apioauthauthorize.php:259
msgid "An application would like to connect to your account"
-msgstr ""
+msgstr "An application would like to connect to your account"
-#: actions/apioauthauthorize.php:290
+#: actions/apioauthauthorize.php:276
msgid "Allow or deny access"
+msgstr "Allow or deny access"
+
+#: actions/apioauthauthorize.php:292
+#, php-format
+msgid ""
+"The application <strong>%1$s</strong> by <strong>%2$s</strong> would like "
+"the ability to <strong>%3$s</strong> your %4$s account data. You should only "
+"give access to your %4$s account to third parties you trust."
msgstr ""
+"The application <strong>%1$s</strong> by <strong>%2$s</strong> would like "
+"the ability to <strong>%3$s</strong> your %4$s account data. You should only "
+"give access to your %4$s account to third parties you trust."
-#: actions/apioauthauthorize.php:320 lib/action.php:441
+#: actions/apioauthauthorize.php:310 lib/action.php:441
msgid "Account"
msgstr "Account"
-#: actions/apioauthauthorize.php:323 actions/login.php:230
+#: actions/apioauthauthorize.php:313 actions/login.php:230
#: actions/profilesettings.php:106 actions/register.php:424
#: actions/showgroup.php:236 actions/tagother.php:94 lib/groupeditform.php:152
#: lib/userprofile.php:131
msgid "Nickname"
msgstr "Nickname"
-#: actions/apioauthauthorize.php:326 actions/login.php:233
+#: actions/apioauthauthorize.php:316 actions/login.php:233
#: actions/register.php:429 lib/accountsettingsaction.php:116
msgid "Password"
msgstr "Password"
-#: actions/apioauthauthorize.php:338
+#: actions/apioauthauthorize.php:328
msgid "Deny"
msgstr "Deny"
-#: actions/apioauthauthorize.php:344
+#: actions/apioauthauthorize.php:334
msgid "Allow"
msgstr "Allow"
-#: actions/apioauthauthorize.php:361
+#: actions/apioauthauthorize.php:351
msgid "Allow or deny access to your account information."
msgstr "Allow or deny access to your account information."
@@ -740,8 +750,8 @@ msgstr "Original"
msgid "Preview"
msgstr "Preview"
-#: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:608
+#: actions/avatarsettings.php:149 actions/showapplication.php:252
+#: lib/deleteuserform.php:66 lib/noticelist.php:624
msgid "Delete"
msgstr "Delete"
@@ -791,8 +801,9 @@ msgstr ""
"unsubscribed from you, unable to subscribe to you in the future, and you "
"will not be notified of any @-replies from them."
-#: actions/block.php:143 actions/deletenotice.php:145
-#: actions/deleteuser.php:147 actions/groupblock.php:178
+#: actions/block.php:143 actions/deleteapplication.php:153
+#: actions/deletenotice.php:145 actions/deleteuser.php:147
+#: actions/groupblock.php:178
msgid "No"
msgstr "No"
@@ -800,9 +811,9 @@ msgstr "No"
msgid "Do not block this user"
msgstr "Do not block this user"
-#: actions/block.php:144 actions/deletenotice.php:146
-#: actions/deleteuser.php:148 actions/groupblock.php:179
-#: lib/repeatform.php:132
+#: actions/block.php:144 actions/deleteapplication.php:158
+#: actions/deletenotice.php:146 actions/deleteuser.php:148
+#: actions/groupblock.php:179 lib/repeatform.php:132
msgid "Yes"
msgstr "Yes"
@@ -906,6 +917,47 @@ msgstr "Conversation"
msgid "Notices"
msgstr "Notices"
+#: actions/deleteapplication.php:63
+msgid "You must be logged in to delete an application."
+msgstr "You must be logged in to delete an application."
+
+#: actions/deleteapplication.php:71
+msgid "Application not found."
+msgstr "Application not found."
+
+#: actions/deleteapplication.php:78 actions/editapplication.php:77
+#: actions/showapplication.php:94
+msgid "You are not the owner of this application."
+msgstr "You are not the owner of this application."
+
+#: actions/deleteapplication.php:102 actions/editapplication.php:127
+#: actions/newapplication.php:110 actions/showapplication.php:118
+#: lib/action.php:1195
+msgid "There was a problem with your session token."
+msgstr "There was a problem with your session token."
+
+#: actions/deleteapplication.php:123 actions/deleteapplication.php:147
+msgid "Delete application"
+msgstr "Delete application"
+
+#: actions/deleteapplication.php:149
+msgid ""
+"Are you sure you want to delete this application? This will clear all data "
+"about the application from the database, including all existing user "
+"connections."
+msgstr ""
+"Are you sure you want to delete this application? This will clear all data "
+"about the application from the database, including all existing user "
+"connections."
+
+#: actions/deleteapplication.php:156
+msgid "Do not delete this application"
+msgstr "Do not delete this application"
+
+#: actions/deleteapplication.php:160
+msgid "Delete this application"
+msgstr "Delete this application"
+
#: actions/deletenotice.php:67 actions/disfavor.php:61 actions/favor.php:62
#: actions/groupblock.php:61 actions/groupunblock.php:61 actions/logout.php:69
#: actions/makeadmin.php:61 actions/newmessage.php:87 actions/newnotice.php:89
@@ -940,7 +992,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:608
+#: actions/deletenotice.php:146 lib/noticelist.php:624
msgid "Delete this notice"
msgstr "Delete this notice"
@@ -1045,14 +1097,12 @@ msgid "Change colours"
msgstr "Change colours"
#: actions/designadminpanel.php:510 lib/designsettings.php:191
-#, fuzzy
msgid "Content"
-msgstr "Connect"
+msgstr "Content"
#: actions/designadminpanel.php:523 lib/designsettings.php:204
-#, fuzzy
msgid "Sidebar"
-msgstr "Search"
+msgstr "Sidebar"
#: actions/designadminpanel.php:536 lib/designsettings.php:217
msgid "Text"
@@ -1086,91 +1136,75 @@ msgstr "This notice is not a favourite!"
msgid "Add to favorites"
msgstr "Add to favourites"
-#: actions/doc.php:155
-#, fuzzy, php-format
+#: actions/doc.php:158
+#, php-format
msgid "No such document \"%s\""
-msgstr "No such document."
+msgstr "No such document \"%s\""
#: actions/editapplication.php:54
-#, fuzzy
msgid "Edit Application"
-msgstr "Other options"
+msgstr "Edit Application"
#: actions/editapplication.php:66
-#, fuzzy
msgid "You must be logged in to edit an application."
-msgstr "You must be logged in to create a group."
+msgstr "You must be logged in to edit an application."
-#: actions/editapplication.php:77 actions/showapplication.php:94
-#, fuzzy
-msgid "You are not the owner of this application."
-msgstr "You are not a member of this group."
-
-#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:163
+#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:166
#: actions/showapplication.php:87
-#, fuzzy
msgid "No such application."
-msgstr "No such notice."
-
-#: actions/editapplication.php:127 actions/newapplication.php:110
-#: actions/showapplication.php:118 lib/action.php:1195
-msgid "There was a problem with your session token."
-msgstr "There was a problem with your session token."
+msgstr "No such application."
#: actions/editapplication.php:161
-#, fuzzy
msgid "Use this form to edit your application."
-msgstr "Use this form to edit the group."
+msgstr "Use this form to edit your application."
#: actions/editapplication.php:177 actions/newapplication.php:159
-#, fuzzy
msgid "Name is required."
-msgstr "Same as password above. Required."
+msgstr "Name is required."
-#: actions/editapplication.php:180 actions/newapplication.php:162
-#, fuzzy
+#: actions/editapplication.php:180 actions/newapplication.php:165
msgid "Name is too long (max 255 chars)."
-msgstr "Full name is too long (max 255 chars)."
+msgstr "Name is too long (max 255 chars)."
-#: actions/editapplication.php:183 actions/newapplication.php:165
-#, fuzzy
+#: actions/editapplication.php:183 actions/newapplication.php:162
+msgid "Name already in use. Try another one."
+msgstr "Name already in use. Try another one."
+
+#: actions/editapplication.php:186 actions/newapplication.php:168
msgid "Description is required."
-msgstr "Description"
+msgstr "Description is required."
-#: actions/editapplication.php:191
+#: actions/editapplication.php:194
msgid "Source URL is too long."
-msgstr ""
+msgstr "Source URL is too long."
-#: actions/editapplication.php:197 actions/newapplication.php:182
-#, fuzzy
+#: actions/editapplication.php:200 actions/newapplication.php:185
msgid "Source URL is not valid."
-msgstr "Homepage is not a valid URL."
+msgstr "Source URL is not valid."
-#: actions/editapplication.php:200 actions/newapplication.php:185
+#: actions/editapplication.php:203 actions/newapplication.php:188
msgid "Organization is required."
msgstr "Organisation is required."
-#: actions/editapplication.php:203 actions/newapplication.php:188
-#, fuzzy
+#: actions/editapplication.php:206 actions/newapplication.php:191
msgid "Organization is too long (max 255 chars)."
-msgstr "Location is too long (max 255 chars)."
+msgstr "Organisation is too long (max 255 chars)."
-#: actions/editapplication.php:206 actions/newapplication.php:191
+#: actions/editapplication.php:209 actions/newapplication.php:194
msgid "Organization homepage is required."
msgstr "Organisation homepage is required."
-#: actions/editapplication.php:215 actions/newapplication.php:203
+#: actions/editapplication.php:218 actions/newapplication.php:206
msgid "Callback is too long."
-msgstr ""
+msgstr "Callback is too long."
-#: actions/editapplication.php:222 actions/newapplication.php:212
+#: actions/editapplication.php:225 actions/newapplication.php:215
msgid "Callback URL is not valid."
-msgstr ""
+msgstr "Callback URL is not valid."
-#: actions/editapplication.php:255
-#, fuzzy
+#: actions/editapplication.php:258
msgid "Could not update application."
-msgstr "Could not update group."
+msgstr "Could not update application."
#: actions/editgroup.php:56
#, php-format
@@ -1183,9 +1217,8 @@ msgstr "You must be logged in to create a group."
#: actions/editgroup.php:103 actions/editgroup.php:168
#: actions/groupdesignsettings.php:104 actions/grouplogo.php:106
-#, fuzzy
msgid "You must be an admin to edit the group."
-msgstr "You must be an admin to edit the group"
+msgstr "You must be an admin to edit the group."
#: actions/editgroup.php:154
msgid "Use this form to edit the group."
@@ -1453,29 +1486,25 @@ msgid "Featured users, page %d"
msgstr "Featured users, page %d"
#: actions/featured.php:99
-#, fuzzy, php-format
+#, php-format
msgid "A selection of some great users on %s"
-msgstr "A selection of some of the great users on %s"
+msgstr "A selection of some great users on %s"
#: actions/file.php:34
-#, fuzzy
msgid "No notice ID."
-msgstr "No notice."
+msgstr "No notice ID."
#: actions/file.php:38
-#, fuzzy
msgid "No notice."
msgstr "No notice."
#: actions/file.php:42
-#, fuzzy
msgid "No attachments."
-msgstr "No such document."
+msgstr "No attachments."
#: actions/file.php:51
-#, fuzzy
msgid "No uploaded attachments."
-msgstr "No such document."
+msgstr "No uploaded attachments."
#: actions/finishremotesubscribe.php:69
msgid "Not expecting this response!"
@@ -2110,11 +2139,11 @@ msgstr "You must be logged in to create a group."
msgid "Use this form to register a new application."
msgstr "Use this form to create a new group."
-#: actions/newapplication.php:173
+#: actions/newapplication.php:176
msgid "Source URL is required."
msgstr ""
-#: actions/newapplication.php:255 actions/newapplication.php:264
+#: actions/newapplication.php:258 actions/newapplication.php:267
#, fuzzy
msgid "Could not create application."
msgstr "Could not create aliases"
@@ -2248,29 +2277,29 @@ msgstr ""
msgid "You have not registered any applications yet."
msgstr ""
-#: actions/oauthconnectionssettings.php:71
+#: actions/oauthconnectionssettings.php:72
msgid "Connected applications"
msgstr ""
-#: actions/oauthconnectionssettings.php:87
+#: actions/oauthconnectionssettings.php:83
msgid "You have allowed the following applications to access you account."
msgstr ""
-#: actions/oauthconnectionssettings.php:170
+#: actions/oauthconnectionssettings.php:175
#, fuzzy
msgid "You are not a user of that application."
msgstr "You are not a member of that group."
-#: actions/oauthconnectionssettings.php:180
+#: actions/oauthconnectionssettings.php:186
msgid "Unable to revoke access for app: "
msgstr ""
-#: actions/oauthconnectionssettings.php:192
+#: actions/oauthconnectionssettings.php:198
#, php-format
msgid "You have not authorized any applications to use your account."
msgstr "You have not authorised any applications to use your account."
-#: actions/oauthconnectionssettings.php:205
+#: actions/oauthconnectionssettings.php:211
msgid "Developers can edit the registration settings for their applications "
msgstr ""
@@ -2626,9 +2655,9 @@ msgid "Invalid notice content"
msgstr "Invalid notice content"
#: actions/postnotice.php:90
-#, fuzzy, php-format
+#, php-format
msgid "Notice license ‘%1$s’ is not compatible with site license ‘%2$s’."
-msgstr "Notice licence ‘%s’ is not compatible with site licence ‘%s’."
+msgstr "Notice licence ‘1%$s’ is not compatible with site licence ‘%2$s’."
#: actions/profilesettings.php:60
msgid "Profile settings"
@@ -2782,39 +2811,39 @@ msgstr "Public timeline, page %d"
msgid "Public timeline"
msgstr "Public timeline"
-#: actions/public.php:151
+#: actions/public.php:159
#, fuzzy
msgid "Public Stream Feed (RSS 1.0)"
msgstr "Public Stream Feed"
-#: actions/public.php:155
+#: actions/public.php:163
#, fuzzy
msgid "Public Stream Feed (RSS 2.0)"
msgstr "Public Stream Feed"
-#: actions/public.php:159
+#: actions/public.php:167
#, fuzzy
msgid "Public Stream Feed (Atom)"
msgstr "Public Stream Feed"
-#: actions/public.php:179
+#: actions/public.php:187
#, php-format
msgid ""
"This is the public timeline for %%site.name%% but no one has posted anything "
"yet."
msgstr ""
-#: actions/public.php:182
+#: actions/public.php:190
msgid "Be the first to post!"
msgstr ""
-#: actions/public.php:186
+#: actions/public.php:194
#, php-format
msgid ""
"Why not [register an account](%%action.register%%) and be the first to post!"
msgstr ""
-#: actions/public.php:233
+#: actions/public.php:241
#, php-format
msgid ""
"This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2827,7 +2856,7 @@ msgstr ""
"tool. [Join now](%%action.register%%) to share notices about yourself with "
"friends, family, and colleagues! ([Read more](%%doc.help%%))"
-#: actions/public.php:238
+#: actions/public.php:246
#, php-format
msgid ""
"This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2900,6 +2929,8 @@ msgid ""
"If you have forgotten or lost your password, you can get a new one sent to "
"the email address you have stored in your account."
msgstr ""
+"If you have forgotten or lost your password, you can get a new one sent to "
+"the e-mail address you have stored in your account."
#: actions/recoverpassword.php:158
msgid "You have been identified. Enter a new password below. "
@@ -2911,7 +2942,7 @@ msgstr ""
#: actions/recoverpassword.php:191
msgid "Nickname or email address"
-msgstr ""
+msgstr "Nickname or e-mail address"
#: actions/recoverpassword.php:193
msgid "Your nickname on this server, or your registered email address."
@@ -3072,7 +3103,7 @@ msgstr ""
"number."
#: actions/register.php:538
-#, fuzzy, php-format
+#, php-format
msgid ""
"Congratulations, %1$s! And welcome to %%%%site.name%%%%. From here, you may "
"want to...\n"
@@ -3089,18 +3120,18 @@ msgid ""
"\n"
"Thanks for signing up and we hope you enjoy using this service."
msgstr ""
-"Congratulations, %s! And welcome to %%%%site.name%%%%. From here, you may "
+"Congratulations, %1$s! And welcome to %%%%site.name%%%%. From here, you may "
"want to...\n"
"\n"
-"* Go to [your profile](%s) and post your first message.\n"
+"* Go to [your profile](%2$s) and post your first message.\n"
"* Add a [Jabber/GTalk address](%%%%action.imsettings%%%%) so you can send "
"notices through instant messages.\n"
"* [Search for people](%%%%action.peoplesearch%%%%) that you may know or that "
-"share your interests. \n"
+"share your interests.  \n"
"* Update your [profile settings](%%%%action.profilesettings%%%%) to tell "
-"others more about you. \n"
+"others more about you.  \n"
"* Read over the [online docs](%%%%doc.help%%%%) for features you may have "
-"missed. \n"
+"missed.  \n"
"\n"
"Thanks for signing up and we hope you enjoy using this service."
@@ -3191,7 +3222,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:626
+#: actions/repeat.php:114 lib/noticelist.php:642
#, fuzzy
msgid "Repeated"
msgstr "Created"
@@ -3256,6 +3287,11 @@ msgstr ""
msgid "Replies to %1$s on %2$s!"
msgstr "Replies to %1$s on %2$s!"
+#: actions/rsd.php:146 actions/version.php:157
+#, fuzzy
+msgid "StatusNet"
+msgstr "Status deleted."
+
#: actions/sandbox.php:65 actions/unsandbox.php:65
msgid "You cannot sandbox users on this site."
msgstr "You cannot sandbox users on this site."
@@ -3300,79 +3336,84 @@ msgstr "Save site settings"
msgid "You must be logged in to view an application."
msgstr "You must be logged in to leave a group."
-#: actions/showapplication.php:158
+#: actions/showapplication.php:157
#, fuzzy
msgid "Application profile"
msgstr "Notice has no profile"
-#: actions/showapplication.php:160 lib/applicationeditform.php:180
+#: actions/showapplication.php:159 lib/applicationeditform.php:180
msgid "Icon"
msgstr ""
-#: actions/showapplication.php:170 actions/version.php:195
+#: actions/showapplication.php:169 actions/version.php:195
#: lib/applicationeditform.php:195
#, fuzzy
msgid "Name"
msgstr "Nickname"
-#: actions/showapplication.php:179 lib/applicationeditform.php:222
+#: actions/showapplication.php:178 lib/applicationeditform.php:222
#, fuzzy
msgid "Organization"
msgstr "Pagination"
-#: actions/showapplication.php:188 actions/version.php:198
+#: actions/showapplication.php:187 actions/version.php:198
#: lib/applicationeditform.php:209 lib/groupeditform.php:172
msgid "Description"
msgstr "Description"
-#: actions/showapplication.php:193 actions/showgroup.php:429
+#: actions/showapplication.php:192 actions/showgroup.php:429
#: lib/profileaction.php:174
msgid "Statistics"
msgstr "Statistics"
-#: actions/showapplication.php:204
+#: actions/showapplication.php:203
#, php-format
-msgid "created by %1$s - %2$s access by default - %3$d users"
+msgid "Created by %1$s - %2$s access by default - %3$d users"
msgstr ""
-#: actions/showapplication.php:214
+#: actions/showapplication.php:213
msgid "Application actions"
msgstr ""
-#: actions/showapplication.php:233
+#: actions/showapplication.php:236
msgid "Reset key & secret"
msgstr ""
-#: actions/showapplication.php:241
+#: actions/showapplication.php:261
msgid "Application info"
msgstr ""
-#: actions/showapplication.php:243
+#: actions/showapplication.php:263
msgid "Consumer key"
msgstr ""
-#: actions/showapplication.php:248
+#: actions/showapplication.php:268
msgid "Consumer secret"
msgstr ""
-#: actions/showapplication.php:253
+#: actions/showapplication.php:273
msgid "Request token URL"
msgstr ""
-#: actions/showapplication.php:258
+#: actions/showapplication.php:278
msgid "Access token URL"
msgstr ""
-#: actions/showapplication.php:263
+#: actions/showapplication.php:283
msgid "Authorize URL"
-msgstr ""
+msgstr "Authorise URL"
-#: actions/showapplication.php:268
+#: actions/showapplication.php:288
msgid ""
"Note: We support HMAC-SHA1 signatures. We do not support the plaintext "
"signature method."
msgstr ""
+#: actions/showapplication.php:309
+#, fuzzy
+msgid "Are you sure you want to reset your consumer key and secret?"
+msgstr "Are you sure you want to delete this notice?"
+
#: actions/showfavorites.php:79
#, fuzzy, php-format
msgid "%1$s's favorite notices, page %2$d"
@@ -3402,6 +3443,8 @@ msgid ""
"You haven't chosen any favorite notices yet. Click the fave button on "
"notices you like to bookmark them for later or shed a spotlight on them."
msgstr ""
+"You haven't chosen any favourite notices yet. Click the fave button on "
+"notices you like to bookmark them for later or shed a spotlight on them."
#: actions/showfavorites.php:207
#, php-format
@@ -3409,6 +3452,8 @@ msgid ""
"%s hasn't added any notices to his favorites yet. Post something interesting "
"they would add to their favorites :)"
msgstr ""
+"%s hasn't added any notices to his favourites yet. Post something "
+"interesting they would add to their favourites :)"
#: actions/showfavorites.php:211
#, php-format
@@ -3417,6 +3462,9 @@ msgid ""
"account](%%%%action.register%%%%) and then post something interesting they "
"would add to their favorites :)"
msgstr ""
+"%s hasn't added any notices to his favourites yet. Why not [register an "
+"account](%%%%action.register%%%%) and then post something interesting they "
+"would add to their favourites :)"
#: actions/showfavorites.php:242
msgid "This is a way to share what you like."
@@ -3501,6 +3549,11 @@ msgid ""
"their life and interests. [Join now](%%%%action.register%%%%) to become part "
"of this group and many more! ([Read more](%%%%doc.help%%%%))"
msgstr ""
+"**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en."
+"wikipedia.org/wiki/Micro-blogging) service based on the Free Software "
+"[StatusNet](http://status.net/) tool. Its members share short messages about "
+"their life and interests. [Join now](%%%%action.register%%%%) to become part "
+"of this group and many more! ([Read more](%%%%doc.help%%%%))"
#: actions/showgroup.php:454
#, fuzzy, php-format
@@ -3575,19 +3628,19 @@ msgstr "Notice feed for %s"
msgid "FOAF for %s"
msgstr "FOAF for %s"
-#: actions/showstream.php:191
+#: actions/showstream.php:200
#, fuzzy, php-format
msgid "This is the timeline for %1$s but %2$s hasn't posted anything yet."
msgstr ""
"This is the timeline for %s and friends but no one has posted anything yet."
-#: actions/showstream.php:196
+#: actions/showstream.php:205
msgid ""
"Seen anything interesting recently? You haven't posted any notices yet, now "
"would be a good time to start :)"
msgstr ""
-#: actions/showstream.php:198
+#: actions/showstream.php:207
#, fuzzy, php-format
msgid ""
"You can try to nudge %1$s or [post something to his or her attention](%%%%"
@@ -3596,7 +3649,7 @@ msgstr ""
"You can try to [nudge %s](../%s) from his profile or [post something to his "
"or her attention](%%%%action.newnotice%%%%?status_textarea=%s)."
-#: actions/showstream.php:234
+#: actions/showstream.php:243
#, php-format
msgid ""
"**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3605,7 +3658,7 @@ msgid ""
"follow **%s**'s notices and many more! ([Read more](%%%%doc.help%%%%))"
msgstr ""
-#: actions/showstream.php:239
+#: actions/showstream.php:248
#, php-format
msgid ""
"**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3616,7 +3669,7 @@ msgstr ""
"wikipedia.org/wiki/Micro-blogging) service based on the Free Software "
"[StatusNet](http://status.net/) tool. "
-#: actions/showstream.php:296
+#: actions/showstream.php:305
#, fuzzy, php-format
msgid "Repeat of %s"
msgstr "Replies to %s"
@@ -3663,7 +3716,7 @@ msgstr ""
#: actions/siteadminpanel.php:183
msgid "Minimum text limit is 140 characters."
-msgstr ""
+msgstr "Minimum text limit is 140 characters."
#: actions/siteadminpanel.php:189
msgid "Dupe limit must 1 or more seconds."
@@ -3698,9 +3751,8 @@ msgid "URL used for credits link in footer of each page"
msgstr ""
#: actions/siteadminpanel.php:257
-#, fuzzy
msgid "Contact email address for your site"
-msgstr "New e-mail address for posting to %s"
+msgstr "Contact e-mail address for your site"
#: actions/siteadminpanel.php:263
#, fuzzy
@@ -4300,11 +4352,6 @@ msgid ""
"Inc. and contributors."
msgstr ""
-#: actions/version.php:157
-#, fuzzy
-msgid "StatusNet"
-msgstr "Status deleted."
-
#: actions/version.php:161
msgid "Contributors"
msgstr ""
@@ -4316,6 +4363,10 @@ msgid ""
"Software Foundation, either version 3 of the License, or (at your option) "
"any later version. "
msgstr ""
+"StatusNet is free software: you can redistribute it and/or modify it under "
+"the terms of the GNU Affero General Public Licence as published by the Free "
+"Software Foundation, either version 3 of the Licence, or (at your option) "
+"any later version. "
#: actions/version.php:174
msgid ""
@@ -4324,6 +4375,10 @@ msgid ""
"FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License "
"for more details. "
msgstr ""
+"This program is distributed in the hope that it will be useful, but WITHOUT "
+"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
+"FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Affero General Public Licence "
+"for more details. "
#: actions/version.php:180
#, php-format
@@ -4331,6 +4386,8 @@ msgid ""
"You should have received a copy of the GNU Affero General Public License "
"along with this program. If not, see %s."
msgstr ""
+"You should have received a copy of the GNU Affero General Public Licence "
+"along with this program. If not, see %s."
#: actions/version.php:189
msgid "Plugins"
@@ -4431,22 +4488,22 @@ msgstr "You are banned from posting notices on this site."
msgid "Problem saving notice."
msgstr "Problem saving notice."
-#: classes/Notice.php:790
+#: classes/Notice.php:788
#, fuzzy
msgid "Problem saving group inbox."
msgstr "Problem saving notice."
-#: classes/Notice.php:850
+#: classes/Notice.php:848
#, php-format
msgid "DB error inserting reply: %s"
msgstr "DB error inserting reply: %s"
-#: classes/Notice.php:1233
+#: classes/Notice.php:1231
#, fuzzy, php-format
msgid "RT @%1$s %2$s"
msgstr "%1$s (%2$s)"
-#: classes/User.php:382
+#: classes/User.php:385
#, php-format
msgid "Welcome to %1$s, @%2$s!"
msgstr "Welcome to %1$s, @%2$s!"
@@ -4732,11 +4789,11 @@ msgstr "SMS confirmation"
msgid "Sessions configuration"
msgstr "Design configuration"
-#: lib/apiauth.php:99
+#: lib/apiauth.php:95
msgid "API resource requires read-write access, but you only have read access."
msgstr ""
-#: lib/apiauth.php:279
+#: lib/apiauth.php:273
#, php-format
msgid "Failed API auth attempt, nickname = %1$s, proxy = %2$s, ip = %3$s"
msgstr ""
@@ -4771,12 +4828,11 @@ msgstr "URL of the homepage or blog of the group or topic"
#: lib/applicationeditform.php:224
msgid "Organization responsible for this application"
-msgstr ""
+msgstr "Organisation responsible for this application"
#: lib/applicationeditform.php:230
-#, fuzzy
msgid "URL for the homepage of the organization"
-msgstr "URL of the homepage or blog of the group or topic"
+msgstr "URL for the homepage of the organisation"
#: lib/applicationeditform.php:236
msgid "URL to redirect to after authentication"
@@ -5105,19 +5161,19 @@ msgid ""
"tracking - not yet implemented.\n"
msgstr ""
-#: lib/common.php:131
+#: lib/common.php:135
msgid "No configuration file found. "
msgstr "No configuration file found"
-#: lib/common.php:132
+#: lib/common.php:136
msgid "I looked for configuration files in the following places: "
msgstr ""
-#: lib/common.php:134
+#: lib/common.php:138
msgid "You may wish to run the installer to fix this."
msgstr ""
-#: lib/common.php:135
+#: lib/common.php:139
msgid "Go to the installer."
msgstr "Go to the installer."
@@ -5697,24 +5753,24 @@ msgstr ""
msgid "at"
msgstr ""
-#: lib/noticelist.php:531
+#: lib/noticelist.php:547
msgid "in context"
msgstr "in context"
-#: lib/noticelist.php:556
+#: lib/noticelist.php:572
#, fuzzy
msgid "Repeated by"
msgstr "Created"
-#: lib/noticelist.php:582
+#: lib/noticelist.php:598
msgid "Reply to this notice"
msgstr "Reply to this notice"
-#: lib/noticelist.php:583
+#: lib/noticelist.php:599
msgid "Reply"
msgstr "Reply"
-#: lib/noticelist.php:625
+#: lib/noticelist.php:641
#, fuzzy
msgid "Notice repeated"
msgstr "Notice deleted."
@@ -5860,6 +5916,10 @@ msgstr "Reply to this notice"
msgid "Repeat this notice"
msgstr "Reply to this notice"
+#: lib/router.php:665
+msgid "No single user defined for single-user mode."
+msgstr ""
+
#: lib/sandboxform.php:67
msgid "Sandbox"
msgstr "Sandbox"
@@ -6028,47 +6088,47 @@ msgstr "Message"
msgid "Moderate"
msgstr ""
-#: lib/util.php:868
+#: lib/util.php:867
msgid "a few seconds ago"
msgstr "a few seconds ago"
-#: lib/util.php:870
+#: lib/util.php:869
msgid "about a minute ago"
msgstr "about a minute ago"
-#: lib/util.php:872
+#: lib/util.php:871
#, php-format
msgid "about %d minutes ago"
msgstr "about %d minutes ago"
-#: lib/util.php:874
+#: lib/util.php:873
msgid "about an hour ago"
msgstr "about an hour ago"
-#: lib/util.php:876
+#: lib/util.php:875
#, php-format
msgid "about %d hours ago"
msgstr "about %d hours ago"
-#: lib/util.php:878
+#: lib/util.php:877
msgid "about a day ago"
msgstr "about a day ago"
-#: lib/util.php:880
+#: lib/util.php:879
#, php-format
msgid "about %d days ago"
msgstr "about %d days ago"
-#: lib/util.php:882
+#: lib/util.php:881
msgid "about a month ago"
msgstr "about a month ago"
-#: lib/util.php:884
+#: lib/util.php:883
#, php-format
msgid "about %d months ago"
msgstr "about %d months ago"
-#: lib/util.php:886
+#: lib/util.php:885
msgid "about a year ago"
msgstr "about a year ago"
diff --git a/locale/es/LC_MESSAGES/statusnet.po b/locale/es/LC_MESSAGES/statusnet.po
index 387c0868c..1826206ca 100644
--- a/locale/es/LC_MESSAGES/statusnet.po
+++ b/locale/es/LC_MESSAGES/statusnet.po
@@ -12,58 +12,52 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-01-30 23:41+0000\n"
-"PO-Revision-Date: 2010-01-30 23:41:39+0000\n"
+"POT-Creation-Date: 2010-02-04 10:31+0000\n"
+"PO-Revision-Date: 2010-02-04 10:32:29+0000\n"
"Language-Team: Spanish\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.16alpha (r61734); Translate extension (2010-01-16)\n"
+"X-Generator: MediaWiki 1.16alpha (r61969); Translate extension (2010-01-16)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: es\n"
"X-Message-Group: out-statusnet\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: actions/accessadminpanel.php:54 lib/adminpanelaction.php:326
-#, fuzzy
msgid "Access"
-msgstr "Aceptar"
+msgstr "Acceder"
#: actions/accessadminpanel.php:65
-#, fuzzy
msgid "Site access settings"
-msgstr "Configuración de Avatar"
+msgstr "Configuración de acceso de la web"
#: actions/accessadminpanel.php:158
-#, fuzzy
msgid "Registration"
-msgstr "Registrarse"
+msgstr "Registro"
#: actions/accessadminpanel.php:161
-#, fuzzy
msgid "Private"
-msgstr "Privacidad"
+msgstr "Privado"
#: actions/accessadminpanel.php:163
msgid "Prohibit anonymous users (not logged in) from viewing site?"
-msgstr ""
+msgstr "¿Prohibir a los usuarios anónimos (no conectados) ver el sitio ?"
#: actions/accessadminpanel.php:167
-#, fuzzy
msgid "Invite only"
-msgstr "Invitar"
+msgstr "Invitar sólo"
#: actions/accessadminpanel.php:169
msgid "Make registration invitation only."
-msgstr ""
+msgstr "Haz que el registro sea sólo con invitaciones."
#: actions/accessadminpanel.php:173
-#, fuzzy
msgid "Closed"
-msgstr "Bloqueado"
+msgstr "Cerrado"
#: actions/accessadminpanel.php:175
msgid "Disable new registrations."
-msgstr ""
+msgstr "Inhabilitar nuevos registros."
#: actions/accessadminpanel.php:189 actions/designadminpanel.php:586
#: actions/emailsettings.php:195 actions/imsettings.php:163
@@ -78,9 +72,8 @@ msgid "Save"
msgstr "Guardar"
#: actions/accessadminpanel.php:189
-#, fuzzy
msgid "Save access settings"
-msgstr "Configuración de Avatar"
+msgstr "Guardar la configuración de acceso"
#: actions/all.php:63 actions/public.php:97 actions/replies.php:92
#: actions/showfavorites.php:137 actions/tag.php:51
@@ -103,7 +96,7 @@ msgstr "No existe tal página"
#: actions/favoritesrss.php:74 actions/foaf.php:40 actions/foaf.php:58
#: actions/microsummary.php:62 actions/newmessage.php:116 actions/otp.php:76
#: actions/remotesubscribe.php:145 actions/remotesubscribe.php:154
-#: actions/replies.php:73 actions/repliesrss.php:38
+#: actions/replies.php:73 actions/repliesrss.php:38 actions/rsd.php:116
#: actions/showfavorites.php:105 actions/userbyid.php:74
#: actions/usergroups.php:91 actions/userrss.php:38 actions/xrds.php:71
#: lib/command.php:163 lib/command.php:302 lib/command.php:355
@@ -114,9 +107,9 @@ msgid "No such user."
msgstr "No existe ese usuario."
#: actions/all.php:84
-#, fuzzy, php-format
+#, php-format
msgid "%1$s and friends, page %2$d"
-msgstr "%s y amigos, página %d"
+msgstr "%1$s y amigos, página %2$d"
#: actions/all.php:86 actions/all.php:167 actions/allrss.php:115
#: actions/apitimelinefriends.php:114 actions/apitimelinehome.php:115
@@ -160,7 +153,7 @@ msgid ""
"his or her attention](%%%%action.newnotice%%%%?status_textarea=%3$s)."
msgstr ""
-#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:202
+#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:211
#, php-format
msgid ""
"Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
@@ -309,9 +302,9 @@ msgid "No message text!"
msgstr "¡Sin texto de mensaje!"
#: actions/apidirectmessagenew.php:135 actions/newmessage.php:150
-#, fuzzy, php-format
+#, php-format
msgid "That's too long. Max message size is %d chars."
-msgstr "Demasiado largo. Máximo 140 caracteres. "
+msgstr "Demasiado largo. Tamaño máx. de los mensajes es %d caracteres."
#: actions/apidirectmessagenew.php:146
msgid "Recipient user not found."
@@ -391,8 +384,8 @@ msgstr "El apodo ya existe. Prueba otro."
msgid "Not a valid nickname."
msgstr "Apodo no válido"
-#: actions/apigroupcreate.php:196 actions/editapplication.php:212
-#: actions/editgroup.php:195 actions/newapplication.php:200
+#: actions/apigroupcreate.php:196 actions/editapplication.php:215
+#: actions/editgroup.php:195 actions/newapplication.php:203
#: actions/newgroup.php:139 actions/profilesettings.php:222
#: actions/register.php:217
msgid "Homepage is not a valid URL."
@@ -404,8 +397,8 @@ msgstr "La página de inicio no es un URL válido."
msgid "Full name is too long (max 255 chars)."
msgstr "Tu nombre es demasiado largo (max. 255 carac.)"
-#: actions/apigroupcreate.php:213 actions/editapplication.php:187
-#: actions/newapplication.php:169
+#: actions/apigroupcreate.php:213 actions/editapplication.php:190
+#: actions/newapplication.php:172
#, php-format
msgid "Description is too long (max %d chars)."
msgstr "La descripción es demasiado larga (máx. %d caracteres)."
@@ -442,9 +435,8 @@ msgstr ""
#: actions/apigroupismember.php:95 actions/apigroupjoin.php:104
#: actions/apigroupleave.php:104 actions/apigroupmembership.php:91
#: actions/apigroupshow.php:82 actions/apitimelinegroup.php:91
-#, fuzzy
msgid "Group not found!"
-msgstr "¡No se encontró el método de la API!"
+msgstr "¡No se ha encontrado el grupo!"
#: actions/apigroupjoin.php:110 actions/joingroup.php:90
msgid "You are already a member of that group."
@@ -452,7 +444,7 @@ msgstr "Ya eres miembro de ese grupo"
#: actions/apigroupjoin.php:119 actions/joingroup.php:95 lib/command.php:221
msgid "You have been blocked from that group by the admin."
-msgstr ""
+msgstr "Has sido bloqueado de ese grupo por el administrador."
#: actions/apigroupjoin.php:138 actions/joingroup.php:124
#, fuzzy, php-format
@@ -483,18 +475,23 @@ msgstr "Grupos %s"
msgid "groups on %s"
msgstr "Grupos en %s"
-#: actions/apioauthauthorize.php:108 actions/apioauthauthorize.php:114
-msgid "Bad request."
+#: actions/apioauthauthorize.php:101
+msgid "No oauth_token parameter provided."
msgstr ""
-#: actions/apioauthauthorize.php:134 actions/avatarsettings.php:268
+#: actions/apioauthauthorize.php:106
+#, fuzzy
+msgid "Invalid token."
+msgstr "Tamaño inválido."
+
+#: actions/apioauthauthorize.php:123 actions/avatarsettings.php:268
#: actions/deletenotice.php:157 actions/disfavor.php:74
-#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:50
+#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:54
#: actions/groupblock.php:66 actions/grouplogo.php:309
#: actions/groupunblock.php:66 actions/imsettings.php:206
#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
-#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:139
+#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:135
#: actions/othersettings.php:145 actions/passwordsettings.php:138
#: actions/profilesettings.php:194 actions/recoverpassword.php:337
#: actions/register.php:165 actions/remotesubscribe.php:77
@@ -506,78 +503,85 @@ msgid "There was a problem with your session token. Try again, please."
msgstr ""
"Hubo un problema con tu clave de sesión. Por favor, intenta nuevamente."
-#: actions/apioauthauthorize.php:146
+#: actions/apioauthauthorize.php:135
#, fuzzy
msgid "Invalid nickname / password!"
msgstr "Usuario o contraseña inválidos."
-#: actions/apioauthauthorize.php:170
+#: actions/apioauthauthorize.php:159
#, fuzzy
msgid "Database error deleting OAuth application user."
msgstr "Error al configurar el usuario."
-#: actions/apioauthauthorize.php:196
+#: actions/apioauthauthorize.php:185
#, fuzzy
msgid "Database error inserting OAuth application user."
msgstr "Error de la BD al insertar la etiqueta clave: %s"
-#: actions/apioauthauthorize.php:231
+#: actions/apioauthauthorize.php:214
#, php-format
msgid ""
"The request token %s has been authorized. Please exchange it for an access "
"token."
msgstr ""
-#: actions/apioauthauthorize.php:241
+#: actions/apioauthauthorize.php:227
#, php-format
-msgid "The request token %s has been denied."
+msgid "The request token %s has been denied and revoked."
msgstr ""
-#: actions/apioauthauthorize.php:246 actions/avatarsettings.php:281
+#: actions/apioauthauthorize.php:232 actions/avatarsettings.php:281
#: actions/designadminpanel.php:103 actions/editapplication.php:139
#: actions/emailsettings.php:256 actions/grouplogo.php:319
#: actions/imsettings.php:220 actions/newapplication.php:121
-#: actions/oauthconnectionssettings.php:151 actions/recoverpassword.php:44
+#: actions/oauthconnectionssettings.php:147 actions/recoverpassword.php:44
#: actions/smssettings.php:248 lib/designsettings.php:304
msgid "Unexpected form submission."
msgstr "Envío de formulario inesperado."
-#: actions/apioauthauthorize.php:273
+#: actions/apioauthauthorize.php:259
msgid "An application would like to connect to your account"
msgstr ""
-#: actions/apioauthauthorize.php:290
+#: actions/apioauthauthorize.php:276
msgid "Allow or deny access"
+msgstr "Permitir o denegar el acceso"
+
+#: actions/apioauthauthorize.php:292
+#, php-format
+msgid ""
+"The application <strong>%1$s</strong> by <strong>%2$s</strong> would like "
+"the ability to <strong>%3$s</strong> your %4$s account data. You should only "
+"give access to your %4$s account to third parties you trust."
msgstr ""
-#: actions/apioauthauthorize.php:320 lib/action.php:441
+#: actions/apioauthauthorize.php:310 lib/action.php:441
msgid "Account"
msgstr "Cuenta"
-#: actions/apioauthauthorize.php:323 actions/login.php:230
+#: actions/apioauthauthorize.php:313 actions/login.php:230
#: actions/profilesettings.php:106 actions/register.php:424
#: actions/showgroup.php:236 actions/tagother.php:94 lib/groupeditform.php:152
#: lib/userprofile.php:131
msgid "Nickname"
msgstr "Apodo"
-#: actions/apioauthauthorize.php:326 actions/login.php:233
+#: actions/apioauthauthorize.php:316 actions/login.php:233
#: actions/register.php:429 lib/accountsettingsaction.php:116
msgid "Password"
msgstr "Contraseña"
-#: actions/apioauthauthorize.php:338
+#: actions/apioauthauthorize.php:328
msgid "Deny"
-msgstr ""
+msgstr "Denegar"
-#: actions/apioauthauthorize.php:344
-#, fuzzy
+#: actions/apioauthauthorize.php:334
msgid "Allow"
-msgstr "Todo"
+msgstr "Permitir"
-#: actions/apioauthauthorize.php:361
+#: actions/apioauthauthorize.php:351
msgid "Allow or deny access to your account information."
-msgstr ""
+msgstr "Permitir o denegar el acceso a la información de tu cuenta."
#: actions/apistatusesdestroy.php:107
msgid "This method requires a POST or DELETE."
@@ -593,14 +597,12 @@ msgid "No such notice."
msgstr "No existe ese aviso."
#: actions/apistatusesretweet.php:83
-#, fuzzy
msgid "Cannot repeat your own notice."
-msgstr "No se puede activar notificación."
+msgstr "No puedes repetir tus propias notificaciones."
#: actions/apistatusesretweet.php:91
-#, fuzzy
msgid "Already repeated that notice."
-msgstr "Borrar este aviso"
+msgstr "Esta notificación ya se ha repetido."
#: actions/apistatusesshow.php:138
msgid "Status deleted."
@@ -748,8 +750,8 @@ msgstr "Original"
msgid "Preview"
msgstr "Vista previa"
-#: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:608
+#: actions/avatarsettings.php:149 actions/showapplication.php:252
+#: lib/deleteuserform.php:66 lib/noticelist.php:624
msgid "Delete"
msgstr "Borrar"
@@ -798,8 +800,9 @@ msgid ""
"will not be notified of any @-replies from them."
msgstr ""
-#: actions/block.php:143 actions/deletenotice.php:145
-#: actions/deleteuser.php:147 actions/groupblock.php:178
+#: actions/block.php:143 actions/deleteapplication.php:153
+#: actions/deletenotice.php:145 actions/deleteuser.php:147
+#: actions/groupblock.php:178
msgid "No"
msgstr "No"
@@ -808,9 +811,9 @@ msgstr "No"
msgid "Do not block this user"
msgstr "Desbloquear este usuario"
-#: actions/block.php:144 actions/deletenotice.php:146
-#: actions/deleteuser.php:148 actions/groupblock.php:179
-#: lib/repeatform.php:132
+#: actions/block.php:144 actions/deleteapplication.php:158
+#: actions/deletenotice.php:146 actions/deleteuser.php:148
+#: actions/groupblock.php:179 lib/repeatform.php:132
msgid "Yes"
msgstr "Sí"
@@ -916,6 +919,50 @@ msgstr "Conversación"
msgid "Notices"
msgstr "Avisos"
+#: actions/deleteapplication.php:63
+#, fuzzy
+msgid "You must be logged in to delete an application."
+msgstr "Debes estar conectado para editar un grupo."
+
+#: actions/deleteapplication.php:71
+#, fuzzy
+msgid "Application not found."
+msgstr "Aviso sin perfil"
+
+#: actions/deleteapplication.php:78 actions/editapplication.php:77
+#: actions/showapplication.php:94
+#, fuzzy
+msgid "You are not the owner of this application."
+msgstr "No eres miembro de este grupo."
+
+#: actions/deleteapplication.php:102 actions/editapplication.php:127
+#: actions/newapplication.php:110 actions/showapplication.php:118
+#: lib/action.php:1195
+msgid "There was a problem with your session token."
+msgstr "Hubo problemas con tu clave de sesión."
+
+#: actions/deleteapplication.php:123 actions/deleteapplication.php:147
+#, fuzzy
+msgid "Delete application"
+msgstr "No existe ese aviso."
+
+#: actions/deleteapplication.php:149
+msgid ""
+"Are you sure you want to delete this application? This will clear all data "
+"about the application from the database, including all existing user "
+"connections."
+msgstr ""
+
+#: actions/deleteapplication.php:156
+#, fuzzy
+msgid "Do not delete this application"
+msgstr "No se puede eliminar este aviso."
+
+#: actions/deleteapplication.php:160
+#, fuzzy
+msgid "Delete this application"
+msgstr "Borrar este aviso"
+
#: actions/deletenotice.php:67 actions/disfavor.php:61 actions/favor.php:62
#: actions/groupblock.php:61 actions/groupunblock.php:61 actions/logout.php:69
#: actions/makeadmin.php:61 actions/newmessage.php:87 actions/newnotice.php:89
@@ -952,7 +999,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:608
+#: actions/deletenotice.php:146 lib/noticelist.php:624
msgid "Delete this notice"
msgstr "Borrar este aviso"
@@ -1099,7 +1146,7 @@ msgstr "¡Este aviso no es un favorito!"
msgid "Add to favorites"
msgstr "Agregar a favoritos"
-#: actions/doc.php:155
+#: actions/doc.php:158
#, fuzzy, php-format
msgid "No such document \"%s\""
msgstr "No existe ese documento."
@@ -1114,22 +1161,12 @@ msgstr "Otras opciones"
msgid "You must be logged in to edit an application."
msgstr "Debes estar conectado para editar un grupo."
-#: actions/editapplication.php:77 actions/showapplication.php:94
-#, fuzzy
-msgid "You are not the owner of this application."
-msgstr "No eres miembro de este grupo."
-
-#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:163
+#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:166
#: actions/showapplication.php:87
#, fuzzy
msgid "No such application."
msgstr "No existe ese aviso."
-#: actions/editapplication.php:127 actions/newapplication.php:110
-#: actions/showapplication.php:118 lib/action.php:1195
-msgid "There was a problem with your session token."
-msgstr "Hubo problemas con tu clave de sesión."
-
#: actions/editapplication.php:161
#, fuzzy
msgid "Use this form to edit your application."
@@ -1140,47 +1177,52 @@ msgstr "Usa este formulario para editar el grupo."
msgid "Name is required."
msgstr "Igual a la contraseña de arriba. Requerida"
-#: actions/editapplication.php:180 actions/newapplication.php:162
+#: actions/editapplication.php:180 actions/newapplication.php:165
#, fuzzy
msgid "Name is too long (max 255 chars)."
msgstr "Tu nombre es demasiado largo (max. 255 carac.)"
-#: actions/editapplication.php:183 actions/newapplication.php:165
+#: actions/editapplication.php:183 actions/newapplication.php:162
+#, fuzzy
+msgid "Name already in use. Try another one."
+msgstr "El apodo ya existe. Prueba otro."
+
+#: actions/editapplication.php:186 actions/newapplication.php:168
#, fuzzy
msgid "Description is required."
msgstr "Descripción"
-#: actions/editapplication.php:191
+#: actions/editapplication.php:194
msgid "Source URL is too long."
msgstr ""
-#: actions/editapplication.php:197 actions/newapplication.php:182
+#: actions/editapplication.php:200 actions/newapplication.php:185
#, fuzzy
msgid "Source URL is not valid."
msgstr "La página de inicio no es un URL válido."
-#: actions/editapplication.php:200 actions/newapplication.php:185
+#: actions/editapplication.php:203 actions/newapplication.php:188
msgid "Organization is required."
msgstr ""
-#: actions/editapplication.php:203 actions/newapplication.php:188
+#: actions/editapplication.php:206 actions/newapplication.php:191
#, fuzzy
msgid "Organization is too long (max 255 chars)."
msgstr "La ubicación es demasiado larga (máx. 255 caracteres)."
-#: actions/editapplication.php:206 actions/newapplication.php:191
+#: actions/editapplication.php:209 actions/newapplication.php:194
msgid "Organization homepage is required."
msgstr ""
-#: actions/editapplication.php:215 actions/newapplication.php:203
+#: actions/editapplication.php:218 actions/newapplication.php:206
msgid "Callback is too long."
msgstr ""
-#: actions/editapplication.php:222 actions/newapplication.php:212
+#: actions/editapplication.php:225 actions/newapplication.php:215
msgid "Callback URL is not valid."
msgstr ""
-#: actions/editapplication.php:255
+#: actions/editapplication.php:258
#, fuzzy
msgid "Could not update application."
msgstr "No se pudo actualizar el grupo."
@@ -2126,11 +2168,11 @@ msgstr "Debes estar conectado para crear un grupo"
msgid "Use this form to register a new application."
msgstr "Usa este formulario para crear un grupo nuevo."
-#: actions/newapplication.php:173
+#: actions/newapplication.php:176
msgid "Source URL is required."
msgstr ""
-#: actions/newapplication.php:255 actions/newapplication.php:264
+#: actions/newapplication.php:258 actions/newapplication.php:267
#, fuzzy
msgid "Could not create application."
msgstr "No se pudo crear favorito."
@@ -2265,29 +2307,29 @@ msgstr ""
msgid "You have not registered any applications yet."
msgstr ""
-#: actions/oauthconnectionssettings.php:71
+#: actions/oauthconnectionssettings.php:72
msgid "Connected applications"
msgstr ""
-#: actions/oauthconnectionssettings.php:87
+#: actions/oauthconnectionssettings.php:83
msgid "You have allowed the following applications to access you account."
msgstr ""
-#: actions/oauthconnectionssettings.php:170
+#: actions/oauthconnectionssettings.php:175
#, fuzzy
msgid "You are not a user of that application."
msgstr "No eres miembro de ese grupo"
-#: actions/oauthconnectionssettings.php:180
+#: actions/oauthconnectionssettings.php:186
msgid "Unable to revoke access for app: "
msgstr ""
-#: actions/oauthconnectionssettings.php:192
+#: actions/oauthconnectionssettings.php:198
#, php-format
msgid "You have not authorized any applications to use your account."
msgstr ""
-#: actions/oauthconnectionssettings.php:205
+#: actions/oauthconnectionssettings.php:211
msgid "Developers can edit the registration settings for their applications "
msgstr ""
@@ -2814,39 +2856,39 @@ msgstr "Línea de tiempo pública, página %d"
msgid "Public timeline"
msgstr "Línea temporal pública"
-#: actions/public.php:151
+#: actions/public.php:159
#, fuzzy
msgid "Public Stream Feed (RSS 1.0)"
msgstr "Feed del flujo público"
-#: actions/public.php:155
+#: actions/public.php:163
#, fuzzy
msgid "Public Stream Feed (RSS 2.0)"
msgstr "Feed del flujo público"
-#: actions/public.php:159
+#: actions/public.php:167
#, fuzzy
msgid "Public Stream Feed (Atom)"
msgstr "Feed del flujo público"
-#: actions/public.php:179
+#: actions/public.php:187
#, php-format
msgid ""
"This is the public timeline for %%site.name%% but no one has posted anything "
"yet."
msgstr ""
-#: actions/public.php:182
+#: actions/public.php:190
msgid "Be the first to post!"
msgstr ""
-#: actions/public.php:186
+#: actions/public.php:194
#, php-format
msgid ""
"Why not [register an account](%%action.register%%) and be the first to post!"
msgstr ""
-#: actions/public.php:233
+#: actions/public.php:241
#, php-format
msgid ""
"This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2855,7 +2897,7 @@ msgid ""
"friends, family, and colleagues! ([Read more](%%doc.help%%))"
msgstr ""
-#: actions/public.php:238
+#: actions/public.php:246
#, fuzzy, php-format
msgid ""
"This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -3228,7 +3270,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:626
+#: actions/repeat.php:114 lib/noticelist.php:642
#, fuzzy
msgid "Repeated"
msgstr "Crear"
@@ -3290,6 +3332,11 @@ msgstr ""
msgid "Replies to %1$s on %2$s!"
msgstr "Respuestas a %1$s en %2$s!"
+#: actions/rsd.php:146 actions/version.php:157
+#, fuzzy
+msgid "StatusNet"
+msgstr "Status borrado."
+
#: actions/sandbox.php:65 actions/unsandbox.php:65
#, fuzzy
msgid "You cannot sandbox users on this site."
@@ -3336,79 +3383,84 @@ msgstr "Configuración de Avatar"
msgid "You must be logged in to view an application."
msgstr "Debes estar conectado para dejar un grupo."
-#: actions/showapplication.php:158
+#: actions/showapplication.php:157
#, fuzzy
msgid "Application profile"
msgstr "Aviso sin perfil"
-#: actions/showapplication.php:160 lib/applicationeditform.php:180
+#: actions/showapplication.php:159 lib/applicationeditform.php:180
msgid "Icon"
msgstr ""
-#: actions/showapplication.php:170 actions/version.php:195
+#: actions/showapplication.php:169 actions/version.php:195
#: lib/applicationeditform.php:195
#, fuzzy
msgid "Name"
msgstr "Apodo"
-#: actions/showapplication.php:179 lib/applicationeditform.php:222
+#: actions/showapplication.php:178 lib/applicationeditform.php:222
#, fuzzy
msgid "Organization"
msgstr "Paginación"
-#: actions/showapplication.php:188 actions/version.php:198
+#: actions/showapplication.php:187 actions/version.php:198
#: lib/applicationeditform.php:209 lib/groupeditform.php:172
msgid "Description"
msgstr "Descripción"
-#: actions/showapplication.php:193 actions/showgroup.php:429
+#: actions/showapplication.php:192 actions/showgroup.php:429
#: lib/profileaction.php:174
msgid "Statistics"
msgstr "Estadísticas"
-#: actions/showapplication.php:204
+#: actions/showapplication.php:203
#, php-format
-msgid "created by %1$s - %2$s access by default - %3$d users"
+msgid "Created by %1$s - %2$s access by default - %3$d users"
msgstr ""
-#: actions/showapplication.php:214
+#: actions/showapplication.php:213
msgid "Application actions"
msgstr ""
-#: actions/showapplication.php:233
+#: actions/showapplication.php:236
msgid "Reset key & secret"
msgstr ""
-#: actions/showapplication.php:241
+#: actions/showapplication.php:261
msgid "Application info"
msgstr ""
-#: actions/showapplication.php:243
+#: actions/showapplication.php:263
msgid "Consumer key"
msgstr ""
-#: actions/showapplication.php:248
+#: actions/showapplication.php:268
msgid "Consumer secret"
msgstr ""
-#: actions/showapplication.php:253
+#: actions/showapplication.php:273
msgid "Request token URL"
msgstr ""
-#: actions/showapplication.php:258
+#: actions/showapplication.php:278
msgid "Access token URL"
msgstr ""
-#: actions/showapplication.php:263
+#: actions/showapplication.php:283
msgid "Authorize URL"
msgstr ""
-#: actions/showapplication.php:268
+#: actions/showapplication.php:288
msgid ""
"Note: We support HMAC-SHA1 signatures. We do not support the plaintext "
"signature method."
msgstr ""
+#: actions/showapplication.php:309
+#, fuzzy
+msgid "Are you sure you want to reset your consumer key and secret?"
+msgstr "¿Estás seguro de que quieres eliminar este aviso?"
+
#: actions/showfavorites.php:79
#, fuzzy, php-format
msgid "%1$s's favorite notices, page %2$d"
@@ -3615,25 +3667,25 @@ msgstr "Feed de avisos de %s"
msgid "FOAF for %s"
msgstr "Bandeja de salida para %s"
-#: actions/showstream.php:191
+#: actions/showstream.php:200
#, php-format
msgid "This is the timeline for %1$s but %2$s hasn't posted anything yet."
msgstr ""
-#: actions/showstream.php:196
+#: actions/showstream.php:205
msgid ""
"Seen anything interesting recently? You haven't posted any notices yet, now "
"would be a good time to start :)"
msgstr ""
-#: actions/showstream.php:198
+#: actions/showstream.php:207
#, php-format
msgid ""
"You can try to nudge %1$s or [post something to his or her attention](%%%%"
"action.newnotice%%%%?status_textarea=%2$s)."
msgstr ""
-#: actions/showstream.php:234
+#: actions/showstream.php:243
#, php-format
msgid ""
"**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3642,7 +3694,7 @@ msgid ""
"follow **%s**'s notices and many more! ([Read more](%%%%doc.help%%%%))"
msgstr ""
-#: actions/showstream.php:239
+#: actions/showstream.php:248
#, fuzzy, php-format
msgid ""
"**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3652,7 +3704,7 @@ msgstr ""
"**%s** tiene una cuenta en %%%%site.name%%%%, un servicio [micro-blogging]"
"(http://en.wikipedia.org/wiki/Micro-blogging) "
-#: actions/showstream.php:296
+#: actions/showstream.php:305
#, fuzzy, php-format
msgid "Repeat of %s"
msgstr "Respuestas a %s"
@@ -4346,11 +4398,6 @@ msgid ""
"Inc. and contributors."
msgstr ""
-#: actions/version.php:157
-#, fuzzy
-msgid "StatusNet"
-msgstr "Status borrado."
-
#: actions/version.php:161
msgid "Contributors"
msgstr ""
@@ -4480,22 +4527,22 @@ msgstr "Tienes prohibido publicar avisos en este sitio."
msgid "Problem saving notice."
msgstr "Hubo un problema al guardar el aviso."
-#: classes/Notice.php:790
+#: classes/Notice.php:788
#, fuzzy
msgid "Problem saving group inbox."
msgstr "Hubo un problema al guardar el aviso."
-#: classes/Notice.php:850
+#: classes/Notice.php:848
#, php-format
msgid "DB error inserting reply: %s"
msgstr "Error de BD al insertar respuesta: %s"
-#: classes/Notice.php:1233
+#: classes/Notice.php:1231
#, php-format
msgid "RT @%1$s %2$s"
msgstr "RT @%1$s %2$s"
-#: classes/User.php:382
+#: classes/User.php:385
#, php-format
msgid "Welcome to %1$s, @%2$s!"
msgstr "Bienvenido a %1$s, @%2$s!"
@@ -4782,11 +4829,11 @@ msgstr "SMS confirmación"
msgid "Sessions configuration"
msgstr "SMS confirmación"
-#: lib/apiauth.php:99
+#: lib/apiauth.php:95
msgid "API resource requires read-write access, but you only have read access."
msgstr ""
-#: lib/apiauth.php:279
+#: lib/apiauth.php:273
#, php-format
msgid "Failed API auth attempt, nickname = %1$s, proxy = %2$s, ip = %3$s"
msgstr ""
@@ -5156,19 +5203,19 @@ msgid ""
"tracking - not yet implemented.\n"
msgstr ""
-#: lib/common.php:131
+#: lib/common.php:135
msgid "No configuration file found. "
msgstr "Ningún archivo de configuración encontrado. "
-#: lib/common.php:132
+#: lib/common.php:136
msgid "I looked for configuration files in the following places: "
msgstr ""
-#: lib/common.php:134
+#: lib/common.php:138
msgid "You may wish to run the installer to fix this."
msgstr ""
-#: lib/common.php:135
+#: lib/common.php:139
msgid "Go to the installer."
msgstr "Ir al instalador."
@@ -5746,24 +5793,24 @@ msgstr ""
msgid "at"
msgstr "en"
-#: lib/noticelist.php:531
+#: lib/noticelist.php:547
msgid "in context"
msgstr "en contexto"
-#: lib/noticelist.php:556
+#: lib/noticelist.php:572
#, fuzzy
msgid "Repeated by"
msgstr "Crear"
-#: lib/noticelist.php:582
+#: lib/noticelist.php:598
msgid "Reply to this notice"
msgstr "Responder este aviso."
-#: lib/noticelist.php:583
+#: lib/noticelist.php:599
msgid "Reply"
msgstr "Responder"
-#: lib/noticelist.php:625
+#: lib/noticelist.php:641
#, fuzzy
msgid "Notice repeated"
msgstr "Aviso borrado"
@@ -5910,6 +5957,10 @@ msgstr "Responder este aviso."
msgid "Repeat this notice"
msgstr "Responder este aviso."
+#: lib/router.php:665
+msgid "No single user defined for single-user mode."
+msgstr ""
+
#: lib/sandboxform.php:67
#, fuzzy
msgid "Sandbox"
@@ -6084,47 +6135,47 @@ msgstr "Mensaje"
msgid "Moderate"
msgstr "Moderar"
-#: lib/util.php:868
+#: lib/util.php:867
msgid "a few seconds ago"
msgstr "hace unos segundos"
-#: lib/util.php:870
+#: lib/util.php:869
msgid "about a minute ago"
msgstr "hace un minuto"
-#: lib/util.php:872
+#: lib/util.php:871
#, php-format
msgid "about %d minutes ago"
msgstr "hace %d minutos"
-#: lib/util.php:874
+#: lib/util.php:873
msgid "about an hour ago"
msgstr "hace una hora"
-#: lib/util.php:876
+#: lib/util.php:875
#, php-format
msgid "about %d hours ago"
msgstr "hace %d horas"
-#: lib/util.php:878
+#: lib/util.php:877
msgid "about a day ago"
msgstr "hace un día"
-#: lib/util.php:880
+#: lib/util.php:879
#, php-format
msgid "about %d days ago"
msgstr "hace %d días"
-#: lib/util.php:882
+#: lib/util.php:881
msgid "about a month ago"
msgstr "hace un mes"
-#: lib/util.php:884
+#: lib/util.php:883
#, php-format
msgid "about %d months ago"
msgstr "hace %d meses"
-#: lib/util.php:886
+#: lib/util.php:885
msgid "about a year ago"
msgstr "hace un año"
diff --git a/locale/fa/LC_MESSAGES/statusnet.po b/locale/fa/LC_MESSAGES/statusnet.po
index a6810ee5b..c5856c88d 100644
--- a/locale/fa/LC_MESSAGES/statusnet.po
+++ b/locale/fa/LC_MESSAGES/statusnet.po
@@ -10,8 +10,8 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-01-30 23:41+0000\n"
-"PO-Revision-Date: 2010-01-30 23:41:45+0000\n"
+"POT-Creation-Date: 2010-02-04 10:31+0000\n"
+"PO-Revision-Date: 2010-02-04 10:32:36+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 (r61734); Translate extension (2010-01-16)\n"
+"X-Generator: MediaWiki 1.16alpha (r61969); Translate extension (2010-01-16)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
#: actions/accessadminpanel.php:54 lib/adminpanelaction.php:326
@@ -99,7 +99,7 @@ msgstr "چنین صفحه‌ای وجود ندارد"
#: actions/favoritesrss.php:74 actions/foaf.php:40 actions/foaf.php:58
#: actions/microsummary.php:62 actions/newmessage.php:116 actions/otp.php:76
#: actions/remotesubscribe.php:145 actions/remotesubscribe.php:154
-#: actions/replies.php:73 actions/repliesrss.php:38
+#: actions/replies.php:73 actions/repliesrss.php:38 actions/rsd.php:116
#: actions/showfavorites.php:105 actions/userbyid.php:74
#: actions/usergroups.php:91 actions/userrss.php:38 actions/xrds.php:71
#: lib/command.php:163 lib/command.php:302 lib/command.php:355
@@ -160,7 +160,7 @@ msgstr ""
"اولین کسی باشید که در [این موضوع](%%%%action.newnotice%%%%?status_textarea=%"
"s) پیام می‌فرستد."
-#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:202
+#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:211
#, php-format
msgid ""
"Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
@@ -388,8 +388,8 @@ msgstr "این لقب در حال حاضر ثبت شده است. لطفا یکی
msgid "Not a valid nickname."
msgstr "لقب نا معتبر."
-#: actions/apigroupcreate.php:196 actions/editapplication.php:212
-#: actions/editgroup.php:195 actions/newapplication.php:200
+#: actions/apigroupcreate.php:196 actions/editapplication.php:215
+#: actions/editgroup.php:195 actions/newapplication.php:203
#: actions/newgroup.php:139 actions/profilesettings.php:222
#: actions/register.php:217
msgid "Homepage is not a valid URL."
@@ -401,8 +401,8 @@ msgstr "برگهٔ آغازین یک نشانی معتبر نیست."
msgid "Full name is too long (max 255 chars)."
msgstr "نام کامل طولانی است (۲۵۵ حرف در حالت بیشینه(."
-#: actions/apigroupcreate.php:213 actions/editapplication.php:187
-#: actions/newapplication.php:169
+#: actions/apigroupcreate.php:213 actions/editapplication.php:190
+#: actions/newapplication.php:172
#, php-format
msgid "Description is too long (max %d chars)."
msgstr "توصیف بسیار زیاد است (حداکثر %d حرف)."
@@ -479,18 +479,23 @@ msgstr "%s گروه"
msgid "groups on %s"
msgstr "گروه‌ها در %s"
-#: actions/apioauthauthorize.php:108 actions/apioauthauthorize.php:114
-msgid "Bad request."
+#: actions/apioauthauthorize.php:101
+msgid "No oauth_token parameter provided."
msgstr ""
-#: actions/apioauthauthorize.php:134 actions/avatarsettings.php:268
+#: actions/apioauthauthorize.php:106
+#, fuzzy
+msgid "Invalid token."
+msgstr "اندازه‌ی نادرست"
+
+#: actions/apioauthauthorize.php:123 actions/avatarsettings.php:268
#: actions/deletenotice.php:157 actions/disfavor.php:74
-#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:50
+#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:54
#: actions/groupblock.php:66 actions/grouplogo.php:309
#: actions/groupunblock.php:66 actions/imsettings.php:206
#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
-#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:139
+#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:135
#: actions/othersettings.php:145 actions/passwordsettings.php:138
#: actions/profilesettings.php:194 actions/recoverpassword.php:337
#: actions/register.php:165 actions/remotesubscribe.php:77
@@ -501,75 +506,83 @@ msgstr ""
msgid "There was a problem with your session token. Try again, please."
msgstr "مشکلی در دریافت جلسه‌ی شما وجود دارد. لطفا بعدا سعی کنید."
-#: actions/apioauthauthorize.php:146
+#: actions/apioauthauthorize.php:135
#, fuzzy
msgid "Invalid nickname / password!"
msgstr "نام کاربری یا کلمه ی عبور نا معتبر."
-#: actions/apioauthauthorize.php:170
+#: actions/apioauthauthorize.php:159
msgid "Database error deleting OAuth application user."
msgstr ""
-#: actions/apioauthauthorize.php:196
+#: actions/apioauthauthorize.php:185
msgid "Database error inserting OAuth application user."
msgstr ""
-#: actions/apioauthauthorize.php:231
+#: actions/apioauthauthorize.php:214
#, php-format
msgid ""
"The request token %s has been authorized. Please exchange it for an access "
"token."
msgstr ""
-#: actions/apioauthauthorize.php:241
+#: actions/apioauthauthorize.php:227
#, php-format
-msgid "The request token %s has been denied."
+msgid "The request token %s has been denied and revoked."
msgstr ""
-#: actions/apioauthauthorize.php:246 actions/avatarsettings.php:281
+#: actions/apioauthauthorize.php:232 actions/avatarsettings.php:281
#: actions/designadminpanel.php:103 actions/editapplication.php:139
#: actions/emailsettings.php:256 actions/grouplogo.php:319
#: actions/imsettings.php:220 actions/newapplication.php:121
-#: actions/oauthconnectionssettings.php:151 actions/recoverpassword.php:44
+#: actions/oauthconnectionssettings.php:147 actions/recoverpassword.php:44
#: actions/smssettings.php:248 lib/designsettings.php:304
msgid "Unexpected form submission."
msgstr "ارسال غیر قابل انتظار فرم."
-#: actions/apioauthauthorize.php:273
+#: actions/apioauthauthorize.php:259
msgid "An application would like to connect to your account"
msgstr ""
-#: actions/apioauthauthorize.php:290
+#: actions/apioauthauthorize.php:276
msgid "Allow or deny access"
msgstr ""
-#: actions/apioauthauthorize.php:320 lib/action.php:441
+#: actions/apioauthauthorize.php:292
+#, php-format
+msgid ""
+"The application <strong>%1$s</strong> by <strong>%2$s</strong> would like "
+"the ability to <strong>%3$s</strong> your %4$s account data. You should only "
+"give access to your %4$s account to third parties you trust."
+msgstr ""
+
+#: actions/apioauthauthorize.php:310 lib/action.php:441
msgid "Account"
msgstr "حساب کاربری"
-#: actions/apioauthauthorize.php:323 actions/login.php:230
+#: actions/apioauthauthorize.php:313 actions/login.php:230
#: actions/profilesettings.php:106 actions/register.php:424
#: actions/showgroup.php:236 actions/tagother.php:94 lib/groupeditform.php:152
#: lib/userprofile.php:131
msgid "Nickname"
msgstr "نام کاربری"
-#: actions/apioauthauthorize.php:326 actions/login.php:233
+#: actions/apioauthauthorize.php:316 actions/login.php:233
#: actions/register.php:429 lib/accountsettingsaction.php:116
msgid "Password"
msgstr "گذرواژه"
-#: actions/apioauthauthorize.php:338
+#: actions/apioauthauthorize.php:328
#, fuzzy
msgid "Deny"
msgstr "طرح"
-#: actions/apioauthauthorize.php:344
+#: actions/apioauthauthorize.php:334
#, fuzzy
msgid "Allow"
msgstr "همه"
-#: actions/apioauthauthorize.php:361
+#: actions/apioauthauthorize.php:351
msgid "Allow or deny access to your account information."
msgstr ""
@@ -739,8 +752,8 @@ msgstr "اصلی"
msgid "Preview"
msgstr "پیش‌نمایش"
-#: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:608
+#: actions/avatarsettings.php:149 actions/showapplication.php:252
+#: lib/deleteuserform.php:66 lib/noticelist.php:624
msgid "Delete"
msgstr "حذف"
@@ -791,8 +804,9 @@ msgstr ""
"دنبال کند. همچنین دیگر شما از پیام‌هایی که در آن از شما یاد می‌کند با خبر "
"نخواهید شد"
-#: actions/block.php:143 actions/deletenotice.php:145
-#: actions/deleteuser.php:147 actions/groupblock.php:178
+#: actions/block.php:143 actions/deleteapplication.php:153
+#: actions/deletenotice.php:145 actions/deleteuser.php:147
+#: actions/groupblock.php:178
msgid "No"
msgstr "خیر"
@@ -800,9 +814,9 @@ msgstr "خیر"
msgid "Do not block this user"
msgstr "کاربر را مسدود نکن"
-#: actions/block.php:144 actions/deletenotice.php:146
-#: actions/deleteuser.php:148 actions/groupblock.php:179
-#: lib/repeatform.php:132
+#: actions/block.php:144 actions/deleteapplication.php:158
+#: actions/deletenotice.php:146 actions/deleteuser.php:148
+#: actions/groupblock.php:179 lib/repeatform.php:132
msgid "Yes"
msgstr "بله"
@@ -907,6 +921,53 @@ msgstr "مکالمه"
msgid "Notices"
msgstr "پیام‌ها"
+#: actions/deleteapplication.php:63
+#, fuzzy
+msgid "You must be logged in to delete an application."
+msgstr "برای ویرایش گروه باید وارد شوید."
+
+#: actions/deleteapplication.php:71
+#, fuzzy
+msgid "Application not found."
+msgstr "ابن خبر ذخیره ای ندارد ."
+
+#: actions/deleteapplication.php:78 actions/editapplication.php:77
+#: actions/showapplication.php:94
+#, fuzzy
+msgid "You are not the owner of this application."
+msgstr "شما یک عضو این گروه نیستید."
+
+#: actions/deleteapplication.php:102 actions/editapplication.php:127
+#: actions/newapplication.php:110 actions/showapplication.php:118
+#: lib/action.php:1195
+msgid "There was a problem with your session token."
+msgstr ""
+
+#: actions/deleteapplication.php:123 actions/deleteapplication.php:147
+#, fuzzy
+msgid "Delete application"
+msgstr "چنین پیامی وجود ندارد."
+
+#: actions/deleteapplication.php:149
+#, fuzzy
+msgid ""
+"Are you sure you want to delete this application? This will clear all data "
+"about the application from the database, including all existing user "
+"connections."
+msgstr ""
+"آیا مطمئن هستید که می‌خواهید این کاربر را پاک کنید؟ با این کار تمام اطلاعات "
+"پاک و بدون برگشت خواهند بود."
+
+#: actions/deleteapplication.php:156
+#, fuzzy
+msgid "Do not delete this application"
+msgstr "این پیام را پاک نکن"
+
+#: actions/deleteapplication.php:160
+#, fuzzy
+msgid "Delete this application"
+msgstr "این پیام را پاک کن"
+
#: actions/deletenotice.php:67 actions/disfavor.php:61 actions/favor.php:62
#: actions/groupblock.php:61 actions/groupunblock.php:61 actions/logout.php:69
#: actions/makeadmin.php:61 actions/newmessage.php:87 actions/newnotice.php:89
@@ -941,7 +1002,7 @@ msgstr "آیا اطمینان دارید که می‌خواهید این پیا
msgid "Do not delete this notice"
msgstr "این پیام را پاک نکن"
-#: actions/deletenotice.php:146 lib/noticelist.php:608
+#: actions/deletenotice.php:146 lib/noticelist.php:624
msgid "Delete this notice"
msgstr "این پیام را پاک کن"
@@ -1085,7 +1146,7 @@ msgstr "این آگهی یک آگهی برگزیده نیست!"
msgid "Add to favorites"
msgstr "افزودن به علاقه‌مندی‌ها"
-#: actions/doc.php:155
+#: actions/doc.php:158
#, fuzzy, php-format
msgid "No such document \"%s\""
msgstr "چنین سندی وجود ندارد."
@@ -1100,22 +1161,12 @@ msgstr "انتخابات دیگر"
msgid "You must be logged in to edit an application."
msgstr "برای ویرایش گروه باید وارد شوید."
-#: actions/editapplication.php:77 actions/showapplication.php:94
-#, fuzzy
-msgid "You are not the owner of this application."
-msgstr "شما یک عضو این گروه نیستید."
-
-#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:163
+#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:166
#: actions/showapplication.php:87
#, fuzzy
msgid "No such application."
msgstr "چنین پیامی وجود ندارد."
-#: actions/editapplication.php:127 actions/newapplication.php:110
-#: actions/showapplication.php:118 lib/action.php:1195
-msgid "There was a problem with your session token."
-msgstr ""
-
#: actions/editapplication.php:161
#, fuzzy
msgid "Use this form to edit your application."
@@ -1125,46 +1176,51 @@ msgstr "از این روش برای ویرایش گروه استفاده کنی
msgid "Name is required."
msgstr ""
-#: actions/editapplication.php:180 actions/newapplication.php:162
+#: actions/editapplication.php:180 actions/newapplication.php:165
#, fuzzy
msgid "Name is too long (max 255 chars)."
msgstr "نام کامل طولانی است (۲۵۵ حرف در حالت بیشینه(."
-#: actions/editapplication.php:183 actions/newapplication.php:165
+#: actions/editapplication.php:183 actions/newapplication.php:162
+#, fuzzy
+msgid "Name already in use. Try another one."
+msgstr "این لقب در حال حاضر ثبت شده است. لطفا یکی دیگر انتخاب کنید."
+
+#: actions/editapplication.php:186 actions/newapplication.php:168
msgid "Description is required."
msgstr ""
-#: actions/editapplication.php:191
+#: actions/editapplication.php:194
msgid "Source URL is too long."
msgstr ""
-#: actions/editapplication.php:197 actions/newapplication.php:182
+#: actions/editapplication.php:200 actions/newapplication.php:185
#, fuzzy
msgid "Source URL is not valid."
msgstr "برگهٔ آغازین یک نشانی معتبر نیست."
-#: actions/editapplication.php:200 actions/newapplication.php:185
+#: actions/editapplication.php:203 actions/newapplication.php:188
msgid "Organization is required."
msgstr ""
-#: actions/editapplication.php:203 actions/newapplication.php:188
+#: actions/editapplication.php:206 actions/newapplication.php:191
#, fuzzy
msgid "Organization is too long (max 255 chars)."
msgstr "مکان طولانی است (حداکثر ۲۵۵ حرف)"
-#: actions/editapplication.php:206 actions/newapplication.php:191
+#: actions/editapplication.php:209 actions/newapplication.php:194
msgid "Organization homepage is required."
msgstr ""
-#: actions/editapplication.php:215 actions/newapplication.php:203
+#: actions/editapplication.php:218 actions/newapplication.php:206
msgid "Callback is too long."
msgstr ""
-#: actions/editapplication.php:222 actions/newapplication.php:212
+#: actions/editapplication.php:225 actions/newapplication.php:215
msgid "Callback URL is not valid."
msgstr ""
-#: actions/editapplication.php:255
+#: actions/editapplication.php:258
#, fuzzy
msgid "Could not update application."
msgstr "نمی‌توان گروه را به‌هنگام‌سازی کرد."
@@ -2060,11 +2116,11 @@ msgstr "برای ساخت یک گروه، باید وارد شده باشید."
msgid "Use this form to register a new application."
msgstr "از این فرم برای ساختن یک گروه جدید استفاده کنید"
-#: actions/newapplication.php:173
+#: actions/newapplication.php:176
msgid "Source URL is required."
msgstr ""
-#: actions/newapplication.php:255 actions/newapplication.php:264
+#: actions/newapplication.php:258 actions/newapplication.php:267
#, fuzzy
msgid "Could not create application."
msgstr "نمی‌توان نام‌های مستعار را ساخت."
@@ -2200,29 +2256,29 @@ msgstr ""
msgid "You have not registered any applications yet."
msgstr ""
-#: actions/oauthconnectionssettings.php:71
+#: actions/oauthconnectionssettings.php:72
msgid "Connected applications"
msgstr ""
-#: actions/oauthconnectionssettings.php:87
+#: actions/oauthconnectionssettings.php:83
msgid "You have allowed the following applications to access you account."
msgstr ""
-#: actions/oauthconnectionssettings.php:170
+#: actions/oauthconnectionssettings.php:175
#, fuzzy
msgid "You are not a user of that application."
msgstr "شما یک کاربر این گروه نیستید."
-#: actions/oauthconnectionssettings.php:180
+#: actions/oauthconnectionssettings.php:186
msgid "Unable to revoke access for app: "
msgstr ""
-#: actions/oauthconnectionssettings.php:192
+#: actions/oauthconnectionssettings.php:198
#, php-format
msgid "You have not authorized any applications to use your account."
msgstr ""
-#: actions/oauthconnectionssettings.php:205
+#: actions/oauthconnectionssettings.php:211
msgid "Developers can edit the registration settings for their applications "
msgstr ""
@@ -2726,36 +2782,36 @@ msgstr "خط زمانی عمومی، صفحه‌ی %d"
msgid "Public timeline"
msgstr "خط زمانی عمومی"
-#: actions/public.php:151
+#: actions/public.php:159
msgid "Public Stream Feed (RSS 1.0)"
msgstr ""
-#: actions/public.php:155
+#: actions/public.php:163
msgid "Public Stream Feed (RSS 2.0)"
msgstr ""
-#: actions/public.php:159
+#: actions/public.php:167
msgid "Public Stream Feed (Atom)"
msgstr ""
-#: actions/public.php:179
+#: actions/public.php:187
#, php-format
msgid ""
"This is the public timeline for %%site.name%% but no one has posted anything "
"yet."
msgstr ""
-#: actions/public.php:182
+#: actions/public.php:190
msgid "Be the first to post!"
msgstr "اولین کسی باشید که پیام می‌فرستد!"
-#: actions/public.php:186
+#: actions/public.php:194
#, php-format
msgid ""
"Why not [register an account](%%action.register%%) and be the first to post!"
msgstr "چرا [ثبت نام](%%action.register%%) نمی‌کنید و اولین پیام را نمی‌فرستید؟"
-#: actions/public.php:233
+#: actions/public.php:241
#, php-format
msgid ""
"This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2764,7 +2820,7 @@ msgid ""
"friends, family, and colleagues! ([Read more](%%doc.help%%))"
msgstr ""
-#: actions/public.php:238
+#: actions/public.php:246
#, php-format
msgid ""
"This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -3101,7 +3157,7 @@ msgstr "شما نمی توانید آگهی خودتان را تکرار کنی
msgid "You already repeated that notice."
msgstr "شما قبلا آن آگهی را تکرار کردید."
-#: actions/repeat.php:114 lib/noticelist.php:626
+#: actions/repeat.php:114 lib/noticelist.php:642
msgid "Repeated"
msgstr ""
@@ -3163,6 +3219,11 @@ msgstr ""
msgid "Replies to %1$s on %2$s!"
msgstr ""
+#: actions/rsd.php:146 actions/version.php:157
+#, fuzzy
+msgid "StatusNet"
+msgstr "وضعیت حذف شد."
+
#: actions/sandbox.php:65 actions/unsandbox.php:65
msgid "You cannot sandbox users on this site."
msgstr ""
@@ -3207,80 +3268,85 @@ msgstr ""
msgid "You must be logged in to view an application."
msgstr "برای ترک یک گروه، شما باید وارد شده باشید."
-#: actions/showapplication.php:158
+#: actions/showapplication.php:157
#, fuzzy
msgid "Application profile"
msgstr "ابن خبر ذخیره ای ندارد ."
-#: actions/showapplication.php:160 lib/applicationeditform.php:180
+#: actions/showapplication.php:159 lib/applicationeditform.php:180
msgid "Icon"
msgstr ""
-#: actions/showapplication.php:170 actions/version.php:195
+#: actions/showapplication.php:169 actions/version.php:195
#: lib/applicationeditform.php:195
#, fuzzy
msgid "Name"
msgstr "نام کاربری"
-#: actions/showapplication.php:179 lib/applicationeditform.php:222
+#: actions/showapplication.php:178 lib/applicationeditform.php:222
#, fuzzy
msgid "Organization"
msgstr "صفحه بندى"
-#: actions/showapplication.php:188 actions/version.php:198
+#: actions/showapplication.php:187 actions/version.php:198
#: lib/applicationeditform.php:209 lib/groupeditform.php:172
msgid "Description"
msgstr ""
-#: actions/showapplication.php:193 actions/showgroup.php:429
+#: actions/showapplication.php:192 actions/showgroup.php:429
#: lib/profileaction.php:174
msgid "Statistics"
msgstr "آمار"
-#: actions/showapplication.php:204
+#: actions/showapplication.php:203
#, php-format
-msgid "created by %1$s - %2$s access by default - %3$d users"
+msgid "Created by %1$s - %2$s access by default - %3$d users"
msgstr ""
-#: actions/showapplication.php:214
+#: actions/showapplication.php:213
msgid "Application actions"
msgstr ""
-#: actions/showapplication.php:233
+#: actions/showapplication.php:236
msgid "Reset key & secret"
msgstr ""
-#: actions/showapplication.php:241
+#: actions/showapplication.php:261
msgid "Application info"
msgstr ""
-#: actions/showapplication.php:243
+#: actions/showapplication.php:263
msgid "Consumer key"
msgstr ""
-#: actions/showapplication.php:248
+#: actions/showapplication.php:268
msgid "Consumer secret"
msgstr ""
-#: actions/showapplication.php:253
+#: actions/showapplication.php:273
msgid "Request token URL"
msgstr ""
-#: actions/showapplication.php:258
+#: actions/showapplication.php:278
msgid "Access token URL"
msgstr ""
-#: actions/showapplication.php:263
+#: actions/showapplication.php:283
#, fuzzy
msgid "Authorize URL"
msgstr "مؤلف"
-#: actions/showapplication.php:268
+#: actions/showapplication.php:288
msgid ""
"Note: We support HMAC-SHA1 signatures. We do not support the plaintext "
"signature method."
msgstr ""
+#: actions/showapplication.php:309
+#, fuzzy
+msgid "Are you sure you want to reset your consumer key and secret?"
+msgstr "آیا اطمینان دارید که می‌خواهید این پیام را پاک کنید؟"
+
#: actions/showfavorites.php:79
#, fuzzy, php-format
msgid "%1$s's favorite notices, page %2$d"
@@ -3480,12 +3546,12 @@ msgstr ""
msgid "FOAF for %s"
msgstr ""
-#: actions/showstream.php:191
+#: actions/showstream.php:200
#, fuzzy, php-format
msgid "This is the timeline for %1$s but %2$s hasn't posted anything yet."
msgstr "این خط‌زمانی %s و دوستانش است، اما هیچ‌یک تاکنون چیزی پست نکرده‌اند."
-#: actions/showstream.php:196
+#: actions/showstream.php:205
msgid ""
"Seen anything interesting recently? You haven't posted any notices yet, now "
"would be a good time to start :)"
@@ -3493,7 +3559,7 @@ msgstr ""
"اخیرا چیز جالب توجه ای دیده اید؟ شما تا کنون آگهی ارسال نکرده اید، الان می "
"تواند زمان خوبی برای شروع باشد :)"
-#: actions/showstream.php:198
+#: actions/showstream.php:207
#, fuzzy, php-format
msgid ""
"You can try to nudge %1$s or [post something to his or her attention](%%%%"
@@ -3502,7 +3568,7 @@ msgstr ""
"اولین کسی باشید که در [این موضوع](%%%%action.newnotice%%%%?status_textarea=%"
"s) پیام می‌فرستد."
-#: actions/showstream.php:234
+#: actions/showstream.php:243
#, php-format
msgid ""
"**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3511,7 +3577,7 @@ msgid ""
"follow **%s**'s notices and many more! ([Read more](%%%%doc.help%%%%))"
msgstr ""
-#: actions/showstream.php:239
+#: actions/showstream.php:248
#, php-format
msgid ""
"**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3519,7 +3585,7 @@ msgid ""
"[StatusNet](http://status.net/) tool. "
msgstr ""
-#: actions/showstream.php:296
+#: actions/showstream.php:305
#, php-format
msgid "Repeat of %s"
msgstr ""
@@ -4166,11 +4232,6 @@ msgid ""
"Inc. and contributors."
msgstr ""
-#: actions/version.php:157
-#, fuzzy
-msgid "StatusNet"
-msgstr "وضعیت حذف شد."
-
#: actions/version.php:161
msgid "Contributors"
msgstr ""
@@ -4295,22 +4356,22 @@ msgstr "شما از فرستادن پست در این سایت مردود شدی
msgid "Problem saving notice."
msgstr "مشکل در ذخیره کردن آگهی."
-#: classes/Notice.php:790
+#: classes/Notice.php:788
#, fuzzy
msgid "Problem saving group inbox."
msgstr "مشکل در ذخیره کردن آگهی."
-#: classes/Notice.php:850
+#: classes/Notice.php:848
#, php-format
msgid "DB error inserting reply: %s"
msgstr ""
-#: classes/Notice.php:1233
+#: classes/Notice.php:1231
#, php-format
msgid "RT @%1$s %2$s"
msgstr ""
-#: classes/User.php:382
+#: classes/User.php:385
#, php-format
msgid "Welcome to %1$s, @%2$s!"
msgstr "خوش امدید به %1$s , @%2$s!"
@@ -4583,11 +4644,11 @@ msgstr ""
msgid "Sessions configuration"
msgstr "پیکره بندی اصلی سایت"
-#: lib/apiauth.php:99
+#: lib/apiauth.php:95
msgid "API resource requires read-write access, but you only have read access."
msgstr ""
-#: lib/apiauth.php:279
+#: lib/apiauth.php:273
#, php-format
msgid "Failed API auth attempt, nickname = %1$s, proxy = %2$s, ip = %3$s"
msgstr ""
@@ -4951,19 +5012,19 @@ msgid ""
"tracking - not yet implemented.\n"
msgstr ""
-#: lib/common.php:131
+#: lib/common.php:135
msgid "No configuration file found. "
msgstr ""
-#: lib/common.php:132
+#: lib/common.php:136
msgid "I looked for configuration files in the following places: "
msgstr ""
-#: lib/common.php:134
+#: lib/common.php:138
msgid "You may wish to run the installer to fix this."
msgstr "شما ممکن است بخواهید نصاب را اجرا کنید تا این را تعمیر کند."
-#: lib/common.php:135
+#: lib/common.php:139
msgid "Go to the installer."
msgstr "برو به نصاب."
@@ -5526,23 +5587,23 @@ msgstr ""
msgid "at"
msgstr "در"
-#: lib/noticelist.php:531
+#: lib/noticelist.php:547
msgid "in context"
msgstr "در زمینه"
-#: lib/noticelist.php:556
+#: lib/noticelist.php:572
msgid "Repeated by"
msgstr "تکرار از"
-#: lib/noticelist.php:582
+#: lib/noticelist.php:598
msgid "Reply to this notice"
msgstr "به این آگهی جواب دهید"
-#: lib/noticelist.php:583
+#: lib/noticelist.php:599
msgid "Reply"
msgstr "جواب دادن"
-#: lib/noticelist.php:625
+#: lib/noticelist.php:641
msgid "Notice repeated"
msgstr "آگهی تکرار شد"
@@ -5684,6 +5745,10 @@ msgstr "به این آگهی جواب دهید"
msgid "Repeat this notice"
msgstr ""
+#: lib/router.php:665
+msgid "No single user defined for single-user mode."
+msgstr ""
+
#: lib/sandboxform.php:67
msgid "Sandbox"
msgstr ""
@@ -5849,47 +5914,47 @@ msgstr "پیام"
msgid "Moderate"
msgstr ""
-#: lib/util.php:868
+#: lib/util.php:867
msgid "a few seconds ago"
msgstr "چند ثانیه پیش"
-#: lib/util.php:870
+#: lib/util.php:869
msgid "about a minute ago"
msgstr "حدود یک دقیقه پیش"
-#: lib/util.php:872
+#: lib/util.php:871
#, php-format
msgid "about %d minutes ago"
msgstr "حدود %d دقیقه پیش"
-#: lib/util.php:874
+#: lib/util.php:873
msgid "about an hour ago"
msgstr "حدود یک ساعت پیش"
-#: lib/util.php:876
+#: lib/util.php:875
#, php-format
msgid "about %d hours ago"
msgstr "حدود %d ساعت پیش"
-#: lib/util.php:878
+#: lib/util.php:877
msgid "about a day ago"
msgstr "حدود یک روز پیش"
-#: lib/util.php:880
+#: lib/util.php:879
#, php-format
msgid "about %d days ago"
msgstr "حدود %d روز پیش"
-#: lib/util.php:882
+#: lib/util.php:881
msgid "about a month ago"
msgstr "حدود یک ماه پیش"
-#: lib/util.php:884
+#: lib/util.php:883
#, php-format
msgid "about %d months ago"
msgstr "حدود %d ماه پیش"
-#: lib/util.php:886
+#: lib/util.php:885
msgid "about a year ago"
msgstr "حدود یک سال پیش"
diff --git a/locale/fi/LC_MESSAGES/statusnet.po b/locale/fi/LC_MESSAGES/statusnet.po
index 57cd6956e..c013107f4 100644
--- a/locale/fi/LC_MESSAGES/statusnet.po
+++ b/locale/fi/LC_MESSAGES/statusnet.po
@@ -10,12 +10,12 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-01-30 23:41+0000\n"
-"PO-Revision-Date: 2010-01-30 23:41:42+0000\n"
+"POT-Creation-Date: 2010-02-04 10:31+0000\n"
+"PO-Revision-Date: 2010-02-04 10:32:32+0000\n"
"Language-Team: Finnish\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.16alpha (r61734); Translate extension (2010-01-16)\n"
+"X-Generator: MediaWiki 1.16alpha (r61969); Translate extension (2010-01-16)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: fi\n"
"X-Message-Group: out-statusnet\n"
@@ -101,7 +101,7 @@ msgstr "Sivua ei ole."
#: actions/favoritesrss.php:74 actions/foaf.php:40 actions/foaf.php:58
#: actions/microsummary.php:62 actions/newmessage.php:116 actions/otp.php:76
#: actions/remotesubscribe.php:145 actions/remotesubscribe.php:154
-#: actions/replies.php:73 actions/repliesrss.php:38
+#: actions/replies.php:73 actions/repliesrss.php:38 actions/rsd.php:116
#: actions/showfavorites.php:105 actions/userbyid.php:74
#: actions/usergroups.php:91 actions/userrss.php:38 actions/xrds.php:71
#: lib/command.php:163 lib/command.php:302 lib/command.php:355
@@ -164,7 +164,7 @@ msgstr ""
"Ole ensimmäinen joka [lähettää päivityksen tästä aiheesta] (%%%%action."
"newnotice%%%%?status_textarea=%s)!"
-#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:202
+#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:211
#, php-format
msgid ""
"Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
@@ -400,8 +400,8 @@ msgstr "Tunnus on jo käytössä. Yritä toista tunnusta."
msgid "Not a valid nickname."
msgstr "Tuo ei ole kelvollinen tunnus."
-#: actions/apigroupcreate.php:196 actions/editapplication.php:212
-#: actions/editgroup.php:195 actions/newapplication.php:200
+#: actions/apigroupcreate.php:196 actions/editapplication.php:215
+#: actions/editgroup.php:195 actions/newapplication.php:203
#: actions/newgroup.php:139 actions/profilesettings.php:222
#: actions/register.php:217
msgid "Homepage is not a valid URL."
@@ -413,8 +413,8 @@ msgstr "Kotisivun verkko-osoite ei ole toimiva."
msgid "Full name is too long (max 255 chars)."
msgstr "Koko nimi on liian pitkä (max 255 merkkiä)."
-#: actions/apigroupcreate.php:213 actions/editapplication.php:187
-#: actions/newapplication.php:169
+#: actions/apigroupcreate.php:213 actions/editapplication.php:190
+#: actions/newapplication.php:172
#, fuzzy, php-format
msgid "Description is too long (max %d chars)."
msgstr "kuvaus on liian pitkä (max 140 merkkiä)."
@@ -491,18 +491,23 @@ msgstr "Käyttäjän %s ryhmät"
msgid "groups on %s"
msgstr "Ryhmän toiminnot"
-#: actions/apioauthauthorize.php:108 actions/apioauthauthorize.php:114
-msgid "Bad request."
+#: actions/apioauthauthorize.php:101
+msgid "No oauth_token parameter provided."
msgstr ""
-#: actions/apioauthauthorize.php:134 actions/avatarsettings.php:268
+#: actions/apioauthauthorize.php:106
+#, fuzzy
+msgid "Invalid token."
+msgstr "Koko ei kelpaa."
+
+#: actions/apioauthauthorize.php:123 actions/avatarsettings.php:268
#: actions/deletenotice.php:157 actions/disfavor.php:74
-#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:50
+#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:54
#: actions/groupblock.php:66 actions/grouplogo.php:309
#: actions/groupunblock.php:66 actions/imsettings.php:206
#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
-#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:139
+#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:135
#: actions/othersettings.php:145 actions/passwordsettings.php:138
#: actions/profilesettings.php:194 actions/recoverpassword.php:337
#: actions/register.php:165 actions/remotesubscribe.php:77
@@ -515,77 +520,85 @@ msgstr ""
"Istuntosi avaimen kanssa oli ongelmia. Olisitko ystävällinen ja kokeilisit "
"uudelleen."
-#: actions/apioauthauthorize.php:146
+#: actions/apioauthauthorize.php:135
#, fuzzy
msgid "Invalid nickname / password!"
msgstr "Käyttäjätunnus tai salasana ei kelpaa."
-#: actions/apioauthauthorize.php:170
+#: actions/apioauthauthorize.php:159
#, fuzzy
msgid "Database error deleting OAuth application user."
msgstr "Virhe tapahtui käyttäjän asettamisessa."
-#: actions/apioauthauthorize.php:196
+#: actions/apioauthauthorize.php:185
#, fuzzy
msgid "Database error inserting OAuth application user."
msgstr "Tietokantavirhe tallennettaessa risutagiä: %s"
-#: actions/apioauthauthorize.php:231
+#: actions/apioauthauthorize.php:214
#, php-format
msgid ""
"The request token %s has been authorized. Please exchange it for an access "
"token."
msgstr ""
-#: actions/apioauthauthorize.php:241
+#: actions/apioauthauthorize.php:227
#, php-format
-msgid "The request token %s has been denied."
+msgid "The request token %s has been denied and revoked."
msgstr ""
-#: actions/apioauthauthorize.php:246 actions/avatarsettings.php:281
+#: actions/apioauthauthorize.php:232 actions/avatarsettings.php:281
#: actions/designadminpanel.php:103 actions/editapplication.php:139
#: actions/emailsettings.php:256 actions/grouplogo.php:319
#: actions/imsettings.php:220 actions/newapplication.php:121
-#: actions/oauthconnectionssettings.php:151 actions/recoverpassword.php:44
+#: actions/oauthconnectionssettings.php:147 actions/recoverpassword.php:44
#: actions/smssettings.php:248 lib/designsettings.php:304
msgid "Unexpected form submission."
msgstr "Odottamaton lomakkeen lähetys."
-#: actions/apioauthauthorize.php:273
+#: actions/apioauthauthorize.php:259
msgid "An application would like to connect to your account"
msgstr ""
-#: actions/apioauthauthorize.php:290
+#: actions/apioauthauthorize.php:276
msgid "Allow or deny access"
msgstr ""
-#: actions/apioauthauthorize.php:320 lib/action.php:441
+#: actions/apioauthauthorize.php:292
+#, php-format
+msgid ""
+"The application <strong>%1$s</strong> by <strong>%2$s</strong> would like "
+"the ability to <strong>%3$s</strong> your %4$s account data. You should only "
+"give access to your %4$s account to third parties you trust."
+msgstr ""
+
+#: actions/apioauthauthorize.php:310 lib/action.php:441
msgid "Account"
msgstr "Käyttäjätili"
-#: actions/apioauthauthorize.php:323 actions/login.php:230
+#: actions/apioauthauthorize.php:313 actions/login.php:230
#: actions/profilesettings.php:106 actions/register.php:424
#: actions/showgroup.php:236 actions/tagother.php:94 lib/groupeditform.php:152
#: lib/userprofile.php:131
msgid "Nickname"
msgstr "Tunnus"
-#: actions/apioauthauthorize.php:326 actions/login.php:233
+#: actions/apioauthauthorize.php:316 actions/login.php:233
#: actions/register.php:429 lib/accountsettingsaction.php:116
msgid "Password"
msgstr "Salasana"
-#: actions/apioauthauthorize.php:338
+#: actions/apioauthauthorize.php:328
#, fuzzy
msgid "Deny"
msgstr "Ulkoasu"
-#: actions/apioauthauthorize.php:344
+#: actions/apioauthauthorize.php:334
#, fuzzy
msgid "Allow"
msgstr "Kaikki"
-#: actions/apioauthauthorize.php:361
+#: actions/apioauthauthorize.php:351
msgid "Allow or deny access to your account information."
msgstr ""
@@ -757,8 +770,8 @@ msgstr "Alkuperäinen"
msgid "Preview"
msgstr "Esikatselu"
-#: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:608
+#: actions/avatarsettings.php:149 actions/showapplication.php:252
+#: lib/deleteuserform.php:66 lib/noticelist.php:624
msgid "Delete"
msgstr "Poista"
@@ -806,8 +819,9 @@ msgid ""
"will not be notified of any @-replies from them."
msgstr ""
-#: actions/block.php:143 actions/deletenotice.php:145
-#: actions/deleteuser.php:147 actions/groupblock.php:178
+#: actions/block.php:143 actions/deleteapplication.php:153
+#: actions/deletenotice.php:145 actions/deleteuser.php:147
+#: actions/groupblock.php:178
msgid "No"
msgstr "Ei"
@@ -815,9 +829,9 @@ msgstr "Ei"
msgid "Do not block this user"
msgstr "Älä estä tätä käyttäjää"
-#: actions/block.php:144 actions/deletenotice.php:146
-#: actions/deleteuser.php:148 actions/groupblock.php:179
-#: lib/repeatform.php:132
+#: actions/block.php:144 actions/deleteapplication.php:158
+#: actions/deletenotice.php:146 actions/deleteuser.php:148
+#: actions/groupblock.php:179 lib/repeatform.php:132
msgid "Yes"
msgstr "Kyllä"
@@ -923,6 +937,51 @@ msgstr "Keskustelu"
msgid "Notices"
msgstr "Päivitykset"
+#: actions/deleteapplication.php:63
+#, fuzzy
+msgid "You must be logged in to delete an application."
+msgstr ""
+"Sinun pitää olla kirjautunut sisään, jotta voit muuttaa ryhmän tietoja."
+
+#: actions/deleteapplication.php:71
+#, fuzzy
+msgid "Application not found."
+msgstr "Päivitykselle ei ole profiilia"
+
+#: actions/deleteapplication.php:78 actions/editapplication.php:77
+#: actions/showapplication.php:94
+#, fuzzy
+msgid "You are not the owner of this application."
+msgstr "Sinä et kuulu tähän ryhmään."
+
+#: actions/deleteapplication.php:102 actions/editapplication.php:127
+#: actions/newapplication.php:110 actions/showapplication.php:118
+#: lib/action.php:1195
+msgid "There was a problem with your session token."
+msgstr "Istuntoavaimesi kanssa oli ongelma."
+
+#: actions/deleteapplication.php:123 actions/deleteapplication.php:147
+#, fuzzy
+msgid "Delete application"
+msgstr "Päivitystä ei ole."
+
+#: actions/deleteapplication.php:149
+msgid ""
+"Are you sure you want to delete this application? This will clear all data "
+"about the application from the database, including all existing user "
+"connections."
+msgstr ""
+
+#: actions/deleteapplication.php:156
+#, fuzzy
+msgid "Do not delete this application"
+msgstr "Älä poista tätä päivitystä"
+
+#: actions/deleteapplication.php:160
+#, fuzzy
+msgid "Delete this application"
+msgstr "Poista tämä päivitys"
+
#: actions/deletenotice.php:67 actions/disfavor.php:61 actions/favor.php:62
#: actions/groupblock.php:61 actions/groupunblock.php:61 actions/logout.php:69
#: actions/makeadmin.php:61 actions/newmessage.php:87 actions/newnotice.php:89
@@ -957,7 +1016,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:608
+#: actions/deletenotice.php:146 lib/noticelist.php:624
msgid "Delete this notice"
msgstr "Poista tämä päivitys"
@@ -1106,7 +1165,7 @@ msgstr "Tämä päivitys ei ole suosikki!"
msgid "Add to favorites"
msgstr "Lisää suosikkeihin"
-#: actions/doc.php:155
+#: actions/doc.php:158
#, fuzzy, php-format
msgid "No such document \"%s\""
msgstr "Dokumenttia ei ole."
@@ -1122,22 +1181,12 @@ msgid "You must be logged in to edit an application."
msgstr ""
"Sinun pitää olla kirjautunut sisään, jotta voit muuttaa ryhmän tietoja."
-#: actions/editapplication.php:77 actions/showapplication.php:94
-#, fuzzy
-msgid "You are not the owner of this application."
-msgstr "Sinä et kuulu tähän ryhmään."
-
-#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:163
+#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:166
#: actions/showapplication.php:87
#, fuzzy
msgid "No such application."
msgstr "Päivitystä ei ole."
-#: actions/editapplication.php:127 actions/newapplication.php:110
-#: actions/showapplication.php:118 lib/action.php:1195
-msgid "There was a problem with your session token."
-msgstr "Istuntoavaimesi kanssa oli ongelma."
-
#: actions/editapplication.php:161
#, fuzzy
msgid "Use this form to edit your application."
@@ -1148,47 +1197,52 @@ msgstr "Käytä tätä lomaketta muokataksesi ryhmää."
msgid "Name is required."
msgstr "Sama kuin ylläoleva salasana. Pakollinen."
-#: actions/editapplication.php:180 actions/newapplication.php:162
+#: actions/editapplication.php:180 actions/newapplication.php:165
#, fuzzy
msgid "Name is too long (max 255 chars)."
msgstr "Koko nimi on liian pitkä (max 255 merkkiä)."
-#: actions/editapplication.php:183 actions/newapplication.php:165
+#: actions/editapplication.php:183 actions/newapplication.php:162
+#, fuzzy
+msgid "Name already in use. Try another one."
+msgstr "Tunnus on jo käytössä. Yritä toista tunnusta."
+
+#: actions/editapplication.php:186 actions/newapplication.php:168
#, fuzzy
msgid "Description is required."
msgstr "Kuvaus"
-#: actions/editapplication.php:191
+#: actions/editapplication.php:194
msgid "Source URL is too long."
msgstr ""
-#: actions/editapplication.php:197 actions/newapplication.php:182
+#: actions/editapplication.php:200 actions/newapplication.php:185
#, fuzzy
msgid "Source URL is not valid."
msgstr "Kotisivun verkko-osoite ei ole toimiva."
-#: actions/editapplication.php:200 actions/newapplication.php:185
+#: actions/editapplication.php:203 actions/newapplication.php:188
msgid "Organization is required."
msgstr ""
-#: actions/editapplication.php:203 actions/newapplication.php:188
+#: actions/editapplication.php:206 actions/newapplication.php:191
#, fuzzy
msgid "Organization is too long (max 255 chars)."
msgstr "Kotipaikka on liian pitkä (max 255 merkkiä)."
-#: actions/editapplication.php:206 actions/newapplication.php:191
+#: actions/editapplication.php:209 actions/newapplication.php:194
msgid "Organization homepage is required."
msgstr ""
-#: actions/editapplication.php:215 actions/newapplication.php:203
+#: actions/editapplication.php:218 actions/newapplication.php:206
msgid "Callback is too long."
msgstr ""
-#: actions/editapplication.php:222 actions/newapplication.php:212
+#: actions/editapplication.php:225 actions/newapplication.php:215
msgid "Callback URL is not valid."
msgstr ""
-#: actions/editapplication.php:255
+#: actions/editapplication.php:258
#, fuzzy
msgid "Could not update application."
msgstr "Ei voitu päivittää ryhmää."
@@ -2126,11 +2180,11 @@ msgstr "Sinun pitää olla kirjautunut sisään jotta voit luoda ryhmän."
msgid "Use this form to register a new application."
msgstr "Käytä tätä lomaketta luodaksesi ryhmän."
-#: actions/newapplication.php:173
+#: actions/newapplication.php:176
msgid "Source URL is required."
msgstr ""
-#: actions/newapplication.php:255 actions/newapplication.php:264
+#: actions/newapplication.php:258 actions/newapplication.php:267
#, fuzzy
msgid "Could not create application."
msgstr "Ei voitu lisätä aliasta."
@@ -2265,29 +2319,29 @@ msgstr ""
msgid "You have not registered any applications yet."
msgstr ""
-#: actions/oauthconnectionssettings.php:71
+#: actions/oauthconnectionssettings.php:72
msgid "Connected applications"
msgstr ""
-#: actions/oauthconnectionssettings.php:87
+#: actions/oauthconnectionssettings.php:83
msgid "You have allowed the following applications to access you account."
msgstr ""
-#: actions/oauthconnectionssettings.php:170
+#: actions/oauthconnectionssettings.php:175
#, fuzzy
msgid "You are not a user of that application."
msgstr "Sinä et kuulu tähän ryhmään."
-#: actions/oauthconnectionssettings.php:180
+#: actions/oauthconnectionssettings.php:186
msgid "Unable to revoke access for app: "
msgstr ""
-#: actions/oauthconnectionssettings.php:192
+#: actions/oauthconnectionssettings.php:198
#, php-format
msgid "You have not authorized any applications to use your account."
msgstr ""
-#: actions/oauthconnectionssettings.php:205
+#: actions/oauthconnectionssettings.php:211
msgid "Developers can edit the registration settings for their applications "
msgstr ""
@@ -2812,36 +2866,36 @@ msgstr "Julkinen aikajana, sivu %d"
msgid "Public timeline"
msgstr "Julkinen aikajana"
-#: actions/public.php:151
+#: actions/public.php:159
msgid "Public Stream Feed (RSS 1.0)"
msgstr "Julkinen syöte (RSS 1.0)"
-#: actions/public.php:155
+#: actions/public.php:163
msgid "Public Stream Feed (RSS 2.0)"
msgstr "Julkisen Aikajanan Syöte (RSS 2.0)"
-#: actions/public.php:159
+#: actions/public.php:167
msgid "Public Stream Feed (Atom)"
msgstr "Julkinen syöte (Atom)"
-#: actions/public.php:179
+#: actions/public.php:187
#, php-format
msgid ""
"This is the public timeline for %%site.name%% but no one has posted anything "
"yet."
msgstr ""
-#: actions/public.php:182
+#: actions/public.php:190
msgid "Be the first to post!"
msgstr "Ole ensimmäinen joka lähettää päivityksen!"
-#: actions/public.php:186
+#: actions/public.php:194
#, php-format
msgid ""
"Why not [register an account](%%action.register%%) and be the first to post!"
msgstr ""
-#: actions/public.php:233
+#: actions/public.php:241
#, php-format
msgid ""
"This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2850,7 +2904,7 @@ msgid ""
"friends, family, and colleagues! ([Read more](%%doc.help%%))"
msgstr ""
-#: actions/public.php:238
+#: actions/public.php:246
#, fuzzy, php-format
msgid ""
"This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -3223,7 +3277,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:626
+#: actions/repeat.php:114 lib/noticelist.php:642
#, fuzzy
msgid "Repeated"
msgstr "Luotu"
@@ -3289,6 +3343,11 @@ msgstr ""
msgid "Replies to %1$s on %2$s!"
msgstr "Viesti käyttäjälle %1$s, %2$s"
+#: actions/rsd.php:146 actions/version.php:157
+#, fuzzy
+msgid "StatusNet"
+msgstr "Päivitys poistettu."
+
#: actions/sandbox.php:65 actions/unsandbox.php:65
#, fuzzy
msgid "You cannot sandbox users on this site."
@@ -3336,79 +3395,84 @@ msgstr "Profiilikuva-asetukset"
msgid "You must be logged in to view an application."
msgstr "Sinun pitää olla kirjautunut sisään, jotta voit erota ryhmästä."
-#: actions/showapplication.php:158
+#: actions/showapplication.php:157
#, fuzzy
msgid "Application profile"
msgstr "Päivitykselle ei ole profiilia"
-#: actions/showapplication.php:160 lib/applicationeditform.php:180
+#: actions/showapplication.php:159 lib/applicationeditform.php:180
msgid "Icon"
msgstr ""
-#: actions/showapplication.php:170 actions/version.php:195
+#: actions/showapplication.php:169 actions/version.php:195
#: lib/applicationeditform.php:195
#, fuzzy
msgid "Name"
msgstr "Tunnus"
-#: actions/showapplication.php:179 lib/applicationeditform.php:222
+#: actions/showapplication.php:178 lib/applicationeditform.php:222
#, fuzzy
msgid "Organization"
msgstr "Sivutus"
-#: actions/showapplication.php:188 actions/version.php:198
+#: actions/showapplication.php:187 actions/version.php:198
#: lib/applicationeditform.php:209 lib/groupeditform.php:172
msgid "Description"
msgstr "Kuvaus"
-#: actions/showapplication.php:193 actions/showgroup.php:429
+#: actions/showapplication.php:192 actions/showgroup.php:429
#: lib/profileaction.php:174
msgid "Statistics"
msgstr "Tilastot"
-#: actions/showapplication.php:204
+#: actions/showapplication.php:203
#, php-format
-msgid "created by %1$s - %2$s access by default - %3$d users"
+msgid "Created by %1$s - %2$s access by default - %3$d users"
msgstr ""
-#: actions/showapplication.php:214
+#: actions/showapplication.php:213
msgid "Application actions"
msgstr ""
-#: actions/showapplication.php:233
+#: actions/showapplication.php:236
msgid "Reset key & secret"
msgstr ""
-#: actions/showapplication.php:241
+#: actions/showapplication.php:261
msgid "Application info"
msgstr ""
-#: actions/showapplication.php:243
+#: actions/showapplication.php:263
msgid "Consumer key"
msgstr ""
-#: actions/showapplication.php:248
+#: actions/showapplication.php:268
msgid "Consumer secret"
msgstr ""
-#: actions/showapplication.php:253
+#: actions/showapplication.php:273
msgid "Request token URL"
msgstr ""
-#: actions/showapplication.php:258
+#: actions/showapplication.php:278
msgid "Access token URL"
msgstr ""
-#: actions/showapplication.php:263
+#: actions/showapplication.php:283
msgid "Authorize URL"
msgstr ""
-#: actions/showapplication.php:268
+#: actions/showapplication.php:288
msgid ""
"Note: We support HMAC-SHA1 signatures. We do not support the plaintext "
"signature method."
msgstr ""
+#: actions/showapplication.php:309
+#, fuzzy
+msgid "Are you sure you want to reset your consumer key and secret?"
+msgstr "Oletko varma että haluat poistaa tämän päivityksen?"
+
#: actions/showfavorites.php:79
#, fuzzy, php-format
msgid "%1$s's favorite notices, page %2$d"
@@ -3610,20 +3674,20 @@ msgstr "Päivityksien syöte käyttäjälle %s"
msgid "FOAF for %s"
msgstr "Käyttäjän %s lähetetyt viestit"
-#: actions/showstream.php:191
+#: actions/showstream.php:200
#, fuzzy, php-format
msgid "This is the timeline for %1$s but %2$s hasn't posted anything yet."
msgstr ""
"Tämä on käyttäjän %s aikajana, mutta %s ei ole lähettänyt vielä yhtään "
"päivitystä."
-#: actions/showstream.php:196
+#: actions/showstream.php:205
msgid ""
"Seen anything interesting recently? You haven't posted any notices yet, now "
"would be a good time to start :)"
msgstr ""
-#: actions/showstream.php:198
+#: actions/showstream.php:207
#, fuzzy, php-format
msgid ""
"You can try to nudge %1$s or [post something to his or her attention](%%%%"
@@ -3632,7 +3696,7 @@ msgstr ""
"Ole ensimmäinen joka [lähettää päivityksen tästä aiheesta] (%%%%action."
"newnotice%%%%?status_textarea=%s)!"
-#: actions/showstream.php:234
+#: actions/showstream.php:243
#, php-format
msgid ""
"**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3641,7 +3705,7 @@ msgid ""
"follow **%s**'s notices and many more! ([Read more](%%%%doc.help%%%%))"
msgstr ""
-#: actions/showstream.php:239
+#: actions/showstream.php:248
#, fuzzy, php-format
msgid ""
"**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3651,7 +3715,7 @@ msgstr ""
"Käyttäjällä **%s** on käyttäjätili palvelussa %%%%site.name%%%%, joka on "
"[mikroblogauspalvelu](http://en.wikipedia.org/wiki/Micro-blogging)"
-#: actions/showstream.php:296
+#: actions/showstream.php:305
#, fuzzy, php-format
msgid "Repeat of %s"
msgstr "Vastaukset käyttäjälle %s"
@@ -4338,11 +4402,6 @@ msgid ""
"Inc. and contributors."
msgstr ""
-#: actions/version.php:157
-#, fuzzy
-msgid "StatusNet"
-msgstr "Päivitys poistettu."
-
#: actions/version.php:161
msgid "Contributors"
msgstr ""
@@ -4470,22 +4529,22 @@ msgstr "Päivityksesi tähän palveluun on estetty."
msgid "Problem saving notice."
msgstr "Ongelma päivityksen tallentamisessa."
-#: classes/Notice.php:790
+#: classes/Notice.php:788
#, fuzzy
msgid "Problem saving group inbox."
msgstr "Ongelma päivityksen tallentamisessa."
-#: classes/Notice.php:850
+#: classes/Notice.php:848
#, php-format
msgid "DB error inserting reply: %s"
msgstr "Tietokantavirhe tallennettaessa vastausta: %s"
-#: classes/Notice.php:1233
+#: classes/Notice.php:1231
#, fuzzy, php-format
msgid "RT @%1$s %2$s"
msgstr "%1$s (%2$s)"
-#: classes/User.php:382
+#: classes/User.php:385
#, fuzzy, php-format
msgid "Welcome to %1$s, @%2$s!"
msgstr "Viesti käyttäjälle %1$s, %2$s"
@@ -4775,11 +4834,11 @@ msgstr "SMS vahvistus"
msgid "Sessions configuration"
msgstr "SMS vahvistus"
-#: lib/apiauth.php:99
+#: lib/apiauth.php:95
msgid "API resource requires read-write access, but you only have read access."
msgstr ""
-#: lib/apiauth.php:279
+#: lib/apiauth.php:273
#, php-format
msgid "Failed API auth attempt, nickname = %1$s, proxy = %2$s, ip = %3$s"
msgstr ""
@@ -5151,20 +5210,20 @@ msgid ""
"tracking - not yet implemented.\n"
msgstr ""
-#: lib/common.php:131
+#: lib/common.php:135
#, fuzzy
msgid "No configuration file found. "
msgstr "Varmistuskoodia ei ole annettu."
-#: lib/common.php:132
+#: lib/common.php:136
msgid "I looked for configuration files in the following places: "
msgstr ""
-#: lib/common.php:134
+#: lib/common.php:138
msgid "You may wish to run the installer to fix this."
msgstr ""
-#: lib/common.php:135
+#: lib/common.php:139
#, fuzzy
msgid "Go to the installer."
msgstr "Kirjaudu sisään palveluun"
@@ -5749,25 +5808,25 @@ msgstr ""
msgid "at"
msgstr ""
-#: lib/noticelist.php:531
+#: lib/noticelist.php:547
#, fuzzy
msgid "in context"
msgstr "Ei sisältöä!"
-#: lib/noticelist.php:556
+#: lib/noticelist.php:572
#, fuzzy
msgid "Repeated by"
msgstr "Luotu"
-#: lib/noticelist.php:582
+#: lib/noticelist.php:598
msgid "Reply to this notice"
msgstr "Vastaa tähän päivitykseen"
-#: lib/noticelist.php:583
+#: lib/noticelist.php:599
msgid "Reply"
msgstr "Vastaus"
-#: lib/noticelist.php:625
+#: lib/noticelist.php:641
#, fuzzy
msgid "Notice repeated"
msgstr "Päivitys on poistettu."
@@ -5916,6 +5975,10 @@ msgstr "Vastaa tähän päivitykseen"
msgid "Repeat this notice"
msgstr "Vastaa tähän päivitykseen"
+#: lib/router.php:665
+msgid "No single user defined for single-user mode."
+msgstr ""
+
#: lib/sandboxform.php:67
#, fuzzy
msgid "Sandbox"
@@ -6093,47 +6156,47 @@ msgstr "Viesti"
msgid "Moderate"
msgstr ""
-#: lib/util.php:868
+#: lib/util.php:867
msgid "a few seconds ago"
msgstr "muutama sekunti sitten"
-#: lib/util.php:870
+#: lib/util.php:869
msgid "about a minute ago"
msgstr "noin minuutti sitten"
-#: lib/util.php:872
+#: lib/util.php:871
#, php-format
msgid "about %d minutes ago"
msgstr "noin %d minuuttia sitten"
-#: lib/util.php:874
+#: lib/util.php:873
msgid "about an hour ago"
msgstr "noin tunti sitten"
-#: lib/util.php:876
+#: lib/util.php:875
#, php-format
msgid "about %d hours ago"
msgstr "noin %d tuntia sitten"
-#: lib/util.php:878
+#: lib/util.php:877
msgid "about a day ago"
msgstr "noin päivä sitten"
-#: lib/util.php:880
+#: lib/util.php:879
#, php-format
msgid "about %d days ago"
msgstr "noin %d päivää sitten"
-#: lib/util.php:882
+#: lib/util.php:881
msgid "about a month ago"
msgstr "noin kuukausi sitten"
-#: lib/util.php:884
+#: lib/util.php:883
#, php-format
msgid "about %d months ago"
msgstr "noin %d kuukautta sitten"
-#: lib/util.php:886
+#: lib/util.php:885
msgid "about a year ago"
msgstr "noin vuosi sitten"
diff --git a/locale/fr/LC_MESSAGES/statusnet.po b/locale/fr/LC_MESSAGES/statusnet.po
index 95aea43db..7a25b9ef2 100644
--- a/locale/fr/LC_MESSAGES/statusnet.po
+++ b/locale/fr/LC_MESSAGES/statusnet.po
@@ -14,12 +14,12 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-01-30 23:41+0000\n"
-"PO-Revision-Date: 2010-01-30 23:41:48+0000\n"
+"POT-Creation-Date: 2010-02-04 10:31+0000\n"
+"PO-Revision-Date: 2010-02-04 10:32:38+0000\n"
"Language-Team: French\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.16alpha (r61734); Translate extension (2010-01-16)\n"
+"X-Generator: MediaWiki 1.16alpha (r61969); Translate extension (2010-01-16)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: fr\n"
"X-Message-Group: out-statusnet\n"
@@ -31,7 +31,7 @@ msgstr "Accès"
#: actions/accessadminpanel.php:65
msgid "Site access settings"
-msgstr "Paramètres d'accès au site"
+msgstr "Paramètres d’accès au site"
#: actions/accessadminpanel.php:158
msgid "Registration"
@@ -51,7 +51,7 @@ msgstr "Sur invitation uniquement"
#: actions/accessadminpanel.php:169
msgid "Make registration invitation only."
-msgstr "Rendre l’inscription sur invitation seulement."
+msgstr "Autoriser l’inscription sur invitation seulement."
#: actions/accessadminpanel.php:173
msgid "Closed"
@@ -75,7 +75,7 @@ msgstr "Enregistrer"
#: actions/accessadminpanel.php:189
msgid "Save access settings"
-msgstr "Sauvegarder les paramètres d'accès"
+msgstr "Sauvegarder les paramètres d’accès"
#: actions/all.php:63 actions/public.php:97 actions/replies.php:92
#: actions/showfavorites.php:137 actions/tag.php:51
@@ -98,7 +98,7 @@ msgstr "Page non trouvée"
#: actions/favoritesrss.php:74 actions/foaf.php:40 actions/foaf.php:58
#: actions/microsummary.php:62 actions/newmessage.php:116 actions/otp.php:76
#: actions/remotesubscribe.php:145 actions/remotesubscribe.php:154
-#: actions/replies.php:73 actions/repliesrss.php:38
+#: actions/replies.php:73 actions/repliesrss.php:38 actions/rsd.php:116
#: actions/showfavorites.php:105 actions/userbyid.php:74
#: actions/usergroups.php:91 actions/userrss.php:38 actions/xrds.php:71
#: lib/command.php:163 lib/command.php:302 lib/command.php:355
@@ -111,7 +111,7 @@ msgstr "Utilisateur non trouvé."
#: actions/all.php:84
#, php-format
msgid "%1$s and friends, page %2$d"
-msgstr "!%1$s et amis, page %2$d"
+msgstr "%1$s et ses amis, page %2$d"
#: actions/all.php:86 actions/all.php:167 actions/allrss.php:115
#: actions/apitimelinefriends.php:114 actions/apitimelinehome.php:115
@@ -162,7 +162,7 @@ msgstr ""
"profil ou [poster quelque chose à son intention](%%%%action.newnotice%%%%?"
"status_textarea=%3$s)."
-#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:202
+#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:211
#, php-format
msgid ""
"Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
@@ -394,8 +394,8 @@ msgstr "Pseudo déjà utilisé. Essayez-en un autre."
msgid "Not a valid nickname."
msgstr "Pseudo invalide."
-#: actions/apigroupcreate.php:196 actions/editapplication.php:212
-#: actions/editgroup.php:195 actions/newapplication.php:200
+#: actions/apigroupcreate.php:196 actions/editapplication.php:215
+#: actions/editgroup.php:195 actions/newapplication.php:203
#: actions/newgroup.php:139 actions/profilesettings.php:222
#: actions/register.php:217
msgid "Homepage is not a valid URL."
@@ -407,8 +407,8 @@ msgstr "L’adresse du site personnel n’est pas un URL valide. "
msgid "Full name is too long (max 255 chars)."
msgstr "Nom complet trop long (maximum de 255 caractères)."
-#: actions/apigroupcreate.php:213 actions/editapplication.php:187
-#: actions/newapplication.php:169
+#: actions/apigroupcreate.php:213 actions/editapplication.php:190
+#: actions/newapplication.php:172
#, php-format
msgid "Description is too long (max %d chars)."
msgstr "La description est trop longue (%d caractères maximum)."
@@ -463,7 +463,7 @@ msgstr "Impossible de joindre l’utilisateur %1$s au groupe %2$s."
#: actions/apigroupleave.php:114
msgid "You are not a member of this group."
-msgstr "Vous n'êtes pas membre de ce groupe."
+msgstr "Vous n’êtes pas membre de ce groupe."
#: actions/apigroupleave.php:124 actions/leavegroup.php:119
#, php-format
@@ -485,18 +485,22 @@ msgstr "Groupes de %s"
msgid "groups on %s"
msgstr "groupes sur %s"
-#: actions/apioauthauthorize.php:108 actions/apioauthauthorize.php:114
-msgid "Bad request."
-msgstr "Requête invalide."
+#: actions/apioauthauthorize.php:101
+msgid "No oauth_token parameter provided."
+msgstr "Paramètre oauth_token non fourni."
-#: actions/apioauthauthorize.php:134 actions/avatarsettings.php:268
+#: actions/apioauthauthorize.php:106
+msgid "Invalid token."
+msgstr "Jeton incorrect."
+
+#: actions/apioauthauthorize.php:123 actions/avatarsettings.php:268
#: actions/deletenotice.php:157 actions/disfavor.php:74
-#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:50
+#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:54
#: actions/groupblock.php:66 actions/grouplogo.php:309
#: actions/groupunblock.php:66 actions/imsettings.php:206
#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
-#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:139
+#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:135
#: actions/othersettings.php:145 actions/passwordsettings.php:138
#: actions/profilesettings.php:194 actions/recoverpassword.php:337
#: actions/register.php:165 actions/remotesubscribe.php:77
@@ -509,80 +513,92 @@ msgstr ""
"Un problème est survenu avec votre jeton de session. Veuillez essayer à "
"nouveau."
-#: actions/apioauthauthorize.php:146
+#: actions/apioauthauthorize.php:135
msgid "Invalid nickname / password!"
-msgstr "Identifiant ou mot de passe incorrect !"
+msgstr "Pseudo ou mot de passe incorrect !"
-#: actions/apioauthauthorize.php:170
+#: actions/apioauthauthorize.php:159
msgid "Database error deleting OAuth application user."
msgstr ""
-"Erreur de la base de données lors de la suppression de l'utilisateur de "
-"l'application OAuth."
+"Erreur de la base de données lors de la suppression de l’utilisateur de "
+"l’application OAuth."
-#: actions/apioauthauthorize.php:196
+#: actions/apioauthauthorize.php:185
msgid "Database error inserting OAuth application user."
msgstr ""
-"Erreur de base de donnée en insérant l'utilisateur de l'application OAuth"
+"Erreur de base de donnée en insérant l’utilisateur de l’application OAuth"
-#: actions/apioauthauthorize.php:231
+#: actions/apioauthauthorize.php:214
#, php-format
msgid ""
"The request token %s has been authorized. Please exchange it for an access "
"token."
msgstr ""
-"Le jeton de connexion %s a été autorisé. Merci de l'échanger contre un jeton "
-"d'accès."
+"Le jeton de connexion %s a été autorisé. Merci de l’échanger contre un jeton "
+"d’accès."
-#: actions/apioauthauthorize.php:241
+#: actions/apioauthauthorize.php:227
#, php-format
-msgid "The request token %s has been denied."
-msgstr "Le jeton de connexion %s a été refusé."
+msgid "The request token %s has been denied and revoked."
+msgstr "Le jeton de connexion %s a été refusé et révoqué."
-#: actions/apioauthauthorize.php:246 actions/avatarsettings.php:281
+#: actions/apioauthauthorize.php:232 actions/avatarsettings.php:281
#: actions/designadminpanel.php:103 actions/editapplication.php:139
#: actions/emailsettings.php:256 actions/grouplogo.php:319
#: actions/imsettings.php:220 actions/newapplication.php:121
-#: actions/oauthconnectionssettings.php:151 actions/recoverpassword.php:44
+#: actions/oauthconnectionssettings.php:147 actions/recoverpassword.php:44
#: actions/smssettings.php:248 lib/designsettings.php:304
msgid "Unexpected form submission."
msgstr "Soumission de formulaire inattendue."
-#: actions/apioauthauthorize.php:273
+#: actions/apioauthauthorize.php:259
msgid "An application would like to connect to your account"
msgstr ""
-"Une application vous demande l'autorisation de se connecter à votre compte"
+"Une application vous demande l’autorisation de se connecter à votre compte"
-#: actions/apioauthauthorize.php:290
+#: actions/apioauthauthorize.php:276
msgid "Allow or deny access"
-msgstr "Autoriser ou refuser l'accès"
+msgstr "Autoriser ou refuser l’accès"
+
+#: actions/apioauthauthorize.php:292
+#, php-format
+msgid ""
+"The application <strong>%1$s</strong> by <strong>%2$s</strong> would like "
+"the ability to <strong>%3$s</strong> your %4$s account data. You should only "
+"give access to your %4$s account to third parties you trust."
+msgstr ""
+"L’application <strong>%1$s</strong> de <strong>%2$s</strong> voudrait "
+"pouvoir <strong>%3$s</strong> les données de votre compte %4$s. Vous ne "
+"devriez donner l’accès à votre compte %4$s qu’aux tiers à qui vous faites "
+"confiance."
-#: actions/apioauthauthorize.php:320 lib/action.php:441
+#: actions/apioauthauthorize.php:310 lib/action.php:441
msgid "Account"
msgstr "Compte"
-#: actions/apioauthauthorize.php:323 actions/login.php:230
+#: actions/apioauthauthorize.php:313 actions/login.php:230
#: actions/profilesettings.php:106 actions/register.php:424
#: actions/showgroup.php:236 actions/tagother.php:94 lib/groupeditform.php:152
#: lib/userprofile.php:131
msgid "Nickname"
msgstr "Pseudo"
-#: actions/apioauthauthorize.php:326 actions/login.php:233
+#: actions/apioauthauthorize.php:316 actions/login.php:233
#: actions/register.php:429 lib/accountsettingsaction.php:116
msgid "Password"
msgstr "Mot de passe"
-#: actions/apioauthauthorize.php:338
+#: actions/apioauthauthorize.php:328
msgid "Deny"
msgstr "Refuser"
-#: actions/apioauthauthorize.php:344
+#: actions/apioauthauthorize.php:334
msgid "Allow"
msgstr "Autoriser"
-#: actions/apioauthauthorize.php:361
+#: actions/apioauthauthorize.php:351
msgid "Allow or deny access to your account information."
-msgstr "Autoriser ou refuser l'accès à votre compte."
+msgstr "Autoriser ou refuser l’accès à votre compte."
#: actions/apistatusesdestroy.php:107
msgid "This method requires a POST or DELETE."
@@ -753,8 +769,8 @@ msgstr "Image originale"
msgid "Preview"
msgstr "Aperçu"
-#: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:608
+#: actions/avatarsettings.php:149 actions/showapplication.php:252
+#: lib/deleteuserform.php:66 lib/noticelist.php:624
msgid "Delete"
msgstr "Supprimer"
@@ -800,12 +816,13 @@ msgid ""
"unsubscribed from you, unable to subscribe to you in the future, and you "
"will not be notified of any @-replies from them."
msgstr ""
-"Êtes-vous certain de vouloir bloquer cet utilisateur ? Après cela, il ne "
-"sera plus abonné à votre compte, ne pourra plus s’y abonner de nouveau, et "
-"vous ne serez pas informé des @-réponses de sa part."
+"Voulez-vous vraiment bloquer cet utilisateur ? Après cela, il ne sera plus "
+"abonné à votre compte, ne pourra plus s’y abonner de nouveau, et vous ne "
+"serez pas informé des @-réponses de sa part."
-#: actions/block.php:143 actions/deletenotice.php:145
-#: actions/deleteuser.php:147 actions/groupblock.php:178
+#: actions/block.php:143 actions/deleteapplication.php:153
+#: actions/deletenotice.php:145 actions/deleteuser.php:147
+#: actions/groupblock.php:178
msgid "No"
msgstr "Non"
@@ -813,9 +830,9 @@ msgstr "Non"
msgid "Do not block this user"
msgstr "Ne pas bloquer cet utilisateur"
-#: actions/block.php:144 actions/deletenotice.php:146
-#: actions/deleteuser.php:148 actions/groupblock.php:179
-#: lib/repeatform.php:132
+#: actions/block.php:144 actions/deleteapplication.php:158
+#: actions/deletenotice.php:146 actions/deleteuser.php:148
+#: actions/groupblock.php:179 lib/repeatform.php:132
msgid "Yes"
msgstr "Oui"
@@ -919,6 +936,47 @@ msgstr "Conversation"
msgid "Notices"
msgstr "Avis"
+#: actions/deleteapplication.php:63
+msgid "You must be logged in to delete an application."
+msgstr "Vous devez être connecté pour supprimer une application."
+
+#: actions/deleteapplication.php:71
+msgid "Application not found."
+msgstr "Application non trouvée."
+
+#: actions/deleteapplication.php:78 actions/editapplication.php:77
+#: actions/showapplication.php:94
+msgid "You are not the owner of this application."
+msgstr "Vous n’êtes pas le propriétaire de cette application."
+
+#: actions/deleteapplication.php:102 actions/editapplication.php:127
+#: actions/newapplication.php:110 actions/showapplication.php:118
+#: lib/action.php:1195
+msgid "There was a problem with your session token."
+msgstr "Un problème est survenu avec votre jeton de session."
+
+#: actions/deleteapplication.php:123 actions/deleteapplication.php:147
+msgid "Delete application"
+msgstr "Supprimer l’application"
+
+#: actions/deleteapplication.php:149
+msgid ""
+"Are you sure you want to delete this application? This will clear all data "
+"about the application from the database, including all existing user "
+"connections."
+msgstr ""
+"Voulez-vous vraiment supprimer cette application ? Ceci effacera toutes les "
+"données à son propos de la base de données, y compris toutes les connexions "
+"utilisateur existantes."
+
+#: actions/deleteapplication.php:156
+msgid "Do not delete this application"
+msgstr "Ne pas supprimer cette application"
+
+#: actions/deleteapplication.php:160
+msgid "Delete this application"
+msgstr "Supprimer cette application"
+
#: actions/deletenotice.php:67 actions/disfavor.php:61 actions/favor.php:62
#: actions/groupblock.php:61 actions/groupunblock.php:61 actions/logout.php:69
#: actions/makeadmin.php:61 actions/newmessage.php:87 actions/newnotice.php:89
@@ -947,13 +1005,13 @@ msgstr "Supprimer cet avis"
#: actions/deletenotice.php:144
msgid "Are you sure you want to delete this notice?"
-msgstr "Êtes-vous sûr(e) de vouloir supprimer cet avis ?"
+msgstr "Voulez-vous vraiment supprimer cet avis ?"
#: actions/deletenotice.php:145
msgid "Do not delete this notice"
msgstr "Ne pas supprimer cet avis"
-#: actions/deletenotice.php:146 lib/noticelist.php:608
+#: actions/deletenotice.php:146 lib/noticelist.php:624
msgid "Delete this notice"
msgstr "Supprimer cet avis"
@@ -967,15 +1025,15 @@ msgstr "Vous pouvez seulement supprimer les utilisateurs locaux."
#: actions/deleteuser.php:110 actions/deleteuser.php:133
msgid "Delete user"
-msgstr "Supprimer l'utilsateur"
+msgstr "Supprimer l’utilisateur"
#: actions/deleteuser.php:135
msgid ""
"Are you sure you want to delete this user? This will clear all data about "
"the user from the database, without a backup."
msgstr ""
-"Êtes-vous certain de vouloir supprimer cet utilisateur ? Ceci effacera "
-"toutes les données à son propos de la base de données, sans sauvegarde."
+"Voulez-vous vraiment supprimer cet utilisateur ? Ceci effacera toutes les "
+"données à son propos de la base de données, sans sauvegarde."
#: actions/deleteuser.php:148 lib/deleteuserform.php:77
msgid "Delete this user"
@@ -997,7 +1055,7 @@ msgstr "URL du logo invalide."
#: actions/designadminpanel.php:279
#, php-format
msgid "Theme not available: %s"
-msgstr "Le thème n'est pas disponible : %s"
+msgstr "Le thème n’est pas disponible : %s"
#: actions/designadminpanel.php:375
msgid "Change logo"
@@ -1034,7 +1092,7 @@ msgid ""
"You can upload a background image for the site. The maximum file size is %1"
"$s."
msgstr ""
-"Vous pouvez importer une image d'arrière plan pour ce site. La taille "
+"Vous pouvez importer une image d’arrière plan pour ce site. La taille "
"maximale du fichier est de %1$s."
#: actions/designadminpanel.php:457 lib/designsettings.php:139
@@ -1097,32 +1155,23 @@ msgstr "Cet avis n’est pas un favori !"
msgid "Add to favorites"
msgstr "Ajouter aux favoris"
-#: actions/doc.php:155
+#: actions/doc.php:158
#, php-format
msgid "No such document \"%s\""
msgstr "Document « %s » non trouvé."
#: actions/editapplication.php:54
msgid "Edit Application"
-msgstr "Modifier l'application"
+msgstr "Modifier l’application"
#: actions/editapplication.php:66
msgid "You must be logged in to edit an application."
msgstr "Vous devez être connecté pour modifier une application."
-#: actions/editapplication.php:77 actions/showapplication.php:94
-msgid "You are not the owner of this application."
-msgstr "Vous n'êtes pas le propriétaire de cette application."
-
-#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:163
+#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:166
#: actions/showapplication.php:87
msgid "No such application."
-msgstr "Pas d'application."
-
-#: actions/editapplication.php:127 actions/newapplication.php:110
-#: actions/showapplication.php:118 lib/action.php:1195
-msgid "There was a problem with your session token."
-msgstr "Un problème est survenu avec votre jeton de session."
+msgstr "Application non trouvée."
#: actions/editapplication.php:161
msgid "Use this form to edit your application."
@@ -1132,45 +1181,49 @@ msgstr "Utilisez ce formulaire pour modifier votre application."
msgid "Name is required."
msgstr "Le nom est requis."
-#: actions/editapplication.php:180 actions/newapplication.php:162
+#: actions/editapplication.php:180 actions/newapplication.php:165
msgid "Name is too long (max 255 chars)."
msgstr "Le nom est trop long (maximum de 255 caractères)."
-#: actions/editapplication.php:183 actions/newapplication.php:165
+#: actions/editapplication.php:183 actions/newapplication.php:162
+msgid "Name already in use. Try another one."
+msgstr "Ce nom est déjà utilisé. Essayez-en un autre."
+
+#: actions/editapplication.php:186 actions/newapplication.php:168
msgid "Description is required."
-msgstr "Description requise."
+msgstr "La description est requise."
-#: actions/editapplication.php:191
+#: actions/editapplication.php:194
msgid "Source URL is too long."
-msgstr "L'URL source est trop longue."
+msgstr "L’URL source est trop longue."
-#: actions/editapplication.php:197 actions/newapplication.php:182
+#: actions/editapplication.php:200 actions/newapplication.php:185
msgid "Source URL is not valid."
-msgstr "URL source invalide."
+msgstr "L’URL source est invalide."
-#: actions/editapplication.php:200 actions/newapplication.php:185
+#: actions/editapplication.php:203 actions/newapplication.php:188
msgid "Organization is required."
-msgstr "Organisation requise."
+msgstr "L’organisation est requise."
-#: actions/editapplication.php:203 actions/newapplication.php:188
+#: actions/editapplication.php:206 actions/newapplication.php:191
msgid "Organization is too long (max 255 chars)."
-msgstr "Organisation trop longue (maximum de 255 caractères)."
+msgstr "L’organisation est trop longue (maximum de 255 caractères)."
-#: actions/editapplication.php:206 actions/newapplication.php:191
+#: actions/editapplication.php:209 actions/newapplication.php:194
msgid "Organization homepage is required."
-msgstr "La page d'accueil de l'organisation est requise."
+msgstr "La page d’accueil de l’organisation est requise."
-#: actions/editapplication.php:215 actions/newapplication.php:203
+#: actions/editapplication.php:218 actions/newapplication.php:206
msgid "Callback is too long."
-msgstr "Le Callback est trop long."
+msgstr "Le rappel (Callback) est trop long."
-#: actions/editapplication.php:222 actions/newapplication.php:212
+#: actions/editapplication.php:225 actions/newapplication.php:215
msgid "Callback URL is not valid."
-msgstr "URL de rappel invalide."
+msgstr "L’URL de rappel (Callback) est invalide."
-#: actions/editapplication.php:255
+#: actions/editapplication.php:258
msgid "Could not update application."
-msgstr "Impossible de mettre à jour l'application."
+msgstr "Impossible de mettre à jour l’application."
#: actions/editgroup.php:56
#, php-format
@@ -1493,7 +1546,7 @@ msgstr "Cet utilisateur vous a empêché de vous inscrire."
#: actions/finishremotesubscribe.php:110
msgid "You are not authorized."
-msgstr "Vous n'êtes pas autorisé."
+msgstr "Vous n’êtes pas autorisé."
#: actions/finishremotesubscribe.php:113
msgid "Could not convert request token to access token."
@@ -2017,7 +2070,7 @@ msgstr "Vous devez ouvrir une session pour quitter un groupe."
#: actions/leavegroup.php:90 lib/command.php:265
msgid "You are not a member of that group."
-msgstr "Vous n'êtes pas membre de ce groupe."
+msgstr "Vous n’êtes pas membre de ce groupe."
#: actions/leavegroup.php:127
#, php-format
@@ -2117,13 +2170,13 @@ msgstr "Vous devez être connecté pour enregistrer une application."
msgid "Use this form to register a new application."
msgstr "Utilisez ce formulaire pour inscrire une nouvelle application."
-#: actions/newapplication.php:173
+#: actions/newapplication.php:176
msgid "Source URL is required."
-msgstr "URL source requise."
+msgstr "L’URL source est requise."
-#: actions/newapplication.php:255 actions/newapplication.php:264
+#: actions/newapplication.php:258 actions/newapplication.php:267
msgid "Could not create application."
-msgstr "Impossible de créer l'application."
+msgstr "Impossible de créer l’application."
#: actions/newgroup.php:53
msgid "New group"
@@ -2254,32 +2307,35 @@ msgstr "Applications que vous avez enregistré"
#: actions/oauthappssettings.php:135
#, php-format
msgid "You have not registered any applications yet."
-msgstr ""
+msgstr "Vous n’avez encore enregistré aucune application."
-#: actions/oauthconnectionssettings.php:71
+#: actions/oauthconnectionssettings.php:72
msgid "Connected applications"
msgstr "Applications connectées."
-#: actions/oauthconnectionssettings.php:87
+#: actions/oauthconnectionssettings.php:83
msgid "You have allowed the following applications to access you account."
msgstr ""
+"Vous avez autorisé les applications suivantes à accéder à votre compte."
-#: actions/oauthconnectionssettings.php:170
+#: actions/oauthconnectionssettings.php:175
msgid "You are not a user of that application."
-msgstr "Vous n'êtes pas un utilisateur de cette application."
+msgstr "Vous n’êtes pas un utilisateur de cette application."
-#: actions/oauthconnectionssettings.php:180
+#: actions/oauthconnectionssettings.php:186
msgid "Unable to revoke access for app: "
-msgstr ""
+msgstr "Impossible d’annuler l’accès de l’application : "
-#: actions/oauthconnectionssettings.php:192
+#: actions/oauthconnectionssettings.php:198
#, php-format
msgid "You have not authorized any applications to use your account."
-msgstr "Vous n'avez autorisé aucune application à utiliser votre compte."
+msgstr "Vous n’avez autorisé aucune application à utiliser votre compte."
-#: actions/oauthconnectionssettings.php:205
+#: actions/oauthconnectionssettings.php:211
msgid "Developers can edit the registration settings for their applications "
msgstr ""
+"Les programmeurs peuvent modifier les paramètres d’enregistrement pour leurs "
+"applications "
#: actions/oembed.php:79 actions/shownotice.php:100
msgid "Notice has no profile"
@@ -2345,28 +2401,28 @@ msgstr "Le service de réduction d’URL est trop long (50 caractères maximum).
#: actions/otp.php:69
msgid "No user ID specified."
-msgstr "Aucun identifiant d'utilisateur n’a été spécifié."
+msgstr "Aucun identifiant d’utilisateur n’a été spécifié."
#: actions/otp.php:83
msgid "No login token specified."
-msgstr "Aucun jeton d'identification n’a été spécifié."
+msgstr "Aucun jeton d’identification n’a été spécifié."
#: actions/otp.php:90
msgid "No login token requested."
-msgstr "Aucune jeton d'identification requis."
+msgstr "Aucun jeton d’identification n’a été demandé."
#: actions/otp.php:95
msgid "Invalid login token specified."
-msgstr "Jeton d'identification invalide."
+msgstr "Jeton d’identification invalide."
#: actions/otp.php:104
msgid "Login token expired."
-msgstr "Jeton d'identification périmé."
+msgstr "Jeton d’identification périmé."
#: actions/outbox.php:58
-#, fuzzy, php-format
+#, php-format
msgid "Outbox for %1$s - page %2$d"
-msgstr "Boîte d’envoi de %s"
+msgstr "Boîte d’envoi de %1$s - page %2$d"
#: actions/outbox.php:61
#, php-format
@@ -2506,7 +2562,7 @@ msgstr "Jolies URL"
#: actions/pathsadminpanel.php:252
msgid "Use fancy (more readable and memorable) URLs?"
-msgstr "Utiliser des jolies URL (plus lisibles et mémorable) ?"
+msgstr "Utiliser des jolies URL (plus lisibles et faciles à mémoriser) ?"
#: actions/pathsadminpanel.php:259
msgid "Theme"
@@ -2781,19 +2837,19 @@ msgstr "Flux public - page %d"
msgid "Public timeline"
msgstr "Flux public"
-#: actions/public.php:151
+#: actions/public.php:159
msgid "Public Stream Feed (RSS 1.0)"
msgstr "Fil du flux public (RSS 1.0)"
-#: actions/public.php:155
+#: actions/public.php:163
msgid "Public Stream Feed (RSS 2.0)"
msgstr "Fil du flux public (RSS 2.0)"
-#: actions/public.php:159
+#: actions/public.php:167
msgid "Public Stream Feed (Atom)"
msgstr "Fil du flux public (Atom)"
-#: actions/public.php:179
+#: actions/public.php:187
#, php-format
msgid ""
"This is the public timeline for %%site.name%% but no one has posted anything "
@@ -2802,11 +2858,11 @@ msgstr ""
"Ceci est la chronologie publique de %%site.name%% mais personne n’a encore "
"rien posté."
-#: actions/public.php:182
+#: actions/public.php:190
msgid "Be the first to post!"
msgstr "Soyez le premier à poster !"
-#: actions/public.php:186
+#: actions/public.php:194
#, php-format
msgid ""
"Why not [register an account](%%action.register%%) and be the first to post!"
@@ -2814,7 +2870,7 @@ msgstr ""
"Pourquoi ne pas [créer un compte](%%action.register%%) et être le premier à "
"poster !"
-#: actions/public.php:233
+#: actions/public.php:241
#, php-format
msgid ""
"This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2828,7 +2884,7 @@ msgstr ""
"vous avec vos amis, famille et collègues ! ([Plus d’informations](%%doc.help%"
"%))"
-#: actions/public.php:238
+#: actions/public.php:246
#, php-format
msgid ""
"This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -3199,7 +3255,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:626
+#: actions/repeat.php:114 lib/noticelist.php:642
msgid "Repeated"
msgstr "Repris"
@@ -3214,9 +3270,9 @@ msgid "Replies to %s"
msgstr "Réponses à %s"
#: actions/replies.php:127
-#, fuzzy, php-format
+#, php-format
msgid "Replies to %1$s, page %2$d"
-msgstr "Réponses à %1$s sur %2$s !"
+msgstr "Réponses à %1$s, page %2$d"
#: actions/replies.php:144
#, php-format
@@ -3267,6 +3323,10 @@ msgstr ""
msgid "Replies to %1$s on %2$s!"
msgstr "Réponses à %1$s sur %2$s !"
+#: actions/rsd.php:146 actions/version.php:157
+msgid "StatusNet"
+msgstr "StatusNet"
+
#: actions/sandbox.php:65 actions/unsandbox.php:65
msgid "You cannot sandbox users on this site."
msgstr ""
@@ -3282,9 +3342,8 @@ msgid "Sessions"
msgstr "Sessions"
#: actions/sessionsadminpanel.php:65
-#, fuzzy
msgid "Session settings for this StatusNet site."
-msgstr "Paramètres de conception pour ce site StatusNet."
+msgstr "Paramètres de session pour ce site StatusNet."
#: actions/sessionsadminpanel.php:175
msgid "Handle sessions"
@@ -3311,80 +3370,87 @@ msgstr "Sauvegarder les paramètres du site"
msgid "You must be logged in to view an application."
msgstr "Vous devez être connecté pour voir une application."
-#: actions/showapplication.php:158
+#: actions/showapplication.php:157
msgid "Application profile"
-msgstr "Profil de l'application"
+msgstr "Profil de l’application"
-#: actions/showapplication.php:160 lib/applicationeditform.php:180
+#: actions/showapplication.php:159 lib/applicationeditform.php:180
msgid "Icon"
msgstr "Icône"
-#: actions/showapplication.php:170 actions/version.php:195
+#: actions/showapplication.php:169 actions/version.php:195
#: lib/applicationeditform.php:195
msgid "Name"
msgstr "Nom"
-#: actions/showapplication.php:179 lib/applicationeditform.php:222
+#: actions/showapplication.php:178 lib/applicationeditform.php:222
msgid "Organization"
msgstr "Organisation"
-#: actions/showapplication.php:188 actions/version.php:198
+#: actions/showapplication.php:187 actions/version.php:198
#: lib/applicationeditform.php:209 lib/groupeditform.php:172
msgid "Description"
msgstr "Description"
-#: actions/showapplication.php:193 actions/showgroup.php:429
+#: actions/showapplication.php:192 actions/showgroup.php:429
#: lib/profileaction.php:174
msgid "Statistics"
msgstr "Statistiques"
-#: actions/showapplication.php:204
+#: actions/showapplication.php:203
#, php-format
-msgid "created by %1$s - %2$s access by default - %3$d users"
-msgstr ""
+msgid "Created by %1$s - %2$s access by default - %3$d users"
+msgstr "Créé par %1$s - accès %2$s par défaut - %3$d utilisateurs"
-#: actions/showapplication.php:214
+#: actions/showapplication.php:213
msgid "Application actions"
-msgstr ""
+msgstr "Actions de l’application"
-#: actions/showapplication.php:233
+#: actions/showapplication.php:236
msgid "Reset key & secret"
-msgstr ""
+msgstr "Réinitialiser la clé et le secret"
-#: actions/showapplication.php:241
+#: actions/showapplication.php:261
msgid "Application info"
-msgstr "Informations sur l'application"
+msgstr "Informations sur l’application"
-#: actions/showapplication.php:243
+#: actions/showapplication.php:263
msgid "Consumer key"
-msgstr ""
+msgstr "Clé de l’utilisateur"
-#: actions/showapplication.php:248
+#: actions/showapplication.php:268
msgid "Consumer secret"
-msgstr ""
+msgstr "Secret de l’utilisateur"
-#: actions/showapplication.php:253
+#: actions/showapplication.php:273
msgid "Request token URL"
msgstr "URL du jeton de requête"
-#: actions/showapplication.php:258
+#: actions/showapplication.php:278
msgid "Access token URL"
-msgstr "URL du jeton d'accès"
+msgstr "URL du jeton d’accès"
-#: actions/showapplication.php:263
+#: actions/showapplication.php:283
msgid "Authorize URL"
-msgstr "Autoriser l'URL"
+msgstr "Autoriser l’URL"
-#: actions/showapplication.php:268
+#: actions/showapplication.php:288
msgid ""
"Note: We support HMAC-SHA1 signatures. We do not support the plaintext "
"signature method."
msgstr ""
+"Note : Nous utilisons les signatures HMAC-SHA1. Nous n’utilisons pas la "
+"méthode de signature en texte clair."
+
+#: actions/showapplication.php:309
+#, fuzzy
+msgid "Are you sure you want to reset your consumer key and secret?"
+msgstr "Voulez-vous vraiment supprimer cet avis ?"
#: actions/showfavorites.php:79
-#, fuzzy, php-format
+#, php-format
msgid "%1$s's favorite notices, page %2$d"
-msgstr "Avis favoris de %s"
+msgstr "Avis favoris de %1$s, page %2$d"
#: actions/showfavorites.php:132
msgid "Could not retrieve favorite notices."
@@ -3444,9 +3510,9 @@ msgid "%s group"
msgstr "Groupe %s"
#: actions/showgroup.php:84
-#, fuzzy, php-format
+#, php-format
msgid "%1$s group, page %2$d"
-msgstr "Membres du groupe %1$s - page %2$d"
+msgstr "Groupe %1$s, page %2$d"
#: actions/showgroup.php:218
msgid "Group profile"
@@ -3571,9 +3637,9 @@ msgid " tagged %s"
msgstr " marqué %s"
#: actions/showstream.php:79
-#, fuzzy, php-format
+#, php-format
msgid "%1$s, page %2$d"
-msgstr "%1$s profils bloqués, page %2$d"
+msgstr "%1$s, page %2$d"
#: actions/showstream.php:122
#, php-format
@@ -3600,13 +3666,13 @@ msgstr "Flux des avis de %s (Atom)"
msgid "FOAF for %s"
msgstr "ami d’un ami pour %s"
-#: actions/showstream.php:191
+#: actions/showstream.php:200
#, php-format
msgid "This is the timeline for %1$s but %2$s hasn't posted anything yet."
msgstr ""
"Ceci est la chronologie de %1$s mais %2$s n’a rien publié pour le moment."
-#: actions/showstream.php:196
+#: actions/showstream.php:205
msgid ""
"Seen anything interesting recently? You haven't posted any notices yet, now "
"would be a good time to start :)"
@@ -3614,7 +3680,7 @@ msgstr ""
"Avez-vous vu quelque chose d’intéressant récemment ? Vous n’avez pas publié "
"d’avis pour le moment, vous pourriez commencer maintenant :)"
-#: actions/showstream.php:198
+#: actions/showstream.php:207
#, php-format
msgid ""
"You can try to nudge %1$s or [post something to his or her attention](%%%%"
@@ -3623,7 +3689,7 @@ msgstr ""
"Vous pouvez essayer de faire un clin d’œil à %1$s ou de [poster quelque "
"chose à son intention](%%%%action.newnotice%%%%?status_textarea=%2$s)."
-#: actions/showstream.php:234
+#: actions/showstream.php:243
#, php-format
msgid ""
"**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3637,7 +3703,7 @@ msgstr ""
"register%%%%) pour suivre les avis de **%s** et bien plus ! ([En lire plus](%"
"%%%doc.help%%%%))"
-#: actions/showstream.php:239
+#: actions/showstream.php:248
#, php-format
msgid ""
"**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3648,7 +3714,7 @@ msgstr ""
"wikipedia.org/wiki/Microblog) basé sur le logiciel libre [StatusNet](http://"
"status.net/). "
-#: actions/showstream.php:296
+#: actions/showstream.php:305
#, php-format
msgid "Repeat of %s"
msgstr "Reprises de %s"
@@ -3909,7 +3975,7 @@ msgstr "Aucun code entré"
#: actions/subedit.php:70
msgid "You are not subscribed to that profile."
-msgstr "Vous n'êtes pas abonné(e) à ce profil."
+msgstr "Vous n’êtes pas abonné(e) à ce profil."
#: actions/subedit.php:83
msgid "Could not save subscription."
@@ -4013,9 +4079,9 @@ msgid "SMS"
msgstr "SMS"
#: actions/tag.php:68
-#, fuzzy, php-format
+#, php-format
msgid "Notices tagged with %1$s, page %2$d"
-msgstr "Utilisateurs marqués par eux-mêmes avec %1$s - page %2$d"
+msgstr "Avis marqués avec %1$s, page %2$d"
#: actions/tag.php:86
#, php-format
@@ -4302,9 +4368,9 @@ msgid "Enjoy your hotdog!"
msgstr "Bon appétit !"
#: actions/usergroups.php:64
-#, fuzzy, php-format
+#, php-format
msgid "%1$s groups, page %2$d"
-msgstr "Membres du groupe %1$s - page %2$d"
+msgstr "Groupes %1$s, page %2$d"
#: actions/usergroups.php:130
msgid "Search for more groups"
@@ -4336,10 +4402,6 @@ msgstr ""
"Ce site est propulsé par %1$s, version %2$s, Copyright 2008-2010 StatusNet, "
"Inc. et ses contributeurs."
-#: actions/version.php:157
-msgid "StatusNet"
-msgstr "StatusNet"
-
#: actions/version.php:161
msgid "Contributors"
msgstr "Contributeurs"
@@ -4410,11 +4472,11 @@ msgstr "Un fichier aussi gros dépasserai votre quota mensuel de %d octets."
#: classes/Group_member.php:41
msgid "Group join failed."
-msgstr "L'inscription au groupe a échoué."
+msgstr "L’inscription au groupe a échoué."
#: classes/Group_member.php:53
msgid "Not part of group."
-msgstr "N'appartient pas au groupe."
+msgstr "N’appartient pas au groupe."
#: classes/Group_member.php:60
msgid "Group leave failed."
@@ -4423,7 +4485,7 @@ msgstr "La désinscription du groupe a échoué."
#: classes/Login_token.php:76
#, php-format
msgid "Could not create login token for %s"
-msgstr "Impossible de créer le jeton d'ouverture de session pour %s"
+msgstr "Impossible de créer le jeton d’identification pour %s"
#: classes/Message.php:45
msgid "You are banned from sending direct messages."
@@ -4473,22 +4535,21 @@ msgstr "Il vous est interdit de poster des avis sur ce site."
msgid "Problem saving notice."
msgstr "Problème lors de l’enregistrement de l’avis."
-#: classes/Notice.php:790
-#, fuzzy
+#: classes/Notice.php:788
msgid "Problem saving group inbox."
-msgstr "Problème lors de l’enregistrement de l’avis."
+msgstr "Problème lors de l’enregistrement de la boîte de réception du groupe."
-#: classes/Notice.php:850
+#: classes/Notice.php:848
#, 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:1233
+#: classes/Notice.php:1231
#, php-format
msgid "RT @%1$s %2$s"
msgstr "RT @%1$s %2$s"
-#: classes/User.php:382
+#: classes/User.php:385
#, php-format
msgid "Welcome to %1$s, @%2$s!"
msgstr "Bienvenue à %1$s, @%2$s !"
@@ -4499,7 +4560,7 @@ msgstr "Impossible de créer le groupe."
#: classes/User_group.php:409
msgid "Could not set group membership."
-msgstr "Impossible d'établir l’inscription au groupe."
+msgstr "Impossible d’établir l’inscription au groupe."
#: lib/accountsettingsaction.php:108
msgid "Change your profile settings"
@@ -4687,16 +4748,20 @@ msgstr "Licence du contenu du site"
#: lib/action.php:806
#, php-format
msgid "Content and data of %1$s are private and confidential."
-msgstr ""
+msgstr "Le contenu et les données de %1$s sont privés et confidentiels."
#: lib/action.php:811
#, php-format
msgid "Content and data copyright by %1$s. All rights reserved."
msgstr ""
+"Le contenu et les données sont sous le droit d’auteur de %1$s. Tous droits "
+"réservés."
#: lib/action.php:814
msgid "Content and data copyright by contributors. All rights reserved."
msgstr ""
+"Le contenu et les données sont sous le droit d’auteur du contributeur. Tous "
+"droits réservés."
#: lib/action.php:826
msgid "All "
@@ -4752,25 +4817,28 @@ msgstr "Configuration utilisateur"
#: lib/adminpanelaction.php:327
msgid "Access configuration"
-msgstr "Configuration d'accès"
+msgstr "Configuration d’accès"
#: lib/adminpanelaction.php:332
msgid "Paths configuration"
msgstr "Configuration des chemins"
#: lib/adminpanelaction.php:337
-#, fuzzy
msgid "Sessions configuration"
-msgstr "Configuration de la conception"
+msgstr "Configuration des sessions"
-#: lib/apiauth.php:99
+#: lib/apiauth.php:95
msgid "API resource requires read-write access, but you only have read access."
msgstr ""
+"La ressource de l’API a besoin de l’accès en lecture et en écriture, mais "
+"vous n’y avez accès qu’en lecture."
-#: lib/apiauth.php:279
+#: lib/apiauth.php:273
#, php-format
msgid "Failed API auth attempt, nickname = %1$s, proxy = %2$s, ip = %3$s"
msgstr ""
+"L’essai d’authentification de l’API a échoué ; pseudo = %1$s, proxy = %2$s, "
+"ip = %3$s"
#: lib/applicationeditform.php:136
msgid "Edit application"
@@ -4787,7 +4855,7 @@ msgstr "Décrivez votre application en %d caractères"
#: lib/applicationeditform.php:207
msgid "Describe your application"
-msgstr "Décrivez votre applications"
+msgstr "Décrivez votre application"
#: lib/applicationeditform.php:216
msgid "Source URL"
@@ -4795,7 +4863,7 @@ msgstr "URL source"
#: lib/applicationeditform.php:218
msgid "URL of the homepage of this application"
-msgstr "URL de la page d'accueil de cette application"
+msgstr "URL de la page d’accueil de cette application"
#: lib/applicationeditform.php:224
msgid "Organization responsible for this application"
@@ -4803,11 +4871,11 @@ msgstr "Organisation responsable de cette application"
#: lib/applicationeditform.php:230
msgid "URL for the homepage of the organization"
-msgstr "URL de la page d'accueil de l'organisation"
+msgstr "URL de la page d’accueil de l’organisation"
#: lib/applicationeditform.php:236
msgid "URL to redirect to after authentication"
-msgstr "URL vers laquelle rediriger après l'authentification"
+msgstr "URL vers laquelle rediriger après l’authentification"
#: lib/applicationeditform.php:258
msgid "Browser"
@@ -4819,7 +4887,7 @@ msgstr "Bureau"
#: lib/applicationeditform.php:275
msgid "Type of application, browser or desktop"
-msgstr "Type d'application, navigateur ou bureau"
+msgstr "Type d’application, navigateur ou bureau"
#: lib/applicationeditform.php:297
msgid "Read-only"
@@ -4895,7 +4963,7 @@ msgstr "Ça n’a pas de sens de se faire un clin d’œil à soi-même !"
#: lib/command.php:99
#, php-format
msgid "Nudge sent to %s"
-msgstr "Coup de code envoyé à %s"
+msgstr "Clin d’œil envoyé à %s"
#: lib/command.php:126
#, php-format
@@ -4933,7 +5001,7 @@ msgstr "Impossible d’inscrire l’utilisateur %s au groupe %s"
#: lib/command.php:236
#, php-format
msgid "%s joined group %s"
-msgstr "%1$s a rejoint le groupe %2$s"
+msgstr "%s a rejoint le groupe %s"
#: lib/command.php:275
#, php-format
@@ -4943,7 +5011,7 @@ msgstr "Impossible de retirer l’utilisateur %s du groupe %s"
#: lib/command.php:280
#, php-format
msgid "%s left group %s"
-msgstr "%1$s a quitté le groupe %2$s"
+msgstr "%s a quitté le groupe %s"
#: lib/command.php:309
#, php-format
@@ -5054,7 +5122,7 @@ msgstr "Impossible d’activer les avertissements."
#: lib/command.php:641
msgid "Login command is disabled"
-msgstr "La commande d'ouverture de session est désactivée"
+msgstr "La commande d’ouverture de session est désactivée"
#: lib/command.php:652
#, php-format
@@ -5065,7 +5133,7 @@ msgstr ""
#: lib/command.php:668
msgid "You are not subscribed to anyone."
-msgstr "Vous n'êtes pas abonné(e) à personne."
+msgstr "Vous n’êtes abonné(e) à personne."
#: lib/command.php:670
msgid "You are subscribed to this person:"
@@ -5172,20 +5240,20 @@ msgstr ""
"tracks - pas encore implémenté.\n"
"tracking - pas encore implémenté.\n"
-#: lib/common.php:131
+#: lib/common.php:135
msgid "No configuration file found. "
msgstr "Aucun fichier de configuration n’a été trouvé. "
-#: lib/common.php:132
+#: lib/common.php:136
msgid "I looked for configuration files in the following places: "
msgstr ""
"J’ai cherché des fichiers de configuration dans les emplacements suivants : "
-#: lib/common.php:134
+#: lib/common.php:138
msgid "You may wish to run the installer to fix this."
msgstr "Vous pouvez essayer de lancer l’installeur pour régler ce problème."
-#: lib/common.php:135
+#: lib/common.php:139
msgid "Go to the installer."
msgstr "Aller au programme d’installation"
@@ -5349,7 +5417,7 @@ msgstr "Groupes avec le plus de membres"
#: lib/groupsbypostssection.php:71
msgid "Groups with most posts"
-msgstr "Groupes avec le plus d'éléments publiés"
+msgstr "Groupes avec le plus d’éléments publiés"
#: lib/grouptagcloudsection.php:56
#, php-format
@@ -5737,7 +5805,7 @@ msgstr "Un dossier temporaire est manquant."
#: lib/mediafile.php:162
msgid "Failed to write file to disk."
-msgstr "Impossible d'écrire sur le disque."
+msgstr "Impossible d’écrire sur le disque."
#: lib/mediafile.php:165
msgid "File upload stopped by extension."
@@ -5807,7 +5875,7 @@ msgid ""
"Sorry, retrieving your geo location is taking longer than expected, please "
"try again later"
msgstr ""
-"Désolé, l'obtention de votre localisation prend plus de temps que prévu. "
+"Désolé, l’obtention de votre localisation prend plus de temps que prévu. "
"Veuillez réessayer plus tard."
#: lib/noticelist.php:428
@@ -5835,23 +5903,23 @@ msgstr "O"
msgid "at"
msgstr "chez"
-#: lib/noticelist.php:531
+#: lib/noticelist.php:547
msgid "in context"
msgstr "dans le contexte"
-#: lib/noticelist.php:556
+#: lib/noticelist.php:572
msgid "Repeated by"
msgstr "Repris par"
-#: lib/noticelist.php:582
+#: lib/noticelist.php:598
msgid "Reply to this notice"
msgstr "Répondre à cet avis"
-#: lib/noticelist.php:583
+#: lib/noticelist.php:599
msgid "Reply"
msgstr "Répondre"
-#: lib/noticelist.php:625
+#: lib/noticelist.php:641
msgid "Notice repeated"
msgstr "Avis repris"
@@ -5992,6 +6060,10 @@ msgstr "Reprendre cet avis ?"
msgid "Repeat this notice"
msgstr "Reprendre cet avis"
+#: lib/router.php:665
+msgid "No single user defined for single-user mode."
+msgstr "Aucun utilisateur unique défini pour le mode mono-utilisateur."
+
#: lib/sandboxform.php:67
msgid "Sandbox"
msgstr "Bac à sable"
@@ -6157,47 +6229,47 @@ msgstr "Message"
msgid "Moderate"
msgstr "Modérer"
-#: lib/util.php:868
+#: lib/util.php:867
msgid "a few seconds ago"
msgstr "il y a quelques secondes"
-#: lib/util.php:870
+#: lib/util.php:869
msgid "about a minute ago"
msgstr "il y a 1 minute"
-#: lib/util.php:872
+#: lib/util.php:871
#, php-format
msgid "about %d minutes ago"
msgstr "il y a %d minutes"
-#: lib/util.php:874
+#: lib/util.php:873
msgid "about an hour ago"
msgstr "il y a 1 heure"
-#: lib/util.php:876
+#: lib/util.php:875
#, php-format
msgid "about %d hours ago"
msgstr "il y a %d heures"
-#: lib/util.php:878
+#: lib/util.php:877
msgid "about a day ago"
msgstr "il y a 1 jour"
-#: lib/util.php:880
+#: lib/util.php:879
#, php-format
msgid "about %d days ago"
msgstr "il y a %d jours"
-#: lib/util.php:882
+#: lib/util.php:881
msgid "about a month ago"
msgstr "il y a 1 mois"
-#: lib/util.php:884
+#: lib/util.php:883
#, php-format
msgid "about %d months ago"
msgstr "il y a %d mois"
-#: lib/util.php:886
+#: lib/util.php:885
msgid "about a year ago"
msgstr "il y a environ 1 an"
diff --git a/locale/ga/LC_MESSAGES/statusnet.po b/locale/ga/LC_MESSAGES/statusnet.po
index adcf8316b..5be4d756e 100644
--- a/locale/ga/LC_MESSAGES/statusnet.po
+++ b/locale/ga/LC_MESSAGES/statusnet.po
@@ -8,12 +8,12 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-01-30 23:41+0000\n"
-"PO-Revision-Date: 2010-01-30 23:41:51+0000\n"
+"POT-Creation-Date: 2010-02-04 10:31+0000\n"
+"PO-Revision-Date: 2010-02-04 10:32:41+0000\n"
"Language-Team: Irish\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.16alpha (r61734); Translate extension (2010-01-16)\n"
+"X-Generator: MediaWiki 1.16alpha (r61969); Translate extension (2010-01-16)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: ga\n"
"X-Message-Group: out-statusnet\n"
@@ -101,7 +101,7 @@ msgstr "Non existe a etiqueta."
#: actions/favoritesrss.php:74 actions/foaf.php:40 actions/foaf.php:58
#: actions/microsummary.php:62 actions/newmessage.php:116 actions/otp.php:76
#: actions/remotesubscribe.php:145 actions/remotesubscribe.php:154
-#: actions/replies.php:73 actions/repliesrss.php:38
+#: actions/replies.php:73 actions/repliesrss.php:38 actions/rsd.php:116
#: actions/showfavorites.php:105 actions/userbyid.php:74
#: actions/usergroups.php:91 actions/userrss.php:38 actions/xrds.php:71
#: lib/command.php:163 lib/command.php:302 lib/command.php:355
@@ -158,7 +158,7 @@ msgid ""
"his or her attention](%%%%action.newnotice%%%%?status_textarea=%3$s)."
msgstr ""
-#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:202
+#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:211
#, php-format
msgid ""
"Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
@@ -397,8 +397,8 @@ msgstr "O alcume xa está sendo empregado por outro usuario. Tenta con outro."
msgid "Not a valid nickname."
msgstr "Non é un alcume válido."
-#: actions/apigroupcreate.php:196 actions/editapplication.php:212
-#: actions/editgroup.php:195 actions/newapplication.php:200
+#: actions/apigroupcreate.php:196 actions/editapplication.php:215
+#: actions/editgroup.php:195 actions/newapplication.php:203
#: actions/newgroup.php:139 actions/profilesettings.php:222
#: actions/register.php:217
msgid "Homepage is not a valid URL."
@@ -410,8 +410,8 @@ msgstr "A páxina persoal semella que non é unha URL válida."
msgid "Full name is too long (max 255 chars)."
msgstr "O nome completo é demasiado longo (max 255 car)."
-#: actions/apigroupcreate.php:213 actions/editapplication.php:187
-#: actions/newapplication.php:169
+#: actions/apigroupcreate.php:213 actions/editapplication.php:190
+#: actions/newapplication.php:172
#, php-format
msgid "Description is too long (max %d chars)."
msgstr "O teu Bio é demasiado longo (max 140 car.)."
@@ -489,18 +489,23 @@ msgstr ""
msgid "groups on %s"
msgstr "Outras opcions"
-#: actions/apioauthauthorize.php:108 actions/apioauthauthorize.php:114
-msgid "Bad request."
+#: actions/apioauthauthorize.php:101
+msgid "No oauth_token parameter provided."
msgstr ""
-#: actions/apioauthauthorize.php:134 actions/avatarsettings.php:268
+#: actions/apioauthauthorize.php:106
+#, fuzzy
+msgid "Invalid token."
+msgstr "Tamaño inválido."
+
+#: actions/apioauthauthorize.php:123 actions/avatarsettings.php:268
#: actions/deletenotice.php:157 actions/disfavor.php:74
-#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:50
+#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:54
#: actions/groupblock.php:66 actions/grouplogo.php:309
#: actions/groupunblock.php:66 actions/imsettings.php:206
#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
-#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:139
+#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:135
#: actions/othersettings.php:145 actions/passwordsettings.php:138
#: actions/profilesettings.php:194 actions/recoverpassword.php:337
#: actions/register.php:165 actions/remotesubscribe.php:77
@@ -511,77 +516,85 @@ msgstr ""
msgid "There was a problem with your session token. Try again, please."
msgstr "Houbo un problema co teu token de sesión. Tentao de novo, anda..."
-#: actions/apioauthauthorize.php:146
+#: actions/apioauthauthorize.php:135
#, fuzzy
msgid "Invalid nickname / password!"
msgstr "Usuario ou contrasinal inválidos."
-#: actions/apioauthauthorize.php:170
+#: actions/apioauthauthorize.php:159
#, fuzzy
msgid "Database error deleting OAuth application user."
msgstr "Acounteceu un erro configurando o usuario."
-#: actions/apioauthauthorize.php:196
+#: actions/apioauthauthorize.php:185
#, fuzzy
msgid "Database error inserting OAuth application user."
msgstr "Erro ó inserir o hashtag na BD: %s"
-#: actions/apioauthauthorize.php:231
+#: actions/apioauthauthorize.php:214
#, php-format
msgid ""
"The request token %s has been authorized. Please exchange it for an access "
"token."
msgstr ""
-#: actions/apioauthauthorize.php:241
+#: actions/apioauthauthorize.php:227
#, php-format
-msgid "The request token %s has been denied."
+msgid "The request token %s has been denied and revoked."
msgstr ""
-#: actions/apioauthauthorize.php:246 actions/avatarsettings.php:281
+#: actions/apioauthauthorize.php:232 actions/avatarsettings.php:281
#: actions/designadminpanel.php:103 actions/editapplication.php:139
#: actions/emailsettings.php:256 actions/grouplogo.php:319
#: actions/imsettings.php:220 actions/newapplication.php:121
-#: actions/oauthconnectionssettings.php:151 actions/recoverpassword.php:44
+#: actions/oauthconnectionssettings.php:147 actions/recoverpassword.php:44
#: actions/smssettings.php:248 lib/designsettings.php:304
msgid "Unexpected form submission."
msgstr "Envio de formulario non esperada."
-#: actions/apioauthauthorize.php:273
+#: actions/apioauthauthorize.php:259
msgid "An application would like to connect to your account"
msgstr ""
-#: actions/apioauthauthorize.php:290
+#: actions/apioauthauthorize.php:276
msgid "Allow or deny access"
msgstr ""
-#: actions/apioauthauthorize.php:320 lib/action.php:441
+#: actions/apioauthauthorize.php:292
+#, php-format
+msgid ""
+"The application <strong>%1$s</strong> by <strong>%2$s</strong> would like "
+"the ability to <strong>%3$s</strong> your %4$s account data. You should only "
+"give access to your %4$s account to third parties you trust."
+msgstr ""
+
+#: actions/apioauthauthorize.php:310 lib/action.php:441
#, fuzzy
msgid "Account"
msgstr "Sobre"
-#: actions/apioauthauthorize.php:323 actions/login.php:230
+#: actions/apioauthauthorize.php:313 actions/login.php:230
#: actions/profilesettings.php:106 actions/register.php:424
#: actions/showgroup.php:236 actions/tagother.php:94 lib/groupeditform.php:152
#: lib/userprofile.php:131
msgid "Nickname"
msgstr "Alcume"
-#: actions/apioauthauthorize.php:326 actions/login.php:233
+#: actions/apioauthauthorize.php:316 actions/login.php:233
#: actions/register.php:429 lib/accountsettingsaction.php:116
msgid "Password"
msgstr "Contrasinal"
-#: actions/apioauthauthorize.php:338
+#: actions/apioauthauthorize.php:328
msgid "Deny"
msgstr ""
-#: actions/apioauthauthorize.php:344
+#: actions/apioauthauthorize.php:334
#, fuzzy
msgid "Allow"
msgstr "Todos"
-#: actions/apioauthauthorize.php:361
+#: actions/apioauthauthorize.php:351
msgid "Allow or deny access to your account information."
msgstr ""
@@ -757,8 +770,8 @@ msgstr ""
msgid "Preview"
msgstr ""
-#: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:608
+#: actions/avatarsettings.php:149 actions/showapplication.php:252
+#: lib/deleteuserform.php:66 lib/noticelist.php:624
#, fuzzy
msgid "Delete"
msgstr "eliminar"
@@ -811,8 +824,9 @@ msgstr ""
"do teur perfil, non será capaz de suscribirse a ti nun futuro, e non vas a "
"ser notificado de ningunha resposta-@ del."
-#: actions/block.php:143 actions/deletenotice.php:145
-#: actions/deleteuser.php:147 actions/groupblock.php:178
+#: actions/block.php:143 actions/deleteapplication.php:153
+#: actions/deletenotice.php:145 actions/deleteuser.php:147
+#: actions/groupblock.php:178
msgid "No"
msgstr "No"
@@ -821,9 +835,9 @@ msgstr "No"
msgid "Do not block this user"
msgstr "Bloquear usuario"
-#: actions/block.php:144 actions/deletenotice.php:146
-#: actions/deleteuser.php:148 actions/groupblock.php:179
-#: lib/repeatform.php:132
+#: actions/block.php:144 actions/deleteapplication.php:158
+#: actions/deletenotice.php:146 actions/deleteuser.php:148
+#: actions/groupblock.php:179 lib/repeatform.php:132
msgid "Yes"
msgstr "Si"
@@ -934,6 +948,51 @@ msgstr "Código de confirmación."
msgid "Notices"
msgstr "Chíos"
+#: actions/deleteapplication.php:63
+#, fuzzy
+msgid "You must be logged in to delete an application."
+msgstr "Debes estar logueado para invitar a outros usuarios a empregar %s"
+
+#: actions/deleteapplication.php:71
+#, fuzzy
+msgid "Application not found."
+msgstr "O chío non ten perfil"
+
+#: actions/deleteapplication.php:78 actions/editapplication.php:77
+#: actions/showapplication.php:94
+#, fuzzy
+msgid "You are not the owner of this application."
+msgstr "Non estás suscrito a ese perfil"
+
+#: actions/deleteapplication.php:102 actions/editapplication.php:127
+#: actions/newapplication.php:110 actions/showapplication.php:118
+#: lib/action.php:1195
+#, fuzzy
+msgid "There was a problem with your session token."
+msgstr "Houbo un problema co teu token de sesión. Tentao de novo, anda..."
+
+#: actions/deleteapplication.php:123 actions/deleteapplication.php:147
+#, fuzzy
+msgid "Delete application"
+msgstr "Ningún chío."
+
+#: actions/deleteapplication.php:149
+msgid ""
+"Are you sure you want to delete this application? This will clear all data "
+"about the application from the database, including all existing user "
+"connections."
+msgstr ""
+
+#: actions/deleteapplication.php:156
+#, fuzzy
+msgid "Do not delete this application"
+msgstr "Non se pode eliminar este chíos."
+
+#: actions/deleteapplication.php:160
+#, fuzzy
+msgid "Delete this application"
+msgstr "Eliminar chío"
+
#: actions/deletenotice.php:67 actions/disfavor.php:61 actions/favor.php:62
#: actions/groupblock.php:61 actions/groupunblock.php:61 actions/logout.php:69
#: actions/makeadmin.php:61 actions/newmessage.php:87 actions/newnotice.php:89
@@ -970,7 +1029,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:608
+#: actions/deletenotice.php:146 lib/noticelist.php:624
#, fuzzy
msgid "Delete this notice"
msgstr "Eliminar chío"
@@ -1124,7 +1183,7 @@ msgstr "Este chío non é un favorito!"
msgid "Add to favorites"
msgstr "Engadir a favoritos"
-#: actions/doc.php:155
+#: actions/doc.php:158
#, fuzzy, php-format
msgid "No such document \"%s\""
msgstr "Ningún documento."
@@ -1139,23 +1198,12 @@ msgstr "Outras opcions"
msgid "You must be logged in to edit an application."
msgstr "Debes estar logueado para invitar a outros usuarios a empregar %s"
-#: actions/editapplication.php:77 actions/showapplication.php:94
-#, fuzzy
-msgid "You are not the owner of this application."
-msgstr "Non estás suscrito a ese perfil"
-
-#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:163
+#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:166
#: actions/showapplication.php:87
#, fuzzy
msgid "No such application."
msgstr "Ningún chío."
-#: actions/editapplication.php:127 actions/newapplication.php:110
-#: actions/showapplication.php:118 lib/action.php:1195
-#, fuzzy
-msgid "There was a problem with your session token."
-msgstr "Houbo un problema co teu token de sesión. Tentao de novo, anda..."
-
#: actions/editapplication.php:161
#, fuzzy
msgid "Use this form to edit your application."
@@ -1168,47 +1216,52 @@ msgstr ""
msgid "Name is required."
msgstr "A mesma contrasinal que arriba. Requerido."
-#: actions/editapplication.php:180 actions/newapplication.php:162
+#: actions/editapplication.php:180 actions/newapplication.php:165
#, fuzzy
msgid "Name is too long (max 255 chars)."
msgstr "O nome completo é demasiado longo (max 255 car)."
-#: actions/editapplication.php:183 actions/newapplication.php:165
+#: actions/editapplication.php:183 actions/newapplication.php:162
+#, fuzzy
+msgid "Name already in use. Try another one."
+msgstr "O alcume xa está sendo empregado por outro usuario. Tenta con outro."
+
+#: actions/editapplication.php:186 actions/newapplication.php:168
#, fuzzy
msgid "Description is required."
msgstr "Subscricións"
-#: actions/editapplication.php:191
+#: actions/editapplication.php:194
msgid "Source URL is too long."
msgstr ""
-#: actions/editapplication.php:197 actions/newapplication.php:182
+#: actions/editapplication.php:200 actions/newapplication.php:185
#, fuzzy
msgid "Source URL is not valid."
msgstr "A páxina persoal semella que non é unha URL válida."
-#: actions/editapplication.php:200 actions/newapplication.php:185
+#: actions/editapplication.php:203 actions/newapplication.php:188
msgid "Organization is required."
msgstr ""
-#: actions/editapplication.php:203 actions/newapplication.php:188
+#: actions/editapplication.php:206 actions/newapplication.php:191
#, fuzzy
msgid "Organization is too long (max 255 chars)."
msgstr "A localización é demasiado longa (max 255 car.)."
-#: actions/editapplication.php:206 actions/newapplication.php:191
+#: actions/editapplication.php:209 actions/newapplication.php:194
msgid "Organization homepage is required."
msgstr ""
-#: actions/editapplication.php:215 actions/newapplication.php:203
+#: actions/editapplication.php:218 actions/newapplication.php:206
msgid "Callback is too long."
msgstr ""
-#: actions/editapplication.php:222 actions/newapplication.php:212
+#: actions/editapplication.php:225 actions/newapplication.php:215
msgid "Callback URL is not valid."
msgstr ""
-#: actions/editapplication.php:255
+#: actions/editapplication.php:258
#, fuzzy
msgid "Could not update application."
msgstr "Non se puido actualizar o usuario."
@@ -2158,11 +2211,11 @@ msgstr "Debes estar logueado para invitar a outros usuarios a empregar %s"
msgid "Use this form to register a new application."
msgstr ""
-#: actions/newapplication.php:173
+#: actions/newapplication.php:176
msgid "Source URL is required."
msgstr ""
-#: actions/newapplication.php:255 actions/newapplication.php:264
+#: actions/newapplication.php:258 actions/newapplication.php:267
#, fuzzy
msgid "Could not create application."
msgstr "Non se puido crear o favorito."
@@ -2297,29 +2350,29 @@ msgstr ""
msgid "You have not registered any applications yet."
msgstr ""
-#: actions/oauthconnectionssettings.php:71
+#: actions/oauthconnectionssettings.php:72
msgid "Connected applications"
msgstr ""
-#: actions/oauthconnectionssettings.php:87
+#: actions/oauthconnectionssettings.php:83
msgid "You have allowed the following applications to access you account."
msgstr ""
-#: actions/oauthconnectionssettings.php:170
+#: actions/oauthconnectionssettings.php:175
#, fuzzy
msgid "You are not a user of that application."
msgstr "Non estás suscrito a ese perfil"
-#: actions/oauthconnectionssettings.php:180
+#: actions/oauthconnectionssettings.php:186
msgid "Unable to revoke access for app: "
msgstr ""
-#: actions/oauthconnectionssettings.php:192
+#: actions/oauthconnectionssettings.php:198
#, php-format
msgid "You have not authorized any applications to use your account."
msgstr ""
-#: actions/oauthconnectionssettings.php:205
+#: actions/oauthconnectionssettings.php:211
msgid "Developers can edit the registration settings for their applications "
msgstr ""
@@ -2845,39 +2898,39 @@ msgstr "Liña de tempo pública"
msgid "Public timeline"
msgstr "Liña de tempo pública"
-#: actions/public.php:151
+#: actions/public.php:159
#, fuzzy
msgid "Public Stream Feed (RSS 1.0)"
msgstr "Sindicación do Fio Público"
-#: actions/public.php:155
+#: actions/public.php:163
#, fuzzy
msgid "Public Stream Feed (RSS 2.0)"
msgstr "Sindicación do Fio Público"
-#: actions/public.php:159
+#: actions/public.php:167
#, fuzzy
msgid "Public Stream Feed (Atom)"
msgstr "Sindicación do Fio Público"
-#: actions/public.php:179
+#: actions/public.php:187
#, php-format
msgid ""
"This is the public timeline for %%site.name%% but no one has posted anything "
"yet."
msgstr ""
-#: actions/public.php:182
+#: actions/public.php:190
msgid "Be the first to post!"
msgstr ""
-#: actions/public.php:186
+#: actions/public.php:194
#, php-format
msgid ""
"Why not [register an account](%%action.register%%) and be the first to post!"
msgstr ""
-#: actions/public.php:233
+#: actions/public.php:241
#, php-format
msgid ""
"This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2890,7 +2943,7 @@ msgstr ""
"(http://status.net/). [Únete agora](%%action.register%%) para compartir "
"chíos cos teus amigos, colegas e familia! ([Ler mais](%%doc.help%%))"
-#: actions/public.php:238
+#: actions/public.php:246
#, fuzzy, php-format
msgid ""
"This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -3264,7 +3317,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:626
+#: actions/repeat.php:114 lib/noticelist.php:642
#, fuzzy
msgid "Repeated"
msgstr "Crear"
@@ -3326,6 +3379,11 @@ msgstr ""
msgid "Replies to %1$s on %2$s!"
msgstr "Mensaxe de %1$s en %2$s"
+#: actions/rsd.php:146 actions/version.php:157
+#, fuzzy
+msgid "StatusNet"
+msgstr "Avatar actualizado."
+
#: actions/sandbox.php:65 actions/unsandbox.php:65
#, fuzzy
msgid "You cannot sandbox users on this site."
@@ -3372,80 +3430,85 @@ msgstr "Configuracións de Twitter"
msgid "You must be logged in to view an application."
msgstr "Debes estar logueado para invitar a outros usuarios a empregar %s"
-#: actions/showapplication.php:158
+#: actions/showapplication.php:157
#, fuzzy
msgid "Application profile"
msgstr "O chío non ten perfil"
-#: actions/showapplication.php:160 lib/applicationeditform.php:180
+#: actions/showapplication.php:159 lib/applicationeditform.php:180
msgid "Icon"
msgstr ""
-#: actions/showapplication.php:170 actions/version.php:195
+#: actions/showapplication.php:169 actions/version.php:195
#: lib/applicationeditform.php:195
#, fuzzy
msgid "Name"
msgstr "Alcume"
-#: actions/showapplication.php:179 lib/applicationeditform.php:222
+#: actions/showapplication.php:178 lib/applicationeditform.php:222
#, fuzzy
msgid "Organization"
msgstr "Invitación(s) enviada(s)."
-#: actions/showapplication.php:188 actions/version.php:198
+#: actions/showapplication.php:187 actions/version.php:198
#: lib/applicationeditform.php:209 lib/groupeditform.php:172
#, fuzzy
msgid "Description"
msgstr "Subscricións"
-#: actions/showapplication.php:193 actions/showgroup.php:429
+#: actions/showapplication.php:192 actions/showgroup.php:429
#: lib/profileaction.php:174
msgid "Statistics"
msgstr "Estatísticas"
-#: actions/showapplication.php:204
+#: actions/showapplication.php:203
#, php-format
-msgid "created by %1$s - %2$s access by default - %3$d users"
+msgid "Created by %1$s - %2$s access by default - %3$d users"
msgstr ""
-#: actions/showapplication.php:214
+#: actions/showapplication.php:213
msgid "Application actions"
msgstr ""
-#: actions/showapplication.php:233
+#: actions/showapplication.php:236
msgid "Reset key & secret"
msgstr ""
-#: actions/showapplication.php:241
+#: actions/showapplication.php:261
msgid "Application info"
msgstr ""
-#: actions/showapplication.php:243
+#: actions/showapplication.php:263
msgid "Consumer key"
msgstr ""
-#: actions/showapplication.php:248
+#: actions/showapplication.php:268
msgid "Consumer secret"
msgstr ""
-#: actions/showapplication.php:253
+#: actions/showapplication.php:273
msgid "Request token URL"
msgstr ""
-#: actions/showapplication.php:258
+#: actions/showapplication.php:278
msgid "Access token URL"
msgstr ""
-#: actions/showapplication.php:263
+#: actions/showapplication.php:283
msgid "Authorize URL"
msgstr ""
-#: actions/showapplication.php:268
+#: actions/showapplication.php:288
msgid ""
"Note: We support HMAC-SHA1 signatures. We do not support the plaintext "
"signature method."
msgstr ""
+#: actions/showapplication.php:309
+#, fuzzy
+msgid "Are you sure you want to reset your consumer key and secret?"
+msgstr "Estas seguro que queres eliminar este chío?"
+
#: actions/showfavorites.php:79
#, fuzzy, php-format
msgid "%1$s's favorite notices, page %2$d"
@@ -3660,25 +3723,25 @@ msgstr "Fonte de chíos para %s"
msgid "FOAF for %s"
msgstr "Band. Saída para %s"
-#: actions/showstream.php:191
+#: actions/showstream.php:200
#, php-format
msgid "This is the timeline for %1$s but %2$s hasn't posted anything yet."
msgstr ""
-#: actions/showstream.php:196
+#: actions/showstream.php:205
msgid ""
"Seen anything interesting recently? You haven't posted any notices yet, now "
"would be a good time to start :)"
msgstr ""
-#: actions/showstream.php:198
+#: actions/showstream.php:207
#, php-format
msgid ""
"You can try to nudge %1$s or [post something to his or her attention](%%%%"
"action.newnotice%%%%?status_textarea=%2$s)."
msgstr ""
-#: actions/showstream.php:234
+#: actions/showstream.php:243
#, fuzzy, php-format
msgid ""
"**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3691,7 +3754,7 @@ msgstr ""
"(http://status.net/). [Únete agora](%%action.register%%) para compartir "
"chíos cos teus amigos, colegas e familia! ([Ler mais](%%doc.help%%))"
-#: actions/showstream.php:239
+#: actions/showstream.php:248
#, fuzzy, php-format
msgid ""
"**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3703,7 +3766,7 @@ msgstr ""
"(http://status.net/). [Únete agora](%%action.register%%) para compartir "
"chíos cos teus amigos, colegas e familia! ([Ler mais](%%doc.help%%))"
-#: actions/showstream.php:296
+#: actions/showstream.php:305
#, fuzzy, php-format
msgid "Repeat of %s"
msgstr "Replies to %s"
@@ -4395,11 +4458,6 @@ msgid ""
"Inc. and contributors."
msgstr ""
-#: actions/version.php:157
-#, fuzzy
-msgid "StatusNet"
-msgstr "Avatar actualizado."
-
#: actions/version.php:161
msgid "Contributors"
msgstr ""
@@ -4528,22 +4586,22 @@ msgstr "Tes restrinxido o envio de chíos neste sitio."
msgid "Problem saving notice."
msgstr "Aconteceu un erro ó gardar o chío."
-#: classes/Notice.php:790
+#: classes/Notice.php:788
#, fuzzy
msgid "Problem saving group inbox."
msgstr "Aconteceu un erro ó gardar o chío."
-#: classes/Notice.php:850
+#: classes/Notice.php:848
#, php-format
msgid "DB error inserting reply: %s"
msgstr "Erro ó inserir a contestación na BD: %s"
-#: classes/Notice.php:1233
+#: classes/Notice.php:1231
#, fuzzy, php-format
msgid "RT @%1$s %2$s"
msgstr "%1$s (%2$s)"
-#: classes/User.php:382
+#: classes/User.php:385
#, fuzzy, php-format
msgid "Welcome to %1$s, @%2$s!"
msgstr "Mensaxe de %1$s en %2$s"
@@ -4846,11 +4904,11 @@ msgstr "Confirmación de SMS"
msgid "Sessions configuration"
msgstr "Confirmación de SMS"
-#: lib/apiauth.php:99
+#: lib/apiauth.php:95
msgid "API resource requires read-write access, but you only have read access."
msgstr ""
-#: lib/apiauth.php:279
+#: lib/apiauth.php:273
#, php-format
msgid "Failed API auth attempt, nickname = %1$s, proxy = %2$s, ip = %3$s"
msgstr ""
@@ -5262,20 +5320,20 @@ msgstr ""
"tracks - non implementado por agora.\n"
"tracking - non implementado por agora.\n"
-#: lib/common.php:131
+#: lib/common.php:135
#, fuzzy
msgid "No configuration file found. "
msgstr "Sen código de confirmación."
-#: lib/common.php:132
+#: lib/common.php:136
msgid "I looked for configuration files in the following places: "
msgstr ""
-#: lib/common.php:134
+#: lib/common.php:138
msgid "You may wish to run the installer to fix this."
msgstr ""
-#: lib/common.php:135
+#: lib/common.php:139
msgid "Go to the installer."
msgstr ""
@@ -5913,27 +5971,27 @@ msgstr ""
msgid "at"
msgstr ""
-#: lib/noticelist.php:531
+#: lib/noticelist.php:547
#, fuzzy
msgid "in context"
msgstr "Sen contido!"
-#: lib/noticelist.php:556
+#: lib/noticelist.php:572
#, fuzzy
msgid "Repeated by"
msgstr "Crear"
-#: lib/noticelist.php:582
+#: lib/noticelist.php:598
#, fuzzy
msgid "Reply to this notice"
msgstr "Non se pode eliminar este chíos."
-#: lib/noticelist.php:583
+#: lib/noticelist.php:599
#, fuzzy
msgid "Reply"
msgstr "contestar"
-#: lib/noticelist.php:625
+#: lib/noticelist.php:641
#, fuzzy
msgid "Notice repeated"
msgstr "Chío publicado"
@@ -6088,6 +6146,10 @@ msgstr "Non se pode eliminar este chíos."
msgid "Repeat this notice"
msgstr "Non se pode eliminar este chíos."
+#: lib/router.php:665
+msgid "No single user defined for single-user mode."
+msgstr ""
+
#: lib/sandboxform.php:67
#, fuzzy
msgid "Sandbox"
@@ -6271,47 +6333,47 @@ msgstr "Nova mensaxe"
msgid "Moderate"
msgstr ""
-#: lib/util.php:868
+#: lib/util.php:867
msgid "a few seconds ago"
msgstr "fai uns segundos"
-#: lib/util.php:870
+#: lib/util.php:869
msgid "about a minute ago"
msgstr "fai un minuto"
-#: lib/util.php:872
+#: lib/util.php:871
#, php-format
msgid "about %d minutes ago"
msgstr "fai %d minutos"
-#: lib/util.php:874
+#: lib/util.php:873
msgid "about an hour ago"
msgstr "fai unha hora"
-#: lib/util.php:876
+#: lib/util.php:875
#, php-format
msgid "about %d hours ago"
msgstr "fai %d horas"
-#: lib/util.php:878
+#: lib/util.php:877
msgid "about a day ago"
msgstr "fai un día"
-#: lib/util.php:880
+#: lib/util.php:879
#, php-format
msgid "about %d days ago"
msgstr "fai %d días"
-#: lib/util.php:882
+#: lib/util.php:881
msgid "about a month ago"
msgstr "fai un mes"
-#: lib/util.php:884
+#: lib/util.php:883
#, php-format
msgid "about %d months ago"
msgstr "fai %d meses"
-#: lib/util.php:886
+#: lib/util.php:885
msgid "about a year ago"
msgstr "fai un ano"
diff --git a/locale/he/LC_MESSAGES/statusnet.po b/locale/he/LC_MESSAGES/statusnet.po
index 3cfed46c5..cbf4a8f0c 100644
--- a/locale/he/LC_MESSAGES/statusnet.po
+++ b/locale/he/LC_MESSAGES/statusnet.po
@@ -7,12 +7,12 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-01-30 23:41+0000\n"
-"PO-Revision-Date: 2010-01-30 23:41:54+0000\n"
+"POT-Creation-Date: 2010-02-04 10:31+0000\n"
+"PO-Revision-Date: 2010-02-04 10:32:45+0000\n"
"Language-Team: Hebrew\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.16alpha (r61734); Translate extension (2010-01-16)\n"
+"X-Generator: MediaWiki 1.16alpha (r61969); Translate extension (2010-01-16)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: he\n"
"X-Message-Group: out-statusnet\n"
@@ -98,7 +98,7 @@ msgstr "אין הודעה כזו."
#: actions/favoritesrss.php:74 actions/foaf.php:40 actions/foaf.php:58
#: actions/microsummary.php:62 actions/newmessage.php:116 actions/otp.php:76
#: actions/remotesubscribe.php:145 actions/remotesubscribe.php:154
-#: actions/replies.php:73 actions/repliesrss.php:38
+#: actions/replies.php:73 actions/repliesrss.php:38 actions/rsd.php:116
#: actions/showfavorites.php:105 actions/userbyid.php:74
#: actions/usergroups.php:91 actions/userrss.php:38 actions/xrds.php:71
#: lib/command.php:163 lib/command.php:302 lib/command.php:355
@@ -155,7 +155,7 @@ msgid ""
"his or her attention](%%%%action.newnotice%%%%?status_textarea=%3$s)."
msgstr ""
-#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:202
+#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:211
#, php-format
msgid ""
"Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
@@ -388,8 +388,8 @@ msgstr "כינוי זה כבר תפוס. נסה כינוי אחר."
msgid "Not a valid nickname."
msgstr "שם משתמש לא חוקי."
-#: actions/apigroupcreate.php:196 actions/editapplication.php:212
-#: actions/editgroup.php:195 actions/newapplication.php:200
+#: actions/apigroupcreate.php:196 actions/editapplication.php:215
+#: actions/editgroup.php:195 actions/newapplication.php:203
#: actions/newgroup.php:139 actions/profilesettings.php:222
#: actions/register.php:217
msgid "Homepage is not a valid URL."
@@ -401,8 +401,8 @@ msgstr "לאתר הבית יש כתובת לא חוקית."
msgid "Full name is too long (max 255 chars)."
msgstr "השם המלא ארוך מידי (מותרות 255 אותיות בלבד)"
-#: actions/apigroupcreate.php:213 actions/editapplication.php:187
-#: actions/newapplication.php:169
+#: actions/apigroupcreate.php:213 actions/editapplication.php:190
+#: actions/newapplication.php:172
#, fuzzy, php-format
msgid "Description is too long (max %d chars)."
msgstr "הביוגרפיה ארוכה מידי (לכל היותר 140 אותיות)"
@@ -482,18 +482,23 @@ msgstr ""
msgid "groups on %s"
msgstr ""
-#: actions/apioauthauthorize.php:108 actions/apioauthauthorize.php:114
-msgid "Bad request."
+#: actions/apioauthauthorize.php:101
+msgid "No oauth_token parameter provided."
msgstr ""
-#: actions/apioauthauthorize.php:134 actions/avatarsettings.php:268
+#: actions/apioauthauthorize.php:106
+#, fuzzy
+msgid "Invalid token."
+msgstr "גודל לא חוקי."
+
+#: actions/apioauthauthorize.php:123 actions/avatarsettings.php:268
#: actions/deletenotice.php:157 actions/disfavor.php:74
-#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:50
+#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:54
#: actions/groupblock.php:66 actions/grouplogo.php:309
#: actions/groupunblock.php:66 actions/imsettings.php:206
#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
-#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:139
+#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:135
#: actions/othersettings.php:145 actions/passwordsettings.php:138
#: actions/profilesettings.php:194 actions/recoverpassword.php:337
#: actions/register.php:165 actions/remotesubscribe.php:77
@@ -504,76 +509,84 @@ msgstr ""
msgid "There was a problem with your session token. Try again, please."
msgstr ""
-#: actions/apioauthauthorize.php:146
+#: actions/apioauthauthorize.php:135
#, fuzzy
msgid "Invalid nickname / password!"
msgstr "שם המשתמש או הסיסמה לא חוקיים"
-#: actions/apioauthauthorize.php:170
+#: actions/apioauthauthorize.php:159
#, fuzzy
msgid "Database error deleting OAuth application user."
msgstr "שגיאה ביצירת שם המשתמש."
-#: actions/apioauthauthorize.php:196
+#: actions/apioauthauthorize.php:185
#, fuzzy
msgid "Database error inserting OAuth application user."
msgstr "שגיאת מסד נתונים בהכנסת התגובה: %s"
-#: actions/apioauthauthorize.php:231
+#: actions/apioauthauthorize.php:214
#, php-format
msgid ""
"The request token %s has been authorized. Please exchange it for an access "
"token."
msgstr ""
-#: actions/apioauthauthorize.php:241
+#: actions/apioauthauthorize.php:227
#, php-format
-msgid "The request token %s has been denied."
+msgid "The request token %s has been denied and revoked."
msgstr ""
-#: actions/apioauthauthorize.php:246 actions/avatarsettings.php:281
+#: actions/apioauthauthorize.php:232 actions/avatarsettings.php:281
#: actions/designadminpanel.php:103 actions/editapplication.php:139
#: actions/emailsettings.php:256 actions/grouplogo.php:319
#: actions/imsettings.php:220 actions/newapplication.php:121
-#: actions/oauthconnectionssettings.php:151 actions/recoverpassword.php:44
+#: actions/oauthconnectionssettings.php:147 actions/recoverpassword.php:44
#: actions/smssettings.php:248 lib/designsettings.php:304
msgid "Unexpected form submission."
msgstr "הגשת טופס לא צפויה."
-#: actions/apioauthauthorize.php:273
+#: actions/apioauthauthorize.php:259
msgid "An application would like to connect to your account"
msgstr ""
-#: actions/apioauthauthorize.php:290
+#: actions/apioauthauthorize.php:276
msgid "Allow or deny access"
msgstr ""
-#: actions/apioauthauthorize.php:320 lib/action.php:441
+#: actions/apioauthauthorize.php:292
+#, php-format
+msgid ""
+"The application <strong>%1$s</strong> by <strong>%2$s</strong> would like "
+"the ability to <strong>%3$s</strong> your %4$s account data. You should only "
+"give access to your %4$s account to third parties you trust."
+msgstr ""
+
+#: actions/apioauthauthorize.php:310 lib/action.php:441
#, fuzzy
msgid "Account"
msgstr "אודות"
-#: actions/apioauthauthorize.php:323 actions/login.php:230
+#: actions/apioauthauthorize.php:313 actions/login.php:230
#: actions/profilesettings.php:106 actions/register.php:424
#: actions/showgroup.php:236 actions/tagother.php:94 lib/groupeditform.php:152
#: lib/userprofile.php:131
msgid "Nickname"
msgstr "כינוי"
-#: actions/apioauthauthorize.php:326 actions/login.php:233
+#: actions/apioauthauthorize.php:316 actions/login.php:233
#: actions/register.php:429 lib/accountsettingsaction.php:116
msgid "Password"
msgstr "סיסמה"
-#: actions/apioauthauthorize.php:338
+#: actions/apioauthauthorize.php:328
msgid "Deny"
msgstr ""
-#: actions/apioauthauthorize.php:344
+#: actions/apioauthauthorize.php:334
msgid "Allow"
msgstr ""
-#: actions/apioauthauthorize.php:361
+#: actions/apioauthauthorize.php:351
msgid "Allow or deny access to your account information."
msgstr ""
@@ -749,8 +762,8 @@ msgstr ""
msgid "Preview"
msgstr ""
-#: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:608
+#: actions/avatarsettings.php:149 actions/showapplication.php:252
+#: lib/deleteuserform.php:66 lib/noticelist.php:624
#, fuzzy
msgid "Delete"
msgstr "מחק"
@@ -801,8 +814,9 @@ msgid ""
"will not be notified of any @-replies from them."
msgstr ""
-#: actions/block.php:143 actions/deletenotice.php:145
-#: actions/deleteuser.php:147 actions/groupblock.php:178
+#: actions/block.php:143 actions/deleteapplication.php:153
+#: actions/deletenotice.php:145 actions/deleteuser.php:147
+#: actions/groupblock.php:178
msgid "No"
msgstr "לא"
@@ -811,9 +825,9 @@ msgstr "לא"
msgid "Do not block this user"
msgstr "אין משתמש כזה."
-#: actions/block.php:144 actions/deletenotice.php:146
-#: actions/deleteuser.php:148 actions/groupblock.php:179
-#: lib/repeatform.php:132
+#: actions/block.php:144 actions/deleteapplication.php:158
+#: actions/deletenotice.php:146 actions/deleteuser.php:148
+#: actions/groupblock.php:179 lib/repeatform.php:132
msgid "Yes"
msgstr "כן"
@@ -923,6 +937,50 @@ msgstr "מיקום"
msgid "Notices"
msgstr "הודעות"
+#: actions/deleteapplication.php:63
+#, fuzzy
+msgid "You must be logged in to delete an application."
+msgstr "עידכון המשתמש נכשל."
+
+#: actions/deleteapplication.php:71
+#, fuzzy
+msgid "Application not found."
+msgstr "להודעה אין פרופיל"
+
+#: actions/deleteapplication.php:78 actions/editapplication.php:77
+#: actions/showapplication.php:94
+#, fuzzy
+msgid "You are not the owner of this application."
+msgstr "לא שלחנו אלינו את הפרופיל הזה"
+
+#: actions/deleteapplication.php:102 actions/editapplication.php:127
+#: actions/newapplication.php:110 actions/showapplication.php:118
+#: lib/action.php:1195
+msgid "There was a problem with your session token."
+msgstr ""
+
+#: actions/deleteapplication.php:123 actions/deleteapplication.php:147
+#, fuzzy
+msgid "Delete application"
+msgstr "אין הודעה כזו."
+
+#: actions/deleteapplication.php:149
+msgid ""
+"Are you sure you want to delete this application? This will clear all data "
+"about the application from the database, including all existing user "
+"connections."
+msgstr ""
+
+#: actions/deleteapplication.php:156
+#, fuzzy
+msgid "Do not delete this application"
+msgstr "אין הודעה כזו."
+
+#: actions/deleteapplication.php:160
+#, fuzzy
+msgid "Delete this application"
+msgstr "תאר את עצמך ואת נושאי העניין שלך ב-140 אותיות"
+
#: actions/deletenotice.php:67 actions/disfavor.php:61 actions/favor.php:62
#: actions/groupblock.php:61 actions/groupunblock.php:61 actions/logout.php:69
#: actions/makeadmin.php:61 actions/newmessage.php:87 actions/newnotice.php:89
@@ -956,7 +1014,7 @@ msgstr ""
msgid "Do not delete this notice"
msgstr "אין הודעה כזו."
-#: actions/deletenotice.php:146 lib/noticelist.php:608
+#: actions/deletenotice.php:146 lib/noticelist.php:624
msgid "Delete this notice"
msgstr ""
@@ -1110,7 +1168,7 @@ msgstr ""
msgid "Add to favorites"
msgstr "מועדפים"
-#: actions/doc.php:155
+#: actions/doc.php:158
#, fuzzy, php-format
msgid "No such document \"%s\""
msgstr "אין מסמך כזה."
@@ -1124,22 +1182,12 @@ msgstr "להודעה אין פרופיל"
msgid "You must be logged in to edit an application."
msgstr ""
-#: actions/editapplication.php:77 actions/showapplication.php:94
-#, fuzzy
-msgid "You are not the owner of this application."
-msgstr "לא שלחנו אלינו את הפרופיל הזה"
-
-#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:163
+#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:166
#: actions/showapplication.php:87
#, fuzzy
msgid "No such application."
msgstr "אין הודעה כזו."
-#: actions/editapplication.php:127 actions/newapplication.php:110
-#: actions/showapplication.php:118 lib/action.php:1195
-msgid "There was a problem with your session token."
-msgstr ""
-
#: actions/editapplication.php:161
msgid "Use this form to edit your application."
msgstr ""
@@ -1148,47 +1196,52 @@ msgstr ""
msgid "Name is required."
msgstr ""
-#: actions/editapplication.php:180 actions/newapplication.php:162
+#: actions/editapplication.php:180 actions/newapplication.php:165
#, fuzzy
msgid "Name is too long (max 255 chars)."
msgstr "השם המלא ארוך מידי (מותרות 255 אותיות בלבד)"
-#: actions/editapplication.php:183 actions/newapplication.php:165
+#: actions/editapplication.php:183 actions/newapplication.php:162
+#, fuzzy
+msgid "Name already in use. Try another one."
+msgstr "כינוי זה כבר תפוס. נסה כינוי אחר."
+
+#: actions/editapplication.php:186 actions/newapplication.php:168
#, fuzzy
msgid "Description is required."
msgstr "הרשמות"
-#: actions/editapplication.php:191
+#: actions/editapplication.php:194
msgid "Source URL is too long."
msgstr ""
-#: actions/editapplication.php:197 actions/newapplication.php:182
+#: actions/editapplication.php:200 actions/newapplication.php:185
#, fuzzy
msgid "Source URL is not valid."
msgstr "לאתר הבית יש כתובת לא חוקית."
-#: actions/editapplication.php:200 actions/newapplication.php:185
+#: actions/editapplication.php:203 actions/newapplication.php:188
msgid "Organization is required."
msgstr ""
-#: actions/editapplication.php:203 actions/newapplication.php:188
+#: actions/editapplication.php:206 actions/newapplication.php:191
#, fuzzy
msgid "Organization is too long (max 255 chars)."
msgstr "שם המיקום ארוך מידי (מותר עד 255 אותיות)."
-#: actions/editapplication.php:206 actions/newapplication.php:191
+#: actions/editapplication.php:209 actions/newapplication.php:194
msgid "Organization homepage is required."
msgstr ""
-#: actions/editapplication.php:215 actions/newapplication.php:203
+#: actions/editapplication.php:218 actions/newapplication.php:206
msgid "Callback is too long."
msgstr ""
-#: actions/editapplication.php:222 actions/newapplication.php:212
+#: actions/editapplication.php:225 actions/newapplication.php:215
msgid "Callback URL is not valid."
msgstr ""
-#: actions/editapplication.php:255
+#: actions/editapplication.php:258
#, fuzzy
msgid "Could not update application."
msgstr "עידכון המשתמש נכשל."
@@ -2094,11 +2147,11 @@ msgstr ""
msgid "Use this form to register a new application."
msgstr ""
-#: actions/newapplication.php:173
+#: actions/newapplication.php:176
msgid "Source URL is required."
msgstr ""
-#: actions/newapplication.php:255 actions/newapplication.php:264
+#: actions/newapplication.php:258 actions/newapplication.php:267
#, fuzzy
msgid "Could not create application."
msgstr "שמירת מידע התמונה נכשל"
@@ -2228,29 +2281,29 @@ msgstr ""
msgid "You have not registered any applications yet."
msgstr ""
-#: actions/oauthconnectionssettings.php:71
+#: actions/oauthconnectionssettings.php:72
msgid "Connected applications"
msgstr ""
-#: actions/oauthconnectionssettings.php:87
+#: actions/oauthconnectionssettings.php:83
msgid "You have allowed the following applications to access you account."
msgstr ""
-#: actions/oauthconnectionssettings.php:170
+#: actions/oauthconnectionssettings.php:175
#, fuzzy
msgid "You are not a user of that application."
msgstr "לא שלחנו אלינו את הפרופיל הזה"
-#: actions/oauthconnectionssettings.php:180
+#: actions/oauthconnectionssettings.php:186
msgid "Unable to revoke access for app: "
msgstr ""
-#: actions/oauthconnectionssettings.php:192
+#: actions/oauthconnectionssettings.php:198
#, php-format
msgid "You have not authorized any applications to use your account."
msgstr ""
-#: actions/oauthconnectionssettings.php:205
+#: actions/oauthconnectionssettings.php:211
msgid "Developers can edit the registration settings for their applications "
msgstr ""
@@ -2769,39 +2822,39 @@ msgstr "קו זמן ציבורי"
msgid "Public timeline"
msgstr "קו זמן ציבורי"
-#: actions/public.php:151
+#: actions/public.php:159
#, fuzzy
msgid "Public Stream Feed (RSS 1.0)"
msgstr "הזנת זרם הציבורי"
-#: actions/public.php:155
+#: actions/public.php:163
#, fuzzy
msgid "Public Stream Feed (RSS 2.0)"
msgstr "הזנת זרם הציבורי"
-#: actions/public.php:159
+#: actions/public.php:167
#, fuzzy
msgid "Public Stream Feed (Atom)"
msgstr "הזנת זרם הציבורי"
-#: actions/public.php:179
+#: actions/public.php:187
#, php-format
msgid ""
"This is the public timeline for %%site.name%% but no one has posted anything "
"yet."
msgstr ""
-#: actions/public.php:182
+#: actions/public.php:190
msgid "Be the first to post!"
msgstr ""
-#: actions/public.php:186
+#: actions/public.php:194
#, php-format
msgid ""
"Why not [register an account](%%action.register%%) and be the first to post!"
msgstr ""
-#: actions/public.php:233
+#: actions/public.php:241
#, php-format
msgid ""
"This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2810,7 +2863,7 @@ msgid ""
"friends, family, and colleagues! ([Read more](%%doc.help%%))"
msgstr ""
-#: actions/public.php:238
+#: actions/public.php:246
#, php-format
msgid ""
"This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -3150,7 +3203,7 @@ msgstr "לא ניתן להירשם ללא הסכמה לרשיון"
msgid "You already repeated that notice."
msgstr "כבר נכנסת למערכת!"
-#: actions/repeat.php:114 lib/noticelist.php:626
+#: actions/repeat.php:114 lib/noticelist.php:642
#, fuzzy
msgid "Repeated"
msgstr "צור"
@@ -3212,6 +3265,11 @@ msgstr ""
msgid "Replies to %1$s on %2$s!"
msgstr "תגובת עבור %s"
+#: actions/rsd.php:146 actions/version.php:157
+#, fuzzy
+msgid "StatusNet"
+msgstr "התמונה עודכנה."
+
#: actions/sandbox.php:65 actions/unsandbox.php:65
#, fuzzy
msgid "You cannot sandbox users on this site."
@@ -3257,80 +3315,84 @@ msgstr "הגדרות"
msgid "You must be logged in to view an application."
msgstr ""
-#: actions/showapplication.php:158
+#: actions/showapplication.php:157
#, fuzzy
msgid "Application profile"
msgstr "להודעה אין פרופיל"
-#: actions/showapplication.php:160 lib/applicationeditform.php:180
+#: actions/showapplication.php:159 lib/applicationeditform.php:180
msgid "Icon"
msgstr ""
-#: actions/showapplication.php:170 actions/version.php:195
+#: actions/showapplication.php:169 actions/version.php:195
#: lib/applicationeditform.php:195
#, fuzzy
msgid "Name"
msgstr "כינוי"
-#: actions/showapplication.php:179 lib/applicationeditform.php:222
+#: actions/showapplication.php:178 lib/applicationeditform.php:222
#, fuzzy
msgid "Organization"
msgstr "מיקום"
-#: actions/showapplication.php:188 actions/version.php:198
+#: actions/showapplication.php:187 actions/version.php:198
#: lib/applicationeditform.php:209 lib/groupeditform.php:172
#, fuzzy
msgid "Description"
msgstr "הרשמות"
-#: actions/showapplication.php:193 actions/showgroup.php:429
+#: actions/showapplication.php:192 actions/showgroup.php:429
#: lib/profileaction.php:174
msgid "Statistics"
msgstr "סטטיסטיקה"
-#: actions/showapplication.php:204
+#: actions/showapplication.php:203
#, php-format
-msgid "created by %1$s - %2$s access by default - %3$d users"
+msgid "Created by %1$s - %2$s access by default - %3$d users"
msgstr ""
-#: actions/showapplication.php:214
+#: actions/showapplication.php:213
msgid "Application actions"
msgstr ""
-#: actions/showapplication.php:233
+#: actions/showapplication.php:236
msgid "Reset key & secret"
msgstr ""
-#: actions/showapplication.php:241
+#: actions/showapplication.php:261
msgid "Application info"
msgstr ""
-#: actions/showapplication.php:243
+#: actions/showapplication.php:263
msgid "Consumer key"
msgstr ""
-#: actions/showapplication.php:248
+#: actions/showapplication.php:268
msgid "Consumer secret"
msgstr ""
-#: actions/showapplication.php:253
+#: actions/showapplication.php:273
msgid "Request token URL"
msgstr ""
-#: actions/showapplication.php:258
+#: actions/showapplication.php:278
msgid "Access token URL"
msgstr ""
-#: actions/showapplication.php:263
+#: actions/showapplication.php:283
msgid "Authorize URL"
msgstr ""
-#: actions/showapplication.php:268
+#: actions/showapplication.php:288
msgid ""
"Note: We support HMAC-SHA1 signatures. We do not support the plaintext "
"signature method."
msgstr ""
+#: actions/showapplication.php:309
+msgid "Are you sure you want to reset your consumer key and secret?"
+msgstr ""
+
#: actions/showfavorites.php:79
#, fuzzy, php-format
msgid "%1$s's favorite notices, page %2$d"
@@ -3535,25 +3597,25 @@ msgstr "הזנת הודעות של %s"
msgid "FOAF for %s"
msgstr ""
-#: actions/showstream.php:191
+#: actions/showstream.php:200
#, php-format
msgid "This is the timeline for %1$s but %2$s hasn't posted anything yet."
msgstr ""
-#: actions/showstream.php:196
+#: actions/showstream.php:205
msgid ""
"Seen anything interesting recently? You haven't posted any notices yet, now "
"would be a good time to start :)"
msgstr ""
-#: actions/showstream.php:198
+#: actions/showstream.php:207
#, php-format
msgid ""
"You can try to nudge %1$s or [post something to his or her attention](%%%%"
"action.newnotice%%%%?status_textarea=%2$s)."
msgstr ""
-#: actions/showstream.php:234
+#: actions/showstream.php:243
#, php-format
msgid ""
"**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3562,7 +3624,7 @@ msgid ""
"follow **%s**'s notices and many more! ([Read more](%%%%doc.help%%%%))"
msgstr ""
-#: actions/showstream.php:239
+#: actions/showstream.php:248
#, php-format
msgid ""
"**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3570,7 +3632,7 @@ msgid ""
"[StatusNet](http://status.net/) tool. "
msgstr ""
-#: actions/showstream.php:296
+#: actions/showstream.php:305
#, fuzzy, php-format
msgid "Repeat of %s"
msgstr "תגובת עבור %s"
@@ -4246,11 +4308,6 @@ msgid ""
"Inc. and contributors."
msgstr ""
-#: actions/version.php:157
-#, fuzzy
-msgid "StatusNet"
-msgstr "התמונה עודכנה."
-
#: actions/version.php:161
msgid "Contributors"
msgstr ""
@@ -4374,22 +4431,22 @@ msgstr ""
msgid "Problem saving notice."
msgstr "בעיה בשמירת ההודעה."
-#: classes/Notice.php:790
+#: classes/Notice.php:788
#, fuzzy
msgid "Problem saving group inbox."
msgstr "בעיה בשמירת ההודעה."
-#: classes/Notice.php:850
+#: classes/Notice.php:848
#, php-format
msgid "DB error inserting reply: %s"
msgstr "שגיאת מסד נתונים בהכנסת התגובה: %s"
-#: classes/Notice.php:1233
+#: classes/Notice.php:1231
#, php-format
msgid "RT @%1$s %2$s"
msgstr ""
-#: classes/User.php:382
+#: classes/User.php:385
#, php-format
msgid "Welcome to %1$s, @%2$s!"
msgstr ""
@@ -4682,11 +4739,11 @@ msgstr "הרשמות"
msgid "Sessions configuration"
msgstr "הרשמות"
-#: lib/apiauth.php:99
+#: lib/apiauth.php:95
msgid "API resource requires read-write access, but you only have read access."
msgstr ""
-#: lib/apiauth.php:279
+#: lib/apiauth.php:273
#, php-format
msgid "Failed API auth attempt, nickname = %1$s, proxy = %2$s, ip = %3$s"
msgstr ""
@@ -5060,20 +5117,20 @@ msgid ""
"tracking - not yet implemented.\n"
msgstr ""
-#: lib/common.php:131
+#: lib/common.php:135
#, fuzzy
msgid "No configuration file found. "
msgstr "אין קוד אישור."
-#: lib/common.php:132
+#: lib/common.php:136
msgid "I looked for configuration files in the following places: "
msgstr ""
-#: lib/common.php:134
+#: lib/common.php:138
msgid "You may wish to run the installer to fix this."
msgstr ""
-#: lib/common.php:135
+#: lib/common.php:139
msgid "Go to the installer."
msgstr ""
@@ -5649,26 +5706,26 @@ msgstr ""
msgid "at"
msgstr ""
-#: lib/noticelist.php:531
+#: lib/noticelist.php:547
#, fuzzy
msgid "in context"
msgstr "אין תוכן!"
-#: lib/noticelist.php:556
+#: lib/noticelist.php:572
#, fuzzy
msgid "Repeated by"
msgstr "צור"
-#: lib/noticelist.php:582
+#: lib/noticelist.php:598
msgid "Reply to this notice"
msgstr ""
-#: lib/noticelist.php:583
+#: lib/noticelist.php:599
#, fuzzy
msgid "Reply"
msgstr "הגב"
-#: lib/noticelist.php:625
+#: lib/noticelist.php:641
#, fuzzy
msgid "Notice repeated"
msgstr "הודעות"
@@ -5817,6 +5874,10 @@ msgstr "אין הודעה כזו."
msgid "Repeat this notice"
msgstr "אין הודעה כזו."
+#: lib/router.php:665
+msgid "No single user defined for single-user mode."
+msgstr ""
+
#: lib/sandboxform.php:67
msgid "Sandbox"
msgstr ""
@@ -5996,47 +6057,47 @@ msgstr "הודעה חדשה"
msgid "Moderate"
msgstr ""
-#: lib/util.php:868
+#: lib/util.php:867
msgid "a few seconds ago"
msgstr "לפני מספר שניות"
-#: lib/util.php:870
+#: lib/util.php:869
msgid "about a minute ago"
msgstr "לפני כדקה"
-#: lib/util.php:872
+#: lib/util.php:871
#, php-format
msgid "about %d minutes ago"
msgstr "לפני כ-%d דקות"
-#: lib/util.php:874
+#: lib/util.php:873
msgid "about an hour ago"
msgstr "לפני כשעה"
-#: lib/util.php:876
+#: lib/util.php:875
#, php-format
msgid "about %d hours ago"
msgstr "לפני כ-%d שעות"
-#: lib/util.php:878
+#: lib/util.php:877
msgid "about a day ago"
msgstr "לפני כיום"
-#: lib/util.php:880
+#: lib/util.php:879
#, php-format
msgid "about %d days ago"
msgstr "לפני כ-%d ימים"
-#: lib/util.php:882
+#: lib/util.php:881
msgid "about a month ago"
msgstr "לפני כחודש"
-#: lib/util.php:884
+#: lib/util.php:883
#, php-format
msgid "about %d months ago"
msgstr "לפני כ-%d חודשים"
-#: lib/util.php:886
+#: lib/util.php:885
msgid "about a year ago"
msgstr "לפני כשנה"
diff --git a/locale/hsb/LC_MESSAGES/statusnet.po b/locale/hsb/LC_MESSAGES/statusnet.po
index d0c81c5bc..7fead90d8 100644
--- a/locale/hsb/LC_MESSAGES/statusnet.po
+++ b/locale/hsb/LC_MESSAGES/statusnet.po
@@ -9,12 +9,12 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-01-30 23:41+0000\n"
-"PO-Revision-Date: 2010-01-30 23:41:57+0000\n"
+"POT-Creation-Date: 2010-02-04 10:31+0000\n"
+"PO-Revision-Date: 2010-02-04 10:32:48+0000\n"
"Language-Team: Dutch\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.16alpha (r61734); Translate extension (2010-01-16)\n"
+"X-Generator: MediaWiki 1.16alpha (r61969); Translate extension (2010-01-16)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: hsb\n"
"X-Message-Group: out-statusnet\n"
@@ -97,7 +97,7 @@ msgstr "Strona njeeksistuje"
#: actions/favoritesrss.php:74 actions/foaf.php:40 actions/foaf.php:58
#: actions/microsummary.php:62 actions/newmessage.php:116 actions/otp.php:76
#: actions/remotesubscribe.php:145 actions/remotesubscribe.php:154
-#: actions/replies.php:73 actions/repliesrss.php:38
+#: actions/replies.php:73 actions/repliesrss.php:38 actions/rsd.php:116
#: actions/showfavorites.php:105 actions/userbyid.php:74
#: actions/usergroups.php:91 actions/userrss.php:38 actions/xrds.php:71
#: lib/command.php:163 lib/command.php:302 lib/command.php:355
@@ -154,7 +154,7 @@ msgid ""
"his or her attention](%%%%action.newnotice%%%%?status_textarea=%3$s)."
msgstr ""
-#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:202
+#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:211
#, php-format
msgid ""
"Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
@@ -376,8 +376,8 @@ msgstr "Přimjeno so hižo wužiwa. Spytaj druhe."
msgid "Not a valid nickname."
msgstr "Žane płaćiwe přimjeno."
-#: actions/apigroupcreate.php:196 actions/editapplication.php:212
-#: actions/editgroup.php:195 actions/newapplication.php:200
+#: actions/apigroupcreate.php:196 actions/editapplication.php:215
+#: actions/editgroup.php:195 actions/newapplication.php:203
#: actions/newgroup.php:139 actions/profilesettings.php:222
#: actions/register.php:217
msgid "Homepage is not a valid URL."
@@ -389,8 +389,8 @@ msgstr "Startowa strona njeje płaćiwy URL."
msgid "Full name is too long (max 255 chars)."
msgstr "Dospołne mjeno je předołho (maks. 255 znamješkow)."
-#: actions/apigroupcreate.php:213 actions/editapplication.php:187
-#: actions/newapplication.php:169
+#: actions/apigroupcreate.php:213 actions/editapplication.php:190
+#: actions/newapplication.php:172
#, php-format
msgid "Description is too long (max %d chars)."
msgstr "Wopisanje je předołho (maks. %d znamješkow)."
@@ -467,18 +467,23 @@ msgstr ""
msgid "groups on %s"
msgstr "skupiny na %s"
-#: actions/apioauthauthorize.php:108 actions/apioauthauthorize.php:114
-msgid "Bad request."
+#: actions/apioauthauthorize.php:101
+msgid "No oauth_token parameter provided."
msgstr ""
-#: actions/apioauthauthorize.php:134 actions/avatarsettings.php:268
+#: actions/apioauthauthorize.php:106
+#, fuzzy
+msgid "Invalid token."
+msgstr "Njepłaćiwa wulkosć."
+
+#: actions/apioauthauthorize.php:123 actions/avatarsettings.php:268
#: actions/deletenotice.php:157 actions/disfavor.php:74
-#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:50
+#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:54
#: actions/groupblock.php:66 actions/grouplogo.php:309
#: actions/groupunblock.php:66 actions/imsettings.php:206
#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
-#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:139
+#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:135
#: actions/othersettings.php:145 actions/passwordsettings.php:138
#: actions/profilesettings.php:194 actions/recoverpassword.php:337
#: actions/register.php:165 actions/remotesubscribe.php:77
@@ -489,74 +494,82 @@ msgstr ""
msgid "There was a problem with your session token. Try again, please."
msgstr ""
-#: actions/apioauthauthorize.php:146
+#: actions/apioauthauthorize.php:135
msgid "Invalid nickname / password!"
msgstr "Njepłaćiwe přimjeno abo hesło!"
-#: actions/apioauthauthorize.php:170
+#: actions/apioauthauthorize.php:159
#, fuzzy
msgid "Database error deleting OAuth application user."
msgstr "Zmylk datoweje banki při zasunjenju wužiwarja OAuth-aplikacije."
-#: actions/apioauthauthorize.php:196
+#: actions/apioauthauthorize.php:185
#, fuzzy
msgid "Database error inserting OAuth application user."
msgstr "Zmylk datoweje banki při zasunjenju wužiwarja OAuth-aplikacije."
-#: actions/apioauthauthorize.php:231
+#: actions/apioauthauthorize.php:214
#, php-format
msgid ""
"The request token %s has been authorized. Please exchange it for an access "
"token."
msgstr ""
-#: actions/apioauthauthorize.php:241
+#: actions/apioauthauthorize.php:227
#, php-format
-msgid "The request token %s has been denied."
+msgid "The request token %s has been denied and revoked."
msgstr ""
-#: actions/apioauthauthorize.php:246 actions/avatarsettings.php:281
+#: actions/apioauthauthorize.php:232 actions/avatarsettings.php:281
#: actions/designadminpanel.php:103 actions/editapplication.php:139
#: actions/emailsettings.php:256 actions/grouplogo.php:319
#: actions/imsettings.php:220 actions/newapplication.php:121
-#: actions/oauthconnectionssettings.php:151 actions/recoverpassword.php:44
+#: actions/oauthconnectionssettings.php:147 actions/recoverpassword.php:44
#: actions/smssettings.php:248 lib/designsettings.php:304
msgid "Unexpected form submission."
msgstr ""
-#: actions/apioauthauthorize.php:273
+#: actions/apioauthauthorize.php:259
msgid "An application would like to connect to your account"
msgstr ""
-#: actions/apioauthauthorize.php:290
+#: actions/apioauthauthorize.php:276
msgid "Allow or deny access"
msgstr ""
-#: actions/apioauthauthorize.php:320 lib/action.php:441
+#: actions/apioauthauthorize.php:292
+#, php-format
+msgid ""
+"The application <strong>%1$s</strong> by <strong>%2$s</strong> would like "
+"the ability to <strong>%3$s</strong> your %4$s account data. You should only "
+"give access to your %4$s account to third parties you trust."
+msgstr ""
+
+#: actions/apioauthauthorize.php:310 lib/action.php:441
msgid "Account"
msgstr "Konto"
-#: actions/apioauthauthorize.php:323 actions/login.php:230
+#: actions/apioauthauthorize.php:313 actions/login.php:230
#: actions/profilesettings.php:106 actions/register.php:424
#: actions/showgroup.php:236 actions/tagother.php:94 lib/groupeditform.php:152
#: lib/userprofile.php:131
msgid "Nickname"
msgstr "Přimjeno"
-#: actions/apioauthauthorize.php:326 actions/login.php:233
+#: actions/apioauthauthorize.php:316 actions/login.php:233
#: actions/register.php:429 lib/accountsettingsaction.php:116
msgid "Password"
msgstr "Hesło"
-#: actions/apioauthauthorize.php:338
+#: actions/apioauthauthorize.php:328
msgid "Deny"
msgstr "Wotpokazać"
-#: actions/apioauthauthorize.php:344
+#: actions/apioauthauthorize.php:334
msgid "Allow"
msgstr "Dowolić"
-#: actions/apioauthauthorize.php:361
+#: actions/apioauthauthorize.php:351
msgid "Allow or deny access to your account information."
msgstr ""
@@ -726,8 +739,8 @@ msgstr "Original"
msgid "Preview"
msgstr "Přehlad"
-#: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:608
+#: actions/avatarsettings.php:149 actions/showapplication.php:252
+#: lib/deleteuserform.php:66 lib/noticelist.php:624
msgid "Delete"
msgstr "Zničić"
@@ -774,8 +787,9 @@ msgid ""
"will not be notified of any @-replies from them."
msgstr ""
-#: actions/block.php:143 actions/deletenotice.php:145
-#: actions/deleteuser.php:147 actions/groupblock.php:178
+#: actions/block.php:143 actions/deleteapplication.php:153
+#: actions/deletenotice.php:145 actions/deleteuser.php:147
+#: actions/groupblock.php:178
msgid "No"
msgstr "Ně"
@@ -783,9 +797,9 @@ msgstr "Ně"
msgid "Do not block this user"
msgstr "Tutoho wužiwarja njeblokować"
-#: actions/block.php:144 actions/deletenotice.php:146
-#: actions/deleteuser.php:148 actions/groupblock.php:179
-#: lib/repeatform.php:132
+#: actions/block.php:144 actions/deleteapplication.php:158
+#: actions/deletenotice.php:146 actions/deleteuser.php:148
+#: actions/groupblock.php:179 lib/repeatform.php:132
msgid "Yes"
msgstr "Haj"
@@ -889,6 +903,49 @@ msgstr "Konwersacija"
msgid "Notices"
msgstr "Zdźělenki"
+#: actions/deleteapplication.php:63
+#, fuzzy
+msgid "You must be logged in to delete an application."
+msgstr "Dyrbiš přizjewjeny być, zo by skupinu wobdźěłał."
+
+#: actions/deleteapplication.php:71
+#, fuzzy
+msgid "Application not found."
+msgstr "Aplikaciski profil"
+
+#: actions/deleteapplication.php:78 actions/editapplication.php:77
+#: actions/showapplication.php:94
+msgid "You are not the owner of this application."
+msgstr "Njejsy wobsedźer tuteje aplikacije."
+
+#: actions/deleteapplication.php:102 actions/editapplication.php:127
+#: actions/newapplication.php:110 actions/showapplication.php:118
+#: lib/action.php:1195
+msgid "There was a problem with your session token."
+msgstr ""
+
+#: actions/deleteapplication.php:123 actions/deleteapplication.php:147
+#, fuzzy
+msgid "Delete application"
+msgstr "Aplikacija njeeksistuje."
+
+#: actions/deleteapplication.php:149
+msgid ""
+"Are you sure you want to delete this application? This will clear all data "
+"about the application from the database, including all existing user "
+"connections."
+msgstr ""
+
+#: actions/deleteapplication.php:156
+#, fuzzy
+msgid "Do not delete this application"
+msgstr "Tutu zdźělenku njewušmórnyć"
+
+#: actions/deleteapplication.php:160
+#, fuzzy
+msgid "Delete this application"
+msgstr "Tutu zdźělenku wušmórnyć"
+
#: actions/deletenotice.php:67 actions/disfavor.php:61 actions/favor.php:62
#: actions/groupblock.php:61 actions/groupunblock.php:61 actions/logout.php:69
#: actions/makeadmin.php:61 actions/newmessage.php:87 actions/newnotice.php:89
@@ -921,7 +978,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:608
+#: actions/deletenotice.php:146 lib/noticelist.php:624
msgid "Delete this notice"
msgstr "Tutu zdźělenku wušmórnyć"
@@ -1062,7 +1119,7 @@ msgstr "Tuta zdźělenka faworit njeje!"
msgid "Add to favorites"
msgstr "K faworitam přidać"
-#: actions/doc.php:155
+#: actions/doc.php:158
#, fuzzy, php-format
msgid "No such document \"%s\""
msgstr "Dokument njeeksistuje."
@@ -1076,20 +1133,11 @@ msgstr "Aplikacije OAuth"
msgid "You must be logged in to edit an application."
msgstr "Dyrbiš přizjewjeny być, zo by skupinu wobdźěłał."
-#: actions/editapplication.php:77 actions/showapplication.php:94
-msgid "You are not the owner of this application."
-msgstr "Njejsy wobsedźer tuteje aplikacije."
-
-#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:163
+#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:166
#: actions/showapplication.php:87
msgid "No such application."
msgstr "Aplikacija njeeksistuje."
-#: actions/editapplication.php:127 actions/newapplication.php:110
-#: actions/showapplication.php:118 lib/action.php:1195
-msgid "There was a problem with your session token."
-msgstr ""
-
#: actions/editapplication.php:161
msgid "Use this form to edit your application."
msgstr "Wužij tutón formular, zo by aplikaciju wobdźěłał."
@@ -1098,43 +1146,48 @@ msgstr "Wužij tutón formular, zo by aplikaciju wobdźěłał."
msgid "Name is required."
msgstr "Mjeno je trěbne."
-#: actions/editapplication.php:180 actions/newapplication.php:162
+#: actions/editapplication.php:180 actions/newapplication.php:165
msgid "Name is too long (max 255 chars)."
msgstr "Mjeno je předołho (maks. 255 znamješkow)."
-#: actions/editapplication.php:183 actions/newapplication.php:165
+#: actions/editapplication.php:183 actions/newapplication.php:162
+#, fuzzy
+msgid "Name already in use. Try another one."
+msgstr "Přimjeno so hižo wužiwa. Spytaj druhe."
+
+#: actions/editapplication.php:186 actions/newapplication.php:168
msgid "Description is required."
msgstr "Wopisanje je trěbne."
-#: actions/editapplication.php:191
+#: actions/editapplication.php:194
msgid "Source URL is too long."
msgstr ""
-#: actions/editapplication.php:197 actions/newapplication.php:182
+#: actions/editapplication.php:200 actions/newapplication.php:185
msgid "Source URL is not valid."
msgstr "URL žórła płaćiwy njeje."
-#: actions/editapplication.php:200 actions/newapplication.php:185
+#: actions/editapplication.php:203 actions/newapplication.php:188
msgid "Organization is required."
msgstr ""
-#: actions/editapplication.php:203 actions/newapplication.php:188
+#: actions/editapplication.php:206 actions/newapplication.php:191
msgid "Organization is too long (max 255 chars)."
msgstr "Mjeno organizacije je předołho (maks. 255 znamješkow)."
-#: actions/editapplication.php:206 actions/newapplication.php:191
+#: actions/editapplication.php:209 actions/newapplication.php:194
msgid "Organization homepage is required."
msgstr ""
-#: actions/editapplication.php:215 actions/newapplication.php:203
+#: actions/editapplication.php:218 actions/newapplication.php:206
msgid "Callback is too long."
msgstr ""
-#: actions/editapplication.php:222 actions/newapplication.php:212
+#: actions/editapplication.php:225 actions/newapplication.php:215
msgid "Callback URL is not valid."
msgstr ""
-#: actions/editapplication.php:255
+#: actions/editapplication.php:258
msgid "Could not update application."
msgstr "Aplikacija njeda so aktualizować."
@@ -1993,11 +2046,11 @@ msgstr "Dyrbiš přizjewjeny być, zo by aplikaciju registrował."
msgid "Use this form to register a new application."
msgstr "Wužij tutón formular, zo by nowu aplikaciju registrował."
-#: actions/newapplication.php:173
+#: actions/newapplication.php:176
msgid "Source URL is required."
msgstr ""
-#: actions/newapplication.php:255 actions/newapplication.php:264
+#: actions/newapplication.php:258 actions/newapplication.php:267
msgid "Could not create application."
msgstr "Aplikacija njeda so wutworić."
@@ -2122,28 +2175,28 @@ msgstr ""
msgid "You have not registered any applications yet."
msgstr ""
-#: actions/oauthconnectionssettings.php:71
+#: actions/oauthconnectionssettings.php:72
msgid "Connected applications"
msgstr ""
-#: actions/oauthconnectionssettings.php:87
+#: actions/oauthconnectionssettings.php:83
msgid "You have allowed the following applications to access you account."
msgstr ""
-#: actions/oauthconnectionssettings.php:170
+#: actions/oauthconnectionssettings.php:175
msgid "You are not a user of that application."
msgstr "Njejsy wužiwar tuteje aplikacije."
-#: actions/oauthconnectionssettings.php:180
+#: actions/oauthconnectionssettings.php:186
msgid "Unable to revoke access for app: "
msgstr ""
-#: actions/oauthconnectionssettings.php:192
+#: actions/oauthconnectionssettings.php:198
#, php-format
msgid "You have not authorized any applications to use your account."
msgstr ""
-#: actions/oauthconnectionssettings.php:205
+#: actions/oauthconnectionssettings.php:211
msgid "Developers can edit the registration settings for their applications "
msgstr ""
@@ -2635,36 +2688,36 @@ msgstr ""
msgid "Public timeline"
msgstr ""
-#: actions/public.php:151
+#: actions/public.php:159
msgid "Public Stream Feed (RSS 1.0)"
msgstr ""
-#: actions/public.php:155
+#: actions/public.php:163
msgid "Public Stream Feed (RSS 2.0)"
msgstr ""
-#: actions/public.php:159
+#: actions/public.php:167
msgid "Public Stream Feed (Atom)"
msgstr ""
-#: actions/public.php:179
+#: actions/public.php:187
#, php-format
msgid ""
"This is the public timeline for %%site.name%% but no one has posted anything "
"yet."
msgstr ""
-#: actions/public.php:182
+#: actions/public.php:190
msgid "Be the first to post!"
msgstr ""
-#: actions/public.php:186
+#: actions/public.php:194
#, php-format
msgid ""
"Why not [register an account](%%action.register%%) and be the first to post!"
msgstr ""
-#: actions/public.php:233
+#: actions/public.php:241
#, php-format
msgid ""
"This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2673,7 +2726,7 @@ msgid ""
"friends, family, and colleagues! ([Read more](%%doc.help%%))"
msgstr ""
-#: actions/public.php:238
+#: actions/public.php:246
#, php-format
msgid ""
"This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -3003,7 +3056,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:626
+#: actions/repeat.php:114 lib/noticelist.php:642
msgid "Repeated"
msgstr "Wospjetowany"
@@ -3063,6 +3116,10 @@ msgstr ""
msgid "Replies to %1$s on %2$s!"
msgstr ""
+#: actions/rsd.php:146 actions/version.php:157
+msgid "StatusNet"
+msgstr "StatusNet"
+
#: actions/sandbox.php:65 actions/unsandbox.php:65
msgid "You cannot sandbox users on this site."
msgstr ""
@@ -3106,76 +3163,81 @@ msgstr "Sydłowe nastajenja składować"
msgid "You must be logged in to view an application."
msgstr "Dyrbiš přizjewjeny być, zo by sej aplikaciju wobhladał."
-#: actions/showapplication.php:158
+#: actions/showapplication.php:157
msgid "Application profile"
msgstr "Aplikaciski profil"
-#: actions/showapplication.php:160 lib/applicationeditform.php:180
+#: actions/showapplication.php:159 lib/applicationeditform.php:180
msgid "Icon"
msgstr ""
-#: actions/showapplication.php:170 actions/version.php:195
+#: actions/showapplication.php:169 actions/version.php:195
#: lib/applicationeditform.php:195
msgid "Name"
msgstr "Mjeno"
-#: actions/showapplication.php:179 lib/applicationeditform.php:222
+#: actions/showapplication.php:178 lib/applicationeditform.php:222
msgid "Organization"
msgstr "Organizacija"
-#: actions/showapplication.php:188 actions/version.php:198
+#: actions/showapplication.php:187 actions/version.php:198
#: lib/applicationeditform.php:209 lib/groupeditform.php:172
msgid "Description"
msgstr "Wopisanje"
-#: actions/showapplication.php:193 actions/showgroup.php:429
+#: actions/showapplication.php:192 actions/showgroup.php:429
#: lib/profileaction.php:174
msgid "Statistics"
msgstr "Statistika"
-#: actions/showapplication.php:204
+#: actions/showapplication.php:203
#, php-format
-msgid "created by %1$s - %2$s access by default - %3$d users"
+msgid "Created by %1$s - %2$s access by default - %3$d users"
msgstr ""
-#: actions/showapplication.php:214
+#: actions/showapplication.php:213
msgid "Application actions"
msgstr ""
-#: actions/showapplication.php:233
+#: actions/showapplication.php:236
msgid "Reset key & secret"
msgstr ""
-#: actions/showapplication.php:241
+#: actions/showapplication.php:261
msgid "Application info"
msgstr ""
-#: actions/showapplication.php:243
+#: actions/showapplication.php:263
msgid "Consumer key"
msgstr ""
-#: actions/showapplication.php:248
+#: actions/showapplication.php:268
msgid "Consumer secret"
msgstr ""
-#: actions/showapplication.php:253
+#: actions/showapplication.php:273
msgid "Request token URL"
msgstr ""
-#: actions/showapplication.php:258
+#: actions/showapplication.php:278
msgid "Access token URL"
msgstr ""
-#: actions/showapplication.php:263
+#: actions/showapplication.php:283
msgid "Authorize URL"
msgstr "URL awtorizować"
-#: actions/showapplication.php:268
+#: actions/showapplication.php:288
msgid ""
"Note: We support HMAC-SHA1 signatures. We do not support the plaintext "
"signature method."
msgstr ""
+#: actions/showapplication.php:309
+#, fuzzy
+msgid "Are you sure you want to reset your consumer key and secret?"
+msgstr "Chceš woprawdźe tutu zdźělenku wušmórnyć?"
+
#: actions/showfavorites.php:79
#, fuzzy, php-format
msgid "%1$s's favorite notices, page %2$d"
@@ -3375,25 +3437,25 @@ msgstr ""
msgid "FOAF for %s"
msgstr "FOAF za %s"
-#: actions/showstream.php:191
+#: actions/showstream.php:200
#, php-format
msgid "This is the timeline for %1$s but %2$s hasn't posted anything yet."
msgstr ""
-#: actions/showstream.php:196
+#: actions/showstream.php:205
msgid ""
"Seen anything interesting recently? You haven't posted any notices yet, now "
"would be a good time to start :)"
msgstr ""
-#: actions/showstream.php:198
+#: actions/showstream.php:207
#, php-format
msgid ""
"You can try to nudge %1$s or [post something to his or her attention](%%%%"
"action.newnotice%%%%?status_textarea=%2$s)."
msgstr ""
-#: actions/showstream.php:234
+#: actions/showstream.php:243
#, php-format
msgid ""
"**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3402,7 +3464,7 @@ msgid ""
"follow **%s**'s notices and many more! ([Read more](%%%%doc.help%%%%))"
msgstr ""
-#: actions/showstream.php:239
+#: actions/showstream.php:248
#, php-format
msgid ""
"**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3410,7 +3472,7 @@ msgid ""
"[StatusNet](http://status.net/) tool. "
msgstr ""
-#: actions/showstream.php:296
+#: actions/showstream.php:305
#, php-format
msgid "Repeat of %s"
msgstr ""
@@ -4050,10 +4112,6 @@ msgid ""
"Inc. and contributors."
msgstr ""
-#: actions/version.php:157
-msgid "StatusNet"
-msgstr "StatusNet"
-
#: actions/version.php:161
msgid "Contributors"
msgstr ""
@@ -4171,21 +4229,21 @@ msgstr ""
msgid "Problem saving notice."
msgstr ""
-#: classes/Notice.php:790
+#: classes/Notice.php:788
msgid "Problem saving group inbox."
msgstr ""
-#: classes/Notice.php:850
+#: classes/Notice.php:848
#, php-format
msgid "DB error inserting reply: %s"
msgstr ""
-#: classes/Notice.php:1233
+#: classes/Notice.php:1231
#, php-format
msgid "RT @%1$s %2$s"
msgstr ""
-#: classes/User.php:382
+#: classes/User.php:385
#, php-format
msgid "Welcome to %1$s, @%2$s!"
msgstr ""
@@ -4457,11 +4515,11 @@ msgstr ""
msgid "Sessions configuration"
msgstr "SMS-wobkrućenje"
-#: lib/apiauth.php:99
+#: lib/apiauth.php:95
msgid "API resource requires read-write access, but you only have read access."
msgstr ""
-#: lib/apiauth.php:279
+#: lib/apiauth.php:273
#, php-format
msgid "Failed API auth attempt, nickname = %1$s, proxy = %2$s, ip = %3$s"
msgstr ""
@@ -4823,19 +4881,19 @@ msgid ""
"tracking - not yet implemented.\n"
msgstr ""
-#: lib/common.php:131
+#: lib/common.php:135
msgid "No configuration file found. "
msgstr "Žana konfiguraciska dataja namakana. "
-#: lib/common.php:132
+#: lib/common.php:136
msgid "I looked for configuration files in the following places: "
msgstr ""
-#: lib/common.php:134
+#: lib/common.php:138
msgid "You may wish to run the installer to fix this."
msgstr ""
-#: lib/common.php:135
+#: lib/common.php:139
msgid "Go to the installer."
msgstr ""
@@ -5386,23 +5444,23 @@ msgstr "Z"
msgid "at"
msgstr ""
-#: lib/noticelist.php:531
+#: lib/noticelist.php:547
msgid "in context"
msgstr ""
-#: lib/noticelist.php:556
+#: lib/noticelist.php:572
msgid "Repeated by"
msgstr "Wospjetowany wot"
-#: lib/noticelist.php:582
+#: lib/noticelist.php:598
msgid "Reply to this notice"
msgstr "Na tutu zdźělenku wotmołwić"
-#: lib/noticelist.php:583
+#: lib/noticelist.php:599
msgid "Reply"
msgstr "Wotmołwić"
-#: lib/noticelist.php:625
+#: lib/noticelist.php:641
msgid "Notice repeated"
msgstr "Zdźělenka wospjetowana"
@@ -5543,6 +5601,10 @@ msgstr "Tutu zdźělenku wospjetować?"
msgid "Repeat this notice"
msgstr "Tutu zdźělenku wospjetować"
+#: lib/router.php:665
+msgid "No single user defined for single-user mode."
+msgstr ""
+
#: lib/sandboxform.php:67
msgid "Sandbox"
msgstr ""
@@ -5708,47 +5770,47 @@ msgstr "Powěsć"
msgid "Moderate"
msgstr ""
-#: lib/util.php:868
+#: lib/util.php:867
msgid "a few seconds ago"
msgstr "před něšto sekundami"
-#: lib/util.php:870
+#: lib/util.php:869
msgid "about a minute ago"
msgstr "před něhdźe jednej mjeńšinu"
-#: lib/util.php:872
+#: lib/util.php:871
#, php-format
msgid "about %d minutes ago"
msgstr "před %d mjeńšinami"
-#: lib/util.php:874
+#: lib/util.php:873
msgid "about an hour ago"
msgstr "před něhdźe jednej hodźinu"
-#: lib/util.php:876
+#: lib/util.php:875
#, php-format
msgid "about %d hours ago"
msgstr "před něhdźe %d hodźinami"
-#: lib/util.php:878
+#: lib/util.php:877
msgid "about a day ago"
msgstr "před něhdźe jednym dnjom"
-#: lib/util.php:880
+#: lib/util.php:879
#, php-format
msgid "about %d days ago"
msgstr "před něhdźe %d dnjemi"
-#: lib/util.php:882
+#: lib/util.php:881
msgid "about a month ago"
msgstr "před něhdźe jednym měsacom"
-#: lib/util.php:884
+#: lib/util.php:883
#, php-format
msgid "about %d months ago"
msgstr "před něhdźe %d měsacami"
-#: lib/util.php:886
+#: lib/util.php:885
msgid "about a year ago"
msgstr "před něhdźe jednym lětom"
diff --git a/locale/ia/LC_MESSAGES/statusnet.po b/locale/ia/LC_MESSAGES/statusnet.po
index de42418c3..e1227bbba 100644
--- a/locale/ia/LC_MESSAGES/statusnet.po
+++ b/locale/ia/LC_MESSAGES/statusnet.po
@@ -8,12 +8,12 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-01-30 23:41+0000\n"
-"PO-Revision-Date: 2010-01-30 23:42:01+0000\n"
+"POT-Creation-Date: 2010-02-04 10:31+0000\n"
+"PO-Revision-Date: 2010-02-04 10:32:51+0000\n"
"Language-Team: Interlingua\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.16alpha (r61734); Translate extension (2010-01-16)\n"
+"X-Generator: MediaWiki 1.16alpha (r61969); Translate extension (2010-01-16)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: ia\n"
"X-Message-Group: out-statusnet\n"
@@ -95,7 +95,7 @@ msgstr "Pagina non existe"
#: actions/favoritesrss.php:74 actions/foaf.php:40 actions/foaf.php:58
#: actions/microsummary.php:62 actions/newmessage.php:116 actions/otp.php:76
#: actions/remotesubscribe.php:145 actions/remotesubscribe.php:154
-#: actions/replies.php:73 actions/repliesrss.php:38
+#: actions/replies.php:73 actions/repliesrss.php:38 actions/rsd.php:116
#: actions/showfavorites.php:105 actions/userbyid.php:74
#: actions/usergroups.php:91 actions/userrss.php:38 actions/xrds.php:71
#: lib/command.php:163 lib/command.php:302 lib/command.php:355
@@ -158,7 +158,7 @@ msgstr ""
"Tu pote tentar [dar un pulsata a %s](../%s) in su profilo o [publicar un "
"message a su attention](%%%%action.newnotice%%%%?status_textarea=%s)."
-#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:202
+#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:211
#, php-format
msgid ""
"Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
@@ -389,8 +389,8 @@ msgstr "Pseudonymo ja in uso. Proba un altere."
msgid "Not a valid nickname."
msgstr "Non un pseudonymo valide."
-#: actions/apigroupcreate.php:196 actions/editapplication.php:212
-#: actions/editgroup.php:195 actions/newapplication.php:200
+#: actions/apigroupcreate.php:196 actions/editapplication.php:215
+#: actions/editgroup.php:195 actions/newapplication.php:203
#: actions/newgroup.php:139 actions/profilesettings.php:222
#: actions/register.php:217
msgid "Homepage is not a valid URL."
@@ -402,8 +402,8 @@ msgstr "Le pagina personal non es un URL valide."
msgid "Full name is too long (max 255 chars)."
msgstr "Le nomine complete es troppo longe (max. 255 characteres)."
-#: actions/apigroupcreate.php:213 actions/editapplication.php:187
-#: actions/newapplication.php:169
+#: actions/apigroupcreate.php:213 actions/editapplication.php:190
+#: actions/newapplication.php:172
#, php-format
msgid "Description is too long (max %d chars)."
msgstr "Description es troppo longe (max %d charachteres)."
@@ -480,18 +480,23 @@ msgstr "Gruppos de %s"
msgid "groups on %s"
msgstr "gruppos in %s"
-#: actions/apioauthauthorize.php:108 actions/apioauthauthorize.php:114
-msgid "Bad request."
+#: actions/apioauthauthorize.php:101
+msgid "No oauth_token parameter provided."
msgstr ""
-#: actions/apioauthauthorize.php:134 actions/avatarsettings.php:268
+#: actions/apioauthauthorize.php:106
+#, fuzzy
+msgid "Invalid token."
+msgstr "Dimension invalide."
+
+#: actions/apioauthauthorize.php:123 actions/avatarsettings.php:268
#: actions/deletenotice.php:157 actions/disfavor.php:74
-#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:50
+#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:54
#: actions/groupblock.php:66 actions/grouplogo.php:309
#: actions/groupunblock.php:66 actions/imsettings.php:206
#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
-#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:139
+#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:135
#: actions/othersettings.php:145 actions/passwordsettings.php:138
#: actions/profilesettings.php:194 actions/recoverpassword.php:337
#: actions/register.php:165 actions/remotesubscribe.php:77
@@ -502,76 +507,84 @@ msgstr ""
msgid "There was a problem with your session token. Try again, please."
msgstr "Occurreva un problema con le indicio de tu session. Per favor reproba."
-#: actions/apioauthauthorize.php:146
+#: actions/apioauthauthorize.php:135
#, fuzzy
msgid "Invalid nickname / password!"
msgstr "Nomine de usator o contrasigno invalide."
-#: actions/apioauthauthorize.php:170
+#: actions/apioauthauthorize.php:159
#, fuzzy
msgid "Database error deleting OAuth application user."
msgstr "Error durante le configuration del usator."
-#: actions/apioauthauthorize.php:196
+#: actions/apioauthauthorize.php:185
#, fuzzy
msgid "Database error inserting OAuth application user."
msgstr "Error durante le configuration del usator."
-#: actions/apioauthauthorize.php:231
+#: actions/apioauthauthorize.php:214
#, php-format
msgid ""
"The request token %s has been authorized. Please exchange it for an access "
"token."
msgstr ""
-#: actions/apioauthauthorize.php:241
+#: actions/apioauthauthorize.php:227
#, php-format
-msgid "The request token %s has been denied."
+msgid "The request token %s has been denied and revoked."
msgstr ""
-#: actions/apioauthauthorize.php:246 actions/avatarsettings.php:281
+#: actions/apioauthauthorize.php:232 actions/avatarsettings.php:281
#: actions/designadminpanel.php:103 actions/editapplication.php:139
#: actions/emailsettings.php:256 actions/grouplogo.php:319
#: actions/imsettings.php:220 actions/newapplication.php:121
-#: actions/oauthconnectionssettings.php:151 actions/recoverpassword.php:44
+#: actions/oauthconnectionssettings.php:147 actions/recoverpassword.php:44
#: actions/smssettings.php:248 lib/designsettings.php:304
msgid "Unexpected form submission."
msgstr "Submission de formulario inexpectate."
-#: actions/apioauthauthorize.php:273
+#: actions/apioauthauthorize.php:259
msgid "An application would like to connect to your account"
msgstr ""
-#: actions/apioauthauthorize.php:290
+#: actions/apioauthauthorize.php:276
msgid "Allow or deny access"
msgstr ""
-#: actions/apioauthauthorize.php:320 lib/action.php:441
+#: actions/apioauthauthorize.php:292
+#, php-format
+msgid ""
+"The application <strong>%1$s</strong> by <strong>%2$s</strong> would like "
+"the ability to <strong>%3$s</strong> your %4$s account data. You should only "
+"give access to your %4$s account to third parties you trust."
+msgstr ""
+
+#: actions/apioauthauthorize.php:310 lib/action.php:441
msgid "Account"
msgstr ""
-#: actions/apioauthauthorize.php:323 actions/login.php:230
+#: actions/apioauthauthorize.php:313 actions/login.php:230
#: actions/profilesettings.php:106 actions/register.php:424
#: actions/showgroup.php:236 actions/tagother.php:94 lib/groupeditform.php:152
#: lib/userprofile.php:131
msgid "Nickname"
msgstr "Pseudonymo"
-#: actions/apioauthauthorize.php:326 actions/login.php:233
+#: actions/apioauthauthorize.php:316 actions/login.php:233
#: actions/register.php:429 lib/accountsettingsaction.php:116
msgid "Password"
msgstr "Contrasigno"
-#: actions/apioauthauthorize.php:338
+#: actions/apioauthauthorize.php:328
#, fuzzy
msgid "Deny"
msgstr "Apparentia"
-#: actions/apioauthauthorize.php:344
+#: actions/apioauthauthorize.php:334
msgid "Allow"
msgstr ""
-#: actions/apioauthauthorize.php:361
+#: actions/apioauthauthorize.php:351
msgid "Allow or deny access to your account information."
msgstr ""
@@ -744,8 +757,8 @@ msgstr "Original"
msgid "Preview"
msgstr "Previsualisation"
-#: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:608
+#: actions/avatarsettings.php:149 actions/showapplication.php:252
+#: lib/deleteuserform.php:66 lib/noticelist.php:624
msgid "Delete"
msgstr "Deler"
@@ -795,8 +808,9 @@ msgstr ""
"cancellate, ille non potera resubscriber se a te in le futuro, e tu non "
"recipera notification de su @-responsas."
-#: actions/block.php:143 actions/deletenotice.php:145
-#: actions/deleteuser.php:147 actions/groupblock.php:178
+#: actions/block.php:143 actions/deleteapplication.php:153
+#: actions/deletenotice.php:145 actions/deleteuser.php:147
+#: actions/groupblock.php:178
msgid "No"
msgstr "No"
@@ -804,9 +818,9 @@ msgstr "No"
msgid "Do not block this user"
msgstr "Non blocar iste usator"
-#: actions/block.php:144 actions/deletenotice.php:146
-#: actions/deleteuser.php:148 actions/groupblock.php:179
-#: lib/repeatform.php:132
+#: actions/block.php:144 actions/deleteapplication.php:158
+#: actions/deletenotice.php:146 actions/deleteuser.php:148
+#: actions/groupblock.php:179 lib/repeatform.php:132
msgid "Yes"
msgstr "Si"
@@ -911,6 +925,53 @@ msgstr "Conversation"
msgid "Notices"
msgstr "Notas"
+#: actions/deleteapplication.php:63
+#, fuzzy
+msgid "You must be logged in to delete an application."
+msgstr "Tu debe aperir un session pro modificar un gruppo."
+
+#: actions/deleteapplication.php:71
+#, fuzzy
+msgid "Application not found."
+msgstr "Le nota ha nulle profilo"
+
+#: actions/deleteapplication.php:78 actions/editapplication.php:77
+#: actions/showapplication.php:94
+#, fuzzy
+msgid "You are not the owner of this application."
+msgstr "Tu non es membro de iste gruppo."
+
+#: actions/deleteapplication.php:102 actions/editapplication.php:127
+#: actions/newapplication.php:110 actions/showapplication.php:118
+#: lib/action.php:1195
+msgid "There was a problem with your session token."
+msgstr ""
+
+#: actions/deleteapplication.php:123 actions/deleteapplication.php:147
+#, fuzzy
+msgid "Delete application"
+msgstr "Nota non trovate."
+
+#: actions/deleteapplication.php:149
+#, fuzzy
+msgid ""
+"Are you sure you want to delete this application? This will clear all data "
+"about the application from the database, including all existing user "
+"connections."
+msgstr ""
+"Es tu secur de voler deler iste usator? Isto radera tote le datos super le "
+"usator del base de datos, sin copia de reserva."
+
+#: actions/deleteapplication.php:156
+#, fuzzy
+msgid "Do not delete this application"
+msgstr "Non deler iste nota"
+
+#: actions/deleteapplication.php:160
+#, fuzzy
+msgid "Delete this application"
+msgstr "Deler iste nota"
+
#: actions/deletenotice.php:67 actions/disfavor.php:61 actions/favor.php:62
#: actions/groupblock.php:61 actions/groupunblock.php:61 actions/logout.php:69
#: actions/makeadmin.php:61 actions/newmessage.php:87 actions/newnotice.php:89
@@ -945,7 +1006,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:608
+#: actions/deletenotice.php:146 lib/noticelist.php:624
msgid "Delete this notice"
msgstr "Deler iste nota"
@@ -1089,7 +1150,7 @@ msgstr "Iste nota non es favorite!"
msgid "Add to favorites"
msgstr "Adder al favorites"
-#: actions/doc.php:155
+#: actions/doc.php:158
#, fuzzy, php-format
msgid "No such document \"%s\""
msgstr "Documento non existe."
@@ -1104,22 +1165,12 @@ msgstr "Le nota ha nulle profilo"
msgid "You must be logged in to edit an application."
msgstr "Tu debe aperir un session pro modificar un gruppo."
-#: actions/editapplication.php:77 actions/showapplication.php:94
-#, fuzzy
-msgid "You are not the owner of this application."
-msgstr "Tu non es membro de iste gruppo."
-
-#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:163
+#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:166
#: actions/showapplication.php:87
#, fuzzy
msgid "No such application."
msgstr "Nota non trovate."
-#: actions/editapplication.php:127 actions/newapplication.php:110
-#: actions/showapplication.php:118 lib/action.php:1195
-msgid "There was a problem with your session token."
-msgstr ""
-
#: actions/editapplication.php:161
#, fuzzy
msgid "Use this form to edit your application."
@@ -1130,46 +1181,51 @@ msgstr "Usa iste formulario pro modificar le gruppo."
msgid "Name is required."
msgstr "Identic al contrasigno hic supra. Requisite."
-#: actions/editapplication.php:180 actions/newapplication.php:162
+#: actions/editapplication.php:180 actions/newapplication.php:165
#, fuzzy
msgid "Name is too long (max 255 chars)."
msgstr "Le nomine complete es troppo longe (max. 255 characteres)."
-#: actions/editapplication.php:183 actions/newapplication.php:165
+#: actions/editapplication.php:183 actions/newapplication.php:162
+#, fuzzy
+msgid "Name already in use. Try another one."
+msgstr "Pseudonymo ja in uso. Proba un altere."
+
+#: actions/editapplication.php:186 actions/newapplication.php:168
msgid "Description is required."
msgstr ""
-#: actions/editapplication.php:191
+#: actions/editapplication.php:194
msgid "Source URL is too long."
msgstr ""
-#: actions/editapplication.php:197 actions/newapplication.php:182
+#: actions/editapplication.php:200 actions/newapplication.php:185
#, fuzzy
msgid "Source URL is not valid."
msgstr "Le pagina personal non es un URL valide."
-#: actions/editapplication.php:200 actions/newapplication.php:185
+#: actions/editapplication.php:203 actions/newapplication.php:188
msgid "Organization is required."
msgstr ""
-#: actions/editapplication.php:203 actions/newapplication.php:188
+#: actions/editapplication.php:206 actions/newapplication.php:191
#, fuzzy
msgid "Organization is too long (max 255 chars)."
msgstr "Loco es troppo longe (max. 255 characteres)."
-#: actions/editapplication.php:206 actions/newapplication.php:191
+#: actions/editapplication.php:209 actions/newapplication.php:194
msgid "Organization homepage is required."
msgstr ""
-#: actions/editapplication.php:215 actions/newapplication.php:203
+#: actions/editapplication.php:218 actions/newapplication.php:206
msgid "Callback is too long."
msgstr ""
-#: actions/editapplication.php:222 actions/newapplication.php:212
+#: actions/editapplication.php:225 actions/newapplication.php:215
msgid "Callback URL is not valid."
msgstr ""
-#: actions/editapplication.php:255
+#: actions/editapplication.php:258
#, fuzzy
msgid "Could not update application."
msgstr "Non poteva actualisar gruppo."
@@ -2113,11 +2169,11 @@ msgstr "Tu debe aperir un session pro crear un gruppo."
msgid "Use this form to register a new application."
msgstr "Usa iste formulario pro crear un nove gruppo."
-#: actions/newapplication.php:173
+#: actions/newapplication.php:176
msgid "Source URL is required."
msgstr ""
-#: actions/newapplication.php:255 actions/newapplication.php:264
+#: actions/newapplication.php:258 actions/newapplication.php:267
#, fuzzy
msgid "Could not create application."
msgstr "Non poteva crear aliases."
@@ -2255,29 +2311,29 @@ msgstr ""
msgid "You have not registered any applications yet."
msgstr ""
-#: actions/oauthconnectionssettings.php:71
+#: actions/oauthconnectionssettings.php:72
msgid "Connected applications"
msgstr ""
-#: actions/oauthconnectionssettings.php:87
+#: actions/oauthconnectionssettings.php:83
msgid "You have allowed the following applications to access you account."
msgstr ""
-#: actions/oauthconnectionssettings.php:170
+#: actions/oauthconnectionssettings.php:175
#, fuzzy
msgid "You are not a user of that application."
msgstr "Tu non es membro de iste gruppo."
-#: actions/oauthconnectionssettings.php:180
+#: actions/oauthconnectionssettings.php:186
msgid "Unable to revoke access for app: "
msgstr ""
-#: actions/oauthconnectionssettings.php:192
+#: actions/oauthconnectionssettings.php:198
#, php-format
msgid "You have not authorized any applications to use your account."
msgstr ""
-#: actions/oauthconnectionssettings.php:205
+#: actions/oauthconnectionssettings.php:211
msgid "Developers can edit the registration settings for their applications "
msgstr ""
@@ -2784,19 +2840,19 @@ msgstr "Chronologia public, pagina %d"
msgid "Public timeline"
msgstr "Chronologia public"
-#: actions/public.php:151
+#: actions/public.php:159
msgid "Public Stream Feed (RSS 1.0)"
msgstr "Syndication del fluxo public (RSS 1.0)"
-#: actions/public.php:155
+#: actions/public.php:163
msgid "Public Stream Feed (RSS 2.0)"
msgstr "Syndication del fluxo public (RSS 2.0)"
-#: actions/public.php:159
+#: actions/public.php:167
msgid "Public Stream Feed (Atom)"
msgstr "Syndication del fluxo public (Atom)"
-#: actions/public.php:179
+#: actions/public.php:187
#, php-format
msgid ""
"This is the public timeline for %%site.name%% but no one has posted anything "
@@ -2805,11 +2861,11 @@ msgstr ""
"Isto es le chronologia public pro %%site.name%%, ma nulle persona ha ancora "
"scribite alique."
-#: actions/public.php:182
+#: actions/public.php:190
msgid "Be the first to post!"
msgstr "Sia le prime a publicar!"
-#: actions/public.php:186
+#: actions/public.php:194
#, php-format
msgid ""
"Why not [register an account](%%action.register%%) and be the first to post!"
@@ -2817,7 +2873,7 @@ msgstr ""
"Proque non [registrar un conto](%%action.register%%) e devenir le prime a "
"publicar?"
-#: actions/public.php:233
+#: actions/public.php:241
#, php-format
msgid ""
"This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2830,7 +2886,7 @@ msgstr ""
"[Inscribe te ora](%%action.register%%) pro condivider notas super te con "
"amicos, familia e collegas! ([Leger plus](%%doc.help%%))"
-#: actions/public.php:238
+#: actions/public.php:246
#, php-format
msgid ""
"This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -3196,7 +3252,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:626
+#: actions/repeat.php:114 lib/noticelist.php:642
msgid "Repeated"
msgstr "Repetite"
@@ -3262,6 +3318,11 @@ msgstr ""
msgid "Replies to %1$s on %2$s!"
msgstr "Responsas a %1$s in %2$s!"
+#: actions/rsd.php:146 actions/version.php:157
+#, fuzzy
+msgid "StatusNet"
+msgstr "Stato delite."
+
#: actions/sandbox.php:65 actions/unsandbox.php:65
msgid "You cannot sandbox users on this site."
msgstr "Tu non pote mitter usatores in le cassa de sablo in iste sito."
@@ -3306,78 +3367,83 @@ msgstr "Salveguardar configurationes del sito"
msgid "You must be logged in to view an application."
msgstr "Tu debe aperir un session pro quitar un gruppo."
-#: actions/showapplication.php:158
+#: actions/showapplication.php:157
#, fuzzy
msgid "Application profile"
msgstr "Le nota ha nulle profilo"
-#: actions/showapplication.php:160 lib/applicationeditform.php:180
+#: actions/showapplication.php:159 lib/applicationeditform.php:180
msgid "Icon"
msgstr ""
-#: actions/showapplication.php:170 actions/version.php:195
+#: actions/showapplication.php:169 actions/version.php:195
#: lib/applicationeditform.php:195
#, fuzzy
msgid "Name"
msgstr "Pseudonymo"
-#: actions/showapplication.php:179 lib/applicationeditform.php:222
+#: actions/showapplication.php:178 lib/applicationeditform.php:222
msgid "Organization"
msgstr ""
-#: actions/showapplication.php:188 actions/version.php:198
+#: actions/showapplication.php:187 actions/version.php:198
#: lib/applicationeditform.php:209 lib/groupeditform.php:172
msgid "Description"
msgstr ""
-#: actions/showapplication.php:193 actions/showgroup.php:429
+#: actions/showapplication.php:192 actions/showgroup.php:429
#: lib/profileaction.php:174
msgid "Statistics"
msgstr "Statisticas"
-#: actions/showapplication.php:204
+#: actions/showapplication.php:203
#, php-format
-msgid "created by %1$s - %2$s access by default - %3$d users"
+msgid "Created by %1$s - %2$s access by default - %3$d users"
msgstr ""
-#: actions/showapplication.php:214
+#: actions/showapplication.php:213
msgid "Application actions"
msgstr ""
-#: actions/showapplication.php:233
+#: actions/showapplication.php:236
msgid "Reset key & secret"
msgstr ""
-#: actions/showapplication.php:241
+#: actions/showapplication.php:261
msgid "Application info"
msgstr ""
-#: actions/showapplication.php:243
+#: actions/showapplication.php:263
msgid "Consumer key"
msgstr ""
-#: actions/showapplication.php:248
+#: actions/showapplication.php:268
msgid "Consumer secret"
msgstr ""
-#: actions/showapplication.php:253
+#: actions/showapplication.php:273
msgid "Request token URL"
msgstr ""
-#: actions/showapplication.php:258
+#: actions/showapplication.php:278
msgid "Access token URL"
msgstr ""
-#: actions/showapplication.php:263
+#: actions/showapplication.php:283
msgid "Authorize URL"
msgstr ""
-#: actions/showapplication.php:268
+#: actions/showapplication.php:288
msgid ""
"Note: We support HMAC-SHA1 signatures. We do not support the plaintext "
"signature method."
msgstr ""
+#: actions/showapplication.php:309
+#, fuzzy
+msgid "Are you sure you want to reset your consumer key and secret?"
+msgstr "Es tu secur de voler deler iste nota?"
+
#: actions/showfavorites.php:79
#, fuzzy, php-format
msgid "%1$s's favorite notices, page %2$d"
@@ -3594,12 +3660,12 @@ msgstr "Syndication de notas pro %s (Atom)"
msgid "FOAF for %s"
msgstr "Amico de un amico pro %s"
-#: actions/showstream.php:191
+#: actions/showstream.php:200
#, fuzzy, php-format
msgid "This is the timeline for %1$s but %2$s hasn't posted anything yet."
msgstr "Isto es le chronologia pro %s, ma %s non ha ancora publicate alique."
-#: actions/showstream.php:196
+#: actions/showstream.php:205
msgid ""
"Seen anything interesting recently? You haven't posted any notices yet, now "
"would be a good time to start :)"
@@ -3607,7 +3673,7 @@ msgstr ""
"Videva tu qualcosa de interessante recentemente? Tu non ha ancora publicate "
"alcun nota, dunque iste es un bon momento pro comenciar :)"
-#: actions/showstream.php:198
+#: actions/showstream.php:207
#, fuzzy, php-format
msgid ""
"You can try to nudge %1$s or [post something to his or her attention](%%%%"
@@ -3616,7 +3682,7 @@ msgstr ""
"Tu pote tentar pulsar %s o [publicar un nota a su attention](%%%%action."
"newnotice%%%%?status_textarea=%s)."
-#: actions/showstream.php:234
+#: actions/showstream.php:243
#, php-format
msgid ""
"**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3630,7 +3696,7 @@ msgstr ""
"pro sequer le notas de **%s** e multe alteres! ([Lege plus](%%%%doc.help%%%"
"%))"
-#: actions/showstream.php:239
+#: actions/showstream.php:248
#, php-format
msgid ""
"**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3641,7 +3707,7 @@ msgstr ""
"(http://en.wikipedia.org/wiki/Microblog) a base del software libere "
"[StatusNet](http://status.net/). "
-#: actions/showstream.php:296
+#: actions/showstream.php:305
#, php-format
msgid "Repeat of %s"
msgstr "Repetition de %s"
@@ -4296,11 +4362,6 @@ msgid ""
"Inc. and contributors."
msgstr ""
-#: actions/version.php:157
-#, fuzzy
-msgid "StatusNet"
-msgstr "Stato delite."
-
#: actions/version.php:161
msgid "Contributors"
msgstr ""
@@ -4422,21 +4483,21 @@ msgstr ""
msgid "Problem saving notice."
msgstr ""
-#: classes/Notice.php:790
+#: classes/Notice.php:788
msgid "Problem saving group inbox."
msgstr ""
-#: classes/Notice.php:850
+#: classes/Notice.php:848
#, php-format
msgid "DB error inserting reply: %s"
msgstr ""
-#: classes/Notice.php:1233
+#: classes/Notice.php:1231
#, php-format
msgid "RT @%1$s %2$s"
msgstr ""
-#: classes/User.php:382
+#: classes/User.php:385
#, php-format
msgid "Welcome to %1$s, @%2$s!"
msgstr ""
@@ -4708,11 +4769,11 @@ msgstr ""
msgid "Sessions configuration"
msgstr "Nulle codice de confirmation."
-#: lib/apiauth.php:99
+#: lib/apiauth.php:95
msgid "API resource requires read-write access, but you only have read access."
msgstr ""
-#: lib/apiauth.php:279
+#: lib/apiauth.php:273
#, php-format
msgid "Failed API auth attempt, nickname = %1$s, proxy = %2$s, ip = %3$s"
msgstr ""
@@ -5074,19 +5135,19 @@ msgid ""
"tracking - not yet implemented.\n"
msgstr ""
-#: lib/common.php:131
+#: lib/common.php:135
msgid "No configuration file found. "
msgstr ""
-#: lib/common.php:132
+#: lib/common.php:136
msgid "I looked for configuration files in the following places: "
msgstr ""
-#: lib/common.php:134
+#: lib/common.php:138
msgid "You may wish to run the installer to fix this."
msgstr ""
-#: lib/common.php:135
+#: lib/common.php:139
msgid "Go to the installer."
msgstr ""
@@ -5641,23 +5702,23 @@ msgstr ""
msgid "at"
msgstr ""
-#: lib/noticelist.php:531
+#: lib/noticelist.php:547
msgid "in context"
msgstr ""
-#: lib/noticelist.php:556
+#: lib/noticelist.php:572
msgid "Repeated by"
msgstr "Repetite per"
-#: lib/noticelist.php:582
+#: lib/noticelist.php:598
msgid "Reply to this notice"
msgstr ""
-#: lib/noticelist.php:583
+#: lib/noticelist.php:599
msgid "Reply"
msgstr ""
-#: lib/noticelist.php:625
+#: lib/noticelist.php:641
#, fuzzy
msgid "Notice repeated"
msgstr "Nota delite."
@@ -5801,6 +5862,10 @@ msgstr "Repeter iste nota"
msgid "Repeat this notice"
msgstr "Repeter iste nota"
+#: lib/router.php:665
+msgid "No single user defined for single-user mode."
+msgstr ""
+
#: lib/sandboxform.php:67
msgid "Sandbox"
msgstr ""
@@ -5966,47 +6031,47 @@ msgstr ""
msgid "Moderate"
msgstr ""
-#: lib/util.php:868
+#: lib/util.php:867
msgid "a few seconds ago"
msgstr ""
-#: lib/util.php:870
+#: lib/util.php:869
msgid "about a minute ago"
msgstr ""
-#: lib/util.php:872
+#: lib/util.php:871
#, php-format
msgid "about %d minutes ago"
msgstr ""
-#: lib/util.php:874
+#: lib/util.php:873
msgid "about an hour ago"
msgstr ""
-#: lib/util.php:876
+#: lib/util.php:875
#, php-format
msgid "about %d hours ago"
msgstr ""
-#: lib/util.php:878
+#: lib/util.php:877
msgid "about a day ago"
msgstr ""
-#: lib/util.php:880
+#: lib/util.php:879
#, php-format
msgid "about %d days ago"
msgstr ""
-#: lib/util.php:882
+#: lib/util.php:881
msgid "about a month ago"
msgstr ""
-#: lib/util.php:884
+#: lib/util.php:883
#, php-format
msgid "about %d months ago"
msgstr ""
-#: lib/util.php:886
+#: lib/util.php:885
msgid "about a year ago"
msgstr ""
diff --git a/locale/is/LC_MESSAGES/statusnet.po b/locale/is/LC_MESSAGES/statusnet.po
index 67d7825d9..3b4d89fc0 100644
--- a/locale/is/LC_MESSAGES/statusnet.po
+++ b/locale/is/LC_MESSAGES/statusnet.po
@@ -8,12 +8,12 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-01-30 23:41+0000\n"
-"PO-Revision-Date: 2010-01-30 23:42:04+0000\n"
+"POT-Creation-Date: 2010-02-04 10:31+0000\n"
+"PO-Revision-Date: 2010-02-04 10:32:54+0000\n"
"Language-Team: Icelandic\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.16alpha (r61734); Translate extension (2010-01-16)\n"
+"X-Generator: MediaWiki 1.16alpha (r61969); Translate extension (2010-01-16)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: is\n"
"X-Message-Group: out-statusnet\n"
@@ -101,7 +101,7 @@ msgstr "Ekkert þannig merki."
#: actions/favoritesrss.php:74 actions/foaf.php:40 actions/foaf.php:58
#: actions/microsummary.php:62 actions/newmessage.php:116 actions/otp.php:76
#: actions/remotesubscribe.php:145 actions/remotesubscribe.php:154
-#: actions/replies.php:73 actions/repliesrss.php:38
+#: actions/replies.php:73 actions/repliesrss.php:38 actions/rsd.php:116
#: actions/showfavorites.php:105 actions/userbyid.php:74
#: actions/usergroups.php:91 actions/userrss.php:38 actions/xrds.php:71
#: lib/command.php:163 lib/command.php:302 lib/command.php:355
@@ -158,7 +158,7 @@ msgid ""
"his or her attention](%%%%action.newnotice%%%%?status_textarea=%3$s)."
msgstr ""
-#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:202
+#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:211
#, php-format
msgid ""
"Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
@@ -390,8 +390,8 @@ msgstr "Stuttnefni nú þegar í notkun. Prófaðu eitthvað annað."
msgid "Not a valid nickname."
msgstr "Ekki tækt stuttnefni."
-#: actions/apigroupcreate.php:196 actions/editapplication.php:212
-#: actions/editgroup.php:195 actions/newapplication.php:200
+#: actions/apigroupcreate.php:196 actions/editapplication.php:215
+#: actions/editgroup.php:195 actions/newapplication.php:203
#: actions/newgroup.php:139 actions/profilesettings.php:222
#: actions/register.php:217
msgid "Homepage is not a valid URL."
@@ -403,8 +403,8 @@ msgstr "Heimasíða er ekki gild vefslóð."
msgid "Full name is too long (max 255 chars)."
msgstr "Fullt nafn er of langt (í mesta lagi 255 stafir)."
-#: actions/apigroupcreate.php:213 actions/editapplication.php:187
-#: actions/newapplication.php:169
+#: actions/apigroupcreate.php:213 actions/editapplication.php:190
+#: actions/newapplication.php:172
#, fuzzy, php-format
msgid "Description is too long (max %d chars)."
msgstr "Lýsing er of löng (í mesta lagi 140 tákn)."
@@ -484,18 +484,23 @@ msgstr "Hópar %s"
msgid "groups on %s"
msgstr "Hópsaðgerðir"
-#: actions/apioauthauthorize.php:108 actions/apioauthauthorize.php:114
-msgid "Bad request."
+#: actions/apioauthauthorize.php:101
+msgid "No oauth_token parameter provided."
msgstr ""
-#: actions/apioauthauthorize.php:134 actions/avatarsettings.php:268
+#: actions/apioauthauthorize.php:106
+#, fuzzy
+msgid "Invalid token."
+msgstr "Ótæk stærð."
+
+#: actions/apioauthauthorize.php:123 actions/avatarsettings.php:268
#: actions/deletenotice.php:157 actions/disfavor.php:74
-#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:50
+#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:54
#: actions/groupblock.php:66 actions/grouplogo.php:309
#: actions/groupunblock.php:66 actions/imsettings.php:206
#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
-#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:139
+#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:135
#: actions/othersettings.php:145 actions/passwordsettings.php:138
#: actions/profilesettings.php:194 actions/recoverpassword.php:337
#: actions/register.php:165 actions/remotesubscribe.php:77
@@ -506,76 +511,84 @@ msgstr ""
msgid "There was a problem with your session token. Try again, please."
msgstr "Það kom upp vandamál með setutókann þinn. Vinsamlegast reyndu aftur."
-#: actions/apioauthauthorize.php:146
+#: actions/apioauthauthorize.php:135
#, fuzzy
msgid "Invalid nickname / password!"
msgstr "Ótækt notendanafn eða lykilorð."
-#: actions/apioauthauthorize.php:170
+#: actions/apioauthauthorize.php:159
#, fuzzy
msgid "Database error deleting OAuth application user."
msgstr "Villa kom upp í stillingu notanda."
-#: actions/apioauthauthorize.php:196
+#: actions/apioauthauthorize.php:185
#, fuzzy
msgid "Database error inserting OAuth application user."
msgstr "Gagnagrunnsvilla við innsetningu myllumerkis: %s"
-#: actions/apioauthauthorize.php:231
+#: actions/apioauthauthorize.php:214
#, php-format
msgid ""
"The request token %s has been authorized. Please exchange it for an access "
"token."
msgstr ""
-#: actions/apioauthauthorize.php:241
+#: actions/apioauthauthorize.php:227
#, php-format
-msgid "The request token %s has been denied."
+msgid "The request token %s has been denied and revoked."
msgstr ""
-#: actions/apioauthauthorize.php:246 actions/avatarsettings.php:281
+#: actions/apioauthauthorize.php:232 actions/avatarsettings.php:281
#: actions/designadminpanel.php:103 actions/editapplication.php:139
#: actions/emailsettings.php:256 actions/grouplogo.php:319
#: actions/imsettings.php:220 actions/newapplication.php:121
-#: actions/oauthconnectionssettings.php:151 actions/recoverpassword.php:44
+#: actions/oauthconnectionssettings.php:147 actions/recoverpassword.php:44
#: actions/smssettings.php:248 lib/designsettings.php:304
msgid "Unexpected form submission."
msgstr "Bjóst ekki við innsendingu eyðublaðs."
-#: actions/apioauthauthorize.php:273
+#: actions/apioauthauthorize.php:259
msgid "An application would like to connect to your account"
msgstr ""
-#: actions/apioauthauthorize.php:290
+#: actions/apioauthauthorize.php:276
msgid "Allow or deny access"
msgstr ""
-#: actions/apioauthauthorize.php:320 lib/action.php:441
+#: actions/apioauthauthorize.php:292
+#, php-format
+msgid ""
+"The application <strong>%1$s</strong> by <strong>%2$s</strong> would like "
+"the ability to <strong>%3$s</strong> your %4$s account data. You should only "
+"give access to your %4$s account to third parties you trust."
+msgstr ""
+
+#: actions/apioauthauthorize.php:310 lib/action.php:441
msgid "Account"
msgstr "Aðgangur"
-#: actions/apioauthauthorize.php:323 actions/login.php:230
+#: actions/apioauthauthorize.php:313 actions/login.php:230
#: actions/profilesettings.php:106 actions/register.php:424
#: actions/showgroup.php:236 actions/tagother.php:94 lib/groupeditform.php:152
#: lib/userprofile.php:131
msgid "Nickname"
msgstr "Stuttnefni"
-#: actions/apioauthauthorize.php:326 actions/login.php:233
+#: actions/apioauthauthorize.php:316 actions/login.php:233
#: actions/register.php:429 lib/accountsettingsaction.php:116
msgid "Password"
msgstr "Lykilorð"
-#: actions/apioauthauthorize.php:338
+#: actions/apioauthauthorize.php:328
msgid "Deny"
msgstr ""
-#: actions/apioauthauthorize.php:344
+#: actions/apioauthauthorize.php:334
#, fuzzy
msgid "Allow"
msgstr "Allt"
-#: actions/apioauthauthorize.php:361
+#: actions/apioauthauthorize.php:351
msgid "Allow or deny access to your account information."
msgstr ""
@@ -747,8 +760,8 @@ msgstr "Upphafleg mynd"
msgid "Preview"
msgstr "Forsýn"
-#: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:608
+#: actions/avatarsettings.php:149 actions/showapplication.php:252
+#: lib/deleteuserform.php:66 lib/noticelist.php:624
msgid "Delete"
msgstr "Eyða"
@@ -797,8 +810,9 @@ msgid ""
"will not be notified of any @-replies from them."
msgstr ""
-#: actions/block.php:143 actions/deletenotice.php:145
-#: actions/deleteuser.php:147 actions/groupblock.php:178
+#: actions/block.php:143 actions/deleteapplication.php:153
+#: actions/deletenotice.php:145 actions/deleteuser.php:147
+#: actions/groupblock.php:178
msgid "No"
msgstr "Nei"
@@ -807,9 +821,9 @@ msgstr "Nei"
msgid "Do not block this user"
msgstr "Opna á þennan notanda"
-#: actions/block.php:144 actions/deletenotice.php:146
-#: actions/deleteuser.php:148 actions/groupblock.php:179
-#: lib/repeatform.php:132
+#: actions/block.php:144 actions/deleteapplication.php:158
+#: actions/deletenotice.php:146 actions/deleteuser.php:148
+#: actions/groupblock.php:179 lib/repeatform.php:132
msgid "Yes"
msgstr "Já"
@@ -916,6 +930,50 @@ msgstr ""
msgid "Notices"
msgstr "Babl"
+#: actions/deleteapplication.php:63
+#, fuzzy
+msgid "You must be logged in to delete an application."
+msgstr "Þú verður að hafa skráð þig inn til að búa til hóp."
+
+#: actions/deleteapplication.php:71
+#, fuzzy
+msgid "Application not found."
+msgstr "Babl hefur enga persónulega síðu"
+
+#: actions/deleteapplication.php:78 actions/editapplication.php:77
+#: actions/showapplication.php:94
+#, fuzzy
+msgid "You are not the owner of this application."
+msgstr "Þú ert ekki meðlimur í þessum hópi."
+
+#: actions/deleteapplication.php:102 actions/editapplication.php:127
+#: actions/newapplication.php:110 actions/showapplication.php:118
+#: lib/action.php:1195
+msgid "There was a problem with your session token."
+msgstr "Það komu upp vandamál varðandi setutókann þinn."
+
+#: actions/deleteapplication.php:123 actions/deleteapplication.php:147
+#, fuzzy
+msgid "Delete application"
+msgstr "Ekkert svoleiðis babl."
+
+#: actions/deleteapplication.php:149
+msgid ""
+"Are you sure you want to delete this application? This will clear all data "
+"about the application from the database, including all existing user "
+"connections."
+msgstr ""
+
+#: actions/deleteapplication.php:156
+#, fuzzy
+msgid "Do not delete this application"
+msgstr "Gat ekki uppfært hóp."
+
+#: actions/deleteapplication.php:160
+#, fuzzy
+msgid "Delete this application"
+msgstr "Eyða þessu babli"
+
#: actions/deletenotice.php:67 actions/disfavor.php:61 actions/favor.php:62
#: actions/groupblock.php:61 actions/groupunblock.php:61 actions/logout.php:69
#: actions/makeadmin.php:61 actions/newmessage.php:87 actions/newnotice.php:89
@@ -948,7 +1006,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:608
+#: actions/deletenotice.php:146 lib/noticelist.php:624
msgid "Delete this notice"
msgstr "Eyða þessu babli"
@@ -1098,7 +1156,7 @@ msgstr "Þetta babl er ekki í uppáhaldi!"
msgid "Add to favorites"
msgstr "Bæta við sem uppáhaldsbabli"
-#: actions/doc.php:155
+#: actions/doc.php:158
#, fuzzy, php-format
msgid "No such document \"%s\""
msgstr "Ekkert svoleiðis skjal."
@@ -1113,22 +1171,12 @@ msgstr "Aðrir valkostir"
msgid "You must be logged in to edit an application."
msgstr "Þú verður að hafa skráð þig inn til að búa til hóp."
-#: actions/editapplication.php:77 actions/showapplication.php:94
-#, fuzzy
-msgid "You are not the owner of this application."
-msgstr "Þú ert ekki meðlimur í þessum hópi."
-
-#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:163
+#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:166
#: actions/showapplication.php:87
#, fuzzy
msgid "No such application."
msgstr "Ekkert svoleiðis babl."
-#: actions/editapplication.php:127 actions/newapplication.php:110
-#: actions/showapplication.php:118 lib/action.php:1195
-msgid "There was a problem with your session token."
-msgstr "Það komu upp vandamál varðandi setutókann þinn."
-
#: actions/editapplication.php:161
#, fuzzy
msgid "Use this form to edit your application."
@@ -1139,47 +1187,52 @@ msgstr "Notaðu þetta eyðublað til að breyta hópnum."
msgid "Name is required."
msgstr "Sama og lykilorðið hér fyrir ofan. Nauðsynlegt."
-#: actions/editapplication.php:180 actions/newapplication.php:162
+#: actions/editapplication.php:180 actions/newapplication.php:165
#, fuzzy
msgid "Name is too long (max 255 chars)."
msgstr "Fullt nafn er of langt (í mesta lagi 255 stafir)."
-#: actions/editapplication.php:183 actions/newapplication.php:165
+#: actions/editapplication.php:183 actions/newapplication.php:162
+#, fuzzy
+msgid "Name already in use. Try another one."
+msgstr "Stuttnefni nú þegar í notkun. Prófaðu eitthvað annað."
+
+#: actions/editapplication.php:186 actions/newapplication.php:168
#, fuzzy
msgid "Description is required."
msgstr "Lýsing"
-#: actions/editapplication.php:191
+#: actions/editapplication.php:194
msgid "Source URL is too long."
msgstr ""
-#: actions/editapplication.php:197 actions/newapplication.php:182
+#: actions/editapplication.php:200 actions/newapplication.php:185
#, fuzzy
msgid "Source URL is not valid."
msgstr "Heimasíða er ekki gild vefslóð."
-#: actions/editapplication.php:200 actions/newapplication.php:185
+#: actions/editapplication.php:203 actions/newapplication.php:188
msgid "Organization is required."
msgstr ""
-#: actions/editapplication.php:203 actions/newapplication.php:188
+#: actions/editapplication.php:206 actions/newapplication.php:191
#, fuzzy
msgid "Organization is too long (max 255 chars)."
msgstr "Staðsetning er of löng (í mesta lagi 255 stafir)."
-#: actions/editapplication.php:206 actions/newapplication.php:191
+#: actions/editapplication.php:209 actions/newapplication.php:194
msgid "Organization homepage is required."
msgstr ""
-#: actions/editapplication.php:215 actions/newapplication.php:203
+#: actions/editapplication.php:218 actions/newapplication.php:206
msgid "Callback is too long."
msgstr ""
-#: actions/editapplication.php:222 actions/newapplication.php:212
+#: actions/editapplication.php:225 actions/newapplication.php:215
msgid "Callback URL is not valid."
msgstr ""
-#: actions/editapplication.php:255
+#: actions/editapplication.php:258
#, fuzzy
msgid "Could not update application."
msgstr "Gat ekki uppfært hóp."
@@ -2111,11 +2164,11 @@ msgstr "Þú verður að hafa skráð þig inn til að búa til hóp."
msgid "Use this form to register a new application."
msgstr "Notaðu þetta eyðublað til að búa til nýjan hóp."
-#: actions/newapplication.php:173
+#: actions/newapplication.php:176
msgid "Source URL is required."
msgstr ""
-#: actions/newapplication.php:255 actions/newapplication.php:264
+#: actions/newapplication.php:258 actions/newapplication.php:267
#, fuzzy
msgid "Could not create application."
msgstr "Gat ekki búið til uppáhald."
@@ -2249,29 +2302,29 @@ msgstr ""
msgid "You have not registered any applications yet."
msgstr ""
-#: actions/oauthconnectionssettings.php:71
+#: actions/oauthconnectionssettings.php:72
msgid "Connected applications"
msgstr ""
-#: actions/oauthconnectionssettings.php:87
+#: actions/oauthconnectionssettings.php:83
msgid "You have allowed the following applications to access you account."
msgstr ""
-#: actions/oauthconnectionssettings.php:170
+#: actions/oauthconnectionssettings.php:175
#, fuzzy
msgid "You are not a user of that application."
msgstr "Þú ert ekki meðlimur í þessum hópi."
-#: actions/oauthconnectionssettings.php:180
+#: actions/oauthconnectionssettings.php:186
msgid "Unable to revoke access for app: "
msgstr ""
-#: actions/oauthconnectionssettings.php:192
+#: actions/oauthconnectionssettings.php:198
#, php-format
msgid "You have not authorized any applications to use your account."
msgstr ""
-#: actions/oauthconnectionssettings.php:205
+#: actions/oauthconnectionssettings.php:211
msgid "Developers can edit the registration settings for their applications "
msgstr ""
@@ -2794,36 +2847,36 @@ msgstr "Almenningsrás, síða %d"
msgid "Public timeline"
msgstr "Almenningsrás"
-#: actions/public.php:151
+#: actions/public.php:159
msgid "Public Stream Feed (RSS 1.0)"
msgstr ""
-#: actions/public.php:155
+#: actions/public.php:163
msgid "Public Stream Feed (RSS 2.0)"
msgstr ""
-#: actions/public.php:159
+#: actions/public.php:167
msgid "Public Stream Feed (Atom)"
msgstr ""
-#: actions/public.php:179
+#: actions/public.php:187
#, php-format
msgid ""
"This is the public timeline for %%site.name%% but no one has posted anything "
"yet."
msgstr ""
-#: actions/public.php:182
+#: actions/public.php:190
msgid "Be the first to post!"
msgstr ""
-#: actions/public.php:186
+#: actions/public.php:194
#, php-format
msgid ""
"Why not [register an account](%%action.register%%) and be the first to post!"
msgstr ""
-#: actions/public.php:233
+#: actions/public.php:241
#, php-format
msgid ""
"This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2832,7 +2885,7 @@ msgid ""
"friends, family, and colleagues! ([Read more](%%doc.help%%))"
msgstr ""
-#: actions/public.php:238
+#: actions/public.php:246
#, php-format
msgid ""
"This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -3196,7 +3249,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:626
+#: actions/repeat.php:114 lib/noticelist.php:642
#, fuzzy
msgid "Repeated"
msgstr "Í sviðsljósinu"
@@ -3257,6 +3310,11 @@ msgstr ""
msgid "Replies to %1$s on %2$s!"
msgstr "Skilaboð til %1$s á %2$s"
+#: actions/rsd.php:146 actions/version.php:157
+#, fuzzy
+msgid "StatusNet"
+msgstr "Tölfræði"
+
#: actions/sandbox.php:65 actions/unsandbox.php:65
#, fuzzy
msgid "You cannot sandbox users on this site."
@@ -3302,79 +3360,84 @@ msgstr "Stillingar fyrir mynd"
msgid "You must be logged in to view an application."
msgstr "Þú verður aða hafa skráð þig inn til að ganga úr hóp."
-#: actions/showapplication.php:158
+#: actions/showapplication.php:157
#, fuzzy
msgid "Application profile"
msgstr "Babl hefur enga persónulega síðu"
-#: actions/showapplication.php:160 lib/applicationeditform.php:180
+#: actions/showapplication.php:159 lib/applicationeditform.php:180
msgid "Icon"
msgstr ""
-#: actions/showapplication.php:170 actions/version.php:195
+#: actions/showapplication.php:169 actions/version.php:195
#: lib/applicationeditform.php:195
#, fuzzy
msgid "Name"
msgstr "Stuttnefni"
-#: actions/showapplication.php:179 lib/applicationeditform.php:222
+#: actions/showapplication.php:178 lib/applicationeditform.php:222
#, fuzzy
msgid "Organization"
msgstr "Uppröðun"
-#: actions/showapplication.php:188 actions/version.php:198
+#: actions/showapplication.php:187 actions/version.php:198
#: lib/applicationeditform.php:209 lib/groupeditform.php:172
msgid "Description"
msgstr "Lýsing"
-#: actions/showapplication.php:193 actions/showgroup.php:429
+#: actions/showapplication.php:192 actions/showgroup.php:429
#: lib/profileaction.php:174
msgid "Statistics"
msgstr "Tölfræði"
-#: actions/showapplication.php:204
+#: actions/showapplication.php:203
#, php-format
-msgid "created by %1$s - %2$s access by default - %3$d users"
+msgid "Created by %1$s - %2$s access by default - %3$d users"
msgstr ""
-#: actions/showapplication.php:214
+#: actions/showapplication.php:213
msgid "Application actions"
msgstr ""
-#: actions/showapplication.php:233
+#: actions/showapplication.php:236
msgid "Reset key & secret"
msgstr ""
-#: actions/showapplication.php:241
+#: actions/showapplication.php:261
msgid "Application info"
msgstr ""
-#: actions/showapplication.php:243
+#: actions/showapplication.php:263
msgid "Consumer key"
msgstr ""
-#: actions/showapplication.php:248
+#: actions/showapplication.php:268
msgid "Consumer secret"
msgstr ""
-#: actions/showapplication.php:253
+#: actions/showapplication.php:273
msgid "Request token URL"
msgstr ""
-#: actions/showapplication.php:258
+#: actions/showapplication.php:278
msgid "Access token URL"
msgstr ""
-#: actions/showapplication.php:263
+#: actions/showapplication.php:283
msgid "Authorize URL"
msgstr ""
-#: actions/showapplication.php:268
+#: actions/showapplication.php:288
msgid ""
"Note: We support HMAC-SHA1 signatures. We do not support the plaintext "
"signature method."
msgstr ""
+#: actions/showapplication.php:309
+#, fuzzy
+msgid "Are you sure you want to reset your consumer key and secret?"
+msgstr "Ertu viss um að þú viljir eyða þessu babli?"
+
#: actions/showfavorites.php:79
#, fuzzy, php-format
msgid "%1$s's favorite notices, page %2$d"
@@ -3575,25 +3638,25 @@ msgstr ""
msgid "FOAF for %s"
msgstr ""
-#: actions/showstream.php:191
+#: actions/showstream.php:200
#, php-format
msgid "This is the timeline for %1$s but %2$s hasn't posted anything yet."
msgstr ""
-#: actions/showstream.php:196
+#: actions/showstream.php:205
msgid ""
"Seen anything interesting recently? You haven't posted any notices yet, now "
"would be a good time to start :)"
msgstr ""
-#: actions/showstream.php:198
+#: actions/showstream.php:207
#, php-format
msgid ""
"You can try to nudge %1$s or [post something to his or her attention](%%%%"
"action.newnotice%%%%?status_textarea=%2$s)."
msgstr ""
-#: actions/showstream.php:234
+#: actions/showstream.php:243
#, php-format
msgid ""
"**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3602,7 +3665,7 @@ msgid ""
"follow **%s**'s notices and many more! ([Read more](%%%%doc.help%%%%))"
msgstr ""
-#: actions/showstream.php:239
+#: actions/showstream.php:248
#, php-format
msgid ""
"**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3610,7 +3673,7 @@ msgid ""
"[StatusNet](http://status.net/) tool. "
msgstr ""
-#: actions/showstream.php:296
+#: actions/showstream.php:305
#, fuzzy, php-format
msgid "Repeat of %s"
msgstr "Svör við %s"
@@ -4292,11 +4355,6 @@ msgid ""
"Inc. and contributors."
msgstr ""
-#: actions/version.php:157
-#, fuzzy
-msgid "StatusNet"
-msgstr "Tölfræði"
-
#: actions/version.php:161
msgid "Contributors"
msgstr ""
@@ -4421,22 +4479,22 @@ msgstr "Það hefur verið lagt bann við babli frá þér á þessari síðu."
msgid "Problem saving notice."
msgstr "Vandamál komu upp við að vista babl."
-#: classes/Notice.php:790
+#: classes/Notice.php:788
#, fuzzy
msgid "Problem saving group inbox."
msgstr "Vandamál komu upp við að vista babl."
-#: classes/Notice.php:850
+#: classes/Notice.php:848
#, php-format
msgid "DB error inserting reply: %s"
msgstr "Gagnagrunnsvilla við innsetningu svars: %s"
-#: classes/Notice.php:1233
+#: classes/Notice.php:1231
#, fuzzy, php-format
msgid "RT @%1$s %2$s"
msgstr "%1$s (%2$s)"
-#: classes/User.php:382
+#: classes/User.php:385
#, php-format
msgid "Welcome to %1$s, @%2$s!"
msgstr ""
@@ -4725,11 +4783,11 @@ msgstr "SMS staðfesting"
msgid "Sessions configuration"
msgstr "SMS staðfesting"
-#: lib/apiauth.php:99
+#: lib/apiauth.php:95
msgid "API resource requires read-write access, but you only have read access."
msgstr ""
-#: lib/apiauth.php:279
+#: lib/apiauth.php:273
#, php-format
msgid "Failed API auth attempt, nickname = %1$s, proxy = %2$s, ip = %3$s"
msgstr ""
@@ -5100,20 +5158,20 @@ msgid ""
"tracking - not yet implemented.\n"
msgstr ""
-#: lib/common.php:131
+#: lib/common.php:135
#, fuzzy
msgid "No configuration file found. "
msgstr "Enginn staðfestingarlykill."
-#: lib/common.php:132
+#: lib/common.php:136
msgid "I looked for configuration files in the following places: "
msgstr ""
-#: lib/common.php:134
+#: lib/common.php:138
msgid "You may wish to run the installer to fix this."
msgstr ""
-#: lib/common.php:135
+#: lib/common.php:139
#, fuzzy
msgid "Go to the installer."
msgstr "Skrá þig inn á síðuna"
@@ -5685,24 +5743,24 @@ msgstr ""
msgid "at"
msgstr ""
-#: lib/noticelist.php:531
+#: lib/noticelist.php:547
msgid "in context"
msgstr ""
-#: lib/noticelist.php:556
+#: lib/noticelist.php:572
#, fuzzy
msgid "Repeated by"
msgstr "Í sviðsljósinu"
-#: lib/noticelist.php:582
+#: lib/noticelist.php:598
msgid "Reply to this notice"
msgstr "Svara þessu babli"
-#: lib/noticelist.php:583
+#: lib/noticelist.php:599
msgid "Reply"
msgstr "Svara"
-#: lib/noticelist.php:625
+#: lib/noticelist.php:641
#, fuzzy
msgid "Notice repeated"
msgstr "Babl sent inn"
@@ -5850,6 +5908,10 @@ msgstr "Svara þessu babli"
msgid "Repeat this notice"
msgstr "Svara þessu babli"
+#: lib/router.php:665
+msgid "No single user defined for single-user mode."
+msgstr ""
+
#: lib/sandboxform.php:67
#, fuzzy
msgid "Sandbox"
@@ -6023,47 +6085,47 @@ msgstr "Skilaboð"
msgid "Moderate"
msgstr ""
-#: lib/util.php:868
+#: lib/util.php:867
msgid "a few seconds ago"
msgstr "fyrir nokkrum sekúndum"
-#: lib/util.php:870
+#: lib/util.php:869
msgid "about a minute ago"
msgstr "fyrir um einni mínútu síðan"
-#: lib/util.php:872
+#: lib/util.php:871
#, php-format
msgid "about %d minutes ago"
msgstr "fyrir um %d mínútum síðan"
-#: lib/util.php:874
+#: lib/util.php:873
msgid "about an hour ago"
msgstr "fyrir um einum klukkutíma síðan"
-#: lib/util.php:876
+#: lib/util.php:875
#, php-format
msgid "about %d hours ago"
msgstr "fyrir um %d klukkutímum síðan"
-#: lib/util.php:878
+#: lib/util.php:877
msgid "about a day ago"
msgstr "fyrir um einum degi síðan"
-#: lib/util.php:880
+#: lib/util.php:879
#, php-format
msgid "about %d days ago"
msgstr "fyrir um %d dögum síðan"
-#: lib/util.php:882
+#: lib/util.php:881
msgid "about a month ago"
msgstr "fyrir um einum mánuði síðan"
-#: lib/util.php:884
+#: lib/util.php:883
#, php-format
msgid "about %d months ago"
msgstr "fyrir um %d mánuðum síðan"
-#: lib/util.php:886
+#: lib/util.php:885
msgid "about a year ago"
msgstr "fyrir um einu ári síðan"
diff --git a/locale/it/LC_MESSAGES/statusnet.po b/locale/it/LC_MESSAGES/statusnet.po
index 4a002d115..c9cf7347c 100644
--- a/locale/it/LC_MESSAGES/statusnet.po
+++ b/locale/it/LC_MESSAGES/statusnet.po
@@ -9,12 +9,12 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-01-30 23:41+0000\n"
-"PO-Revision-Date: 2010-01-30 23:42:07+0000\n"
+"POT-Creation-Date: 2010-02-04 10:31+0000\n"
+"PO-Revision-Date: 2010-02-04 10:32:58+0000\n"
"Language-Team: Italian\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.16alpha (r61734); Translate extension (2010-01-16)\n"
+"X-Generator: MediaWiki 1.16alpha (r61969); Translate extension (2010-01-16)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: it\n"
"X-Message-Group: out-statusnet\n"
@@ -95,7 +95,7 @@ msgstr "Pagina inesistente."
#: actions/favoritesrss.php:74 actions/foaf.php:40 actions/foaf.php:58
#: actions/microsummary.php:62 actions/newmessage.php:116 actions/otp.php:76
#: actions/remotesubscribe.php:145 actions/remotesubscribe.php:154
-#: actions/replies.php:73 actions/repliesrss.php:38
+#: actions/replies.php:73 actions/repliesrss.php:38 actions/rsd.php:116
#: actions/showfavorites.php:105 actions/userbyid.php:74
#: actions/usergroups.php:91 actions/userrss.php:38 actions/xrds.php:71
#: lib/command.php:163 lib/command.php:302 lib/command.php:355
@@ -159,7 +159,7 @@ msgstr ""
"qualche cosa alla sua attenzione](%%%%action.newnotice%%%%?status_textarea=%3"
"$s)."
-#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:202
+#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:211
#, php-format
msgid ""
"Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
@@ -389,8 +389,8 @@ msgstr "Soprannome già in uso. Prova con un altro."
msgid "Not a valid nickname."
msgstr "Non è un soprannome valido."
-#: actions/apigroupcreate.php:196 actions/editapplication.php:212
-#: actions/editgroup.php:195 actions/newapplication.php:200
+#: actions/apigroupcreate.php:196 actions/editapplication.php:215
+#: actions/editgroup.php:195 actions/newapplication.php:203
#: actions/newgroup.php:139 actions/profilesettings.php:222
#: actions/register.php:217
msgid "Homepage is not a valid URL."
@@ -402,8 +402,8 @@ msgstr "L'indirizzo della pagina web non è valido."
msgid "Full name is too long (max 255 chars)."
msgstr "Nome troppo lungo (max 255 caratteri)."
-#: actions/apigroupcreate.php:213 actions/editapplication.php:187
-#: actions/newapplication.php:169
+#: actions/apigroupcreate.php:213 actions/editapplication.php:190
+#: actions/newapplication.php:172
#, php-format
msgid "Description is too long (max %d chars)."
msgstr "La descrizione è troppo lunga (max %d caratteri)."
@@ -480,18 +480,23 @@ msgstr "Gruppi di %s"
msgid "groups on %s"
msgstr "Gruppi su %s"
-#: actions/apioauthauthorize.php:108 actions/apioauthauthorize.php:114
-msgid "Bad request."
-msgstr "Richiesta non corretta."
+#: actions/apioauthauthorize.php:101
+msgid "No oauth_token parameter provided."
+msgstr ""
-#: actions/apioauthauthorize.php:134 actions/avatarsettings.php:268
+#: actions/apioauthauthorize.php:106
+#, fuzzy
+msgid "Invalid token."
+msgstr "Dimensione non valida."
+
+#: actions/apioauthauthorize.php:123 actions/avatarsettings.php:268
#: actions/deletenotice.php:157 actions/disfavor.php:74
-#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:50
+#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:54
#: actions/groupblock.php:66 actions/grouplogo.php:309
#: actions/groupunblock.php:66 actions/imsettings.php:206
#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
-#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:139
+#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:135
#: actions/othersettings.php:145 actions/passwordsettings.php:138
#: actions/profilesettings.php:194 actions/recoverpassword.php:337
#: actions/register.php:165 actions/remotesubscribe.php:77
@@ -503,19 +508,19 @@ msgid "There was a problem with your session token. Try again, please."
msgstr ""
"Si è verificato un problema con il tuo token di sessione. Prova di nuovo."
-#: actions/apioauthauthorize.php:146
+#: actions/apioauthauthorize.php:135
msgid "Invalid nickname / password!"
msgstr "Nome utente o password non valido."
-#: actions/apioauthauthorize.php:170
+#: actions/apioauthauthorize.php:159
msgid "Database error deleting OAuth application user."
msgstr "Errore nel database nell'eliminare l'applicazione utente OAuth."
-#: actions/apioauthauthorize.php:196
+#: actions/apioauthauthorize.php:185
msgid "Database error inserting OAuth application user."
msgstr "Errore nel database nell'inserire l'applicazione utente OAuth."
-#: actions/apioauthauthorize.php:231
+#: actions/apioauthauthorize.php:214
#, php-format
msgid ""
"The request token %s has been authorized. Please exchange it for an access "
@@ -524,55 +529,63 @@ msgstr ""
"Il token di richiesta %s è stato autorizzato. Scambiarlo con un token di "
"accesso."
-#: actions/apioauthauthorize.php:241
-#, php-format
-msgid "The request token %s has been denied."
+#: actions/apioauthauthorize.php:227
+#, fuzzy, php-format
+msgid "The request token %s has been denied and revoked."
msgstr "Il token di richiesta %s è stato rifiutato."
-#: actions/apioauthauthorize.php:246 actions/avatarsettings.php:281
+#: actions/apioauthauthorize.php:232 actions/avatarsettings.php:281
#: actions/designadminpanel.php:103 actions/editapplication.php:139
#: actions/emailsettings.php:256 actions/grouplogo.php:319
#: actions/imsettings.php:220 actions/newapplication.php:121
-#: actions/oauthconnectionssettings.php:151 actions/recoverpassword.php:44
+#: actions/oauthconnectionssettings.php:147 actions/recoverpassword.php:44
#: actions/smssettings.php:248 lib/designsettings.php:304
msgid "Unexpected form submission."
msgstr "Invio del modulo inaspettato."
-#: actions/apioauthauthorize.php:273
+#: actions/apioauthauthorize.php:259
msgid "An application would like to connect to your account"
msgstr "Un'applicazione vorrebbe collegarsi al tuo account"
-#: actions/apioauthauthorize.php:290
+#: actions/apioauthauthorize.php:276
msgid "Allow or deny access"
msgstr "Consenti o nega l'accesso"
-#: actions/apioauthauthorize.php:320 lib/action.php:441
+#: actions/apioauthauthorize.php:292
+#, php-format
+msgid ""
+"The application <strong>%1$s</strong> by <strong>%2$s</strong> would like "
+"the ability to <strong>%3$s</strong> your %4$s account data. You should only "
+"give access to your %4$s account to third parties you trust."
+msgstr ""
+
+#: actions/apioauthauthorize.php:310 lib/action.php:441
msgid "Account"
msgstr "Account"
-#: actions/apioauthauthorize.php:323 actions/login.php:230
+#: actions/apioauthauthorize.php:313 actions/login.php:230
#: actions/profilesettings.php:106 actions/register.php:424
#: actions/showgroup.php:236 actions/tagother.php:94 lib/groupeditform.php:152
#: lib/userprofile.php:131
msgid "Nickname"
msgstr "Soprannome"
-#: actions/apioauthauthorize.php:326 actions/login.php:233
+#: actions/apioauthauthorize.php:316 actions/login.php:233
#: actions/register.php:429 lib/accountsettingsaction.php:116
msgid "Password"
msgstr "Password"
-#: actions/apioauthauthorize.php:338
+#: actions/apioauthauthorize.php:328
#, fuzzy
msgid "Deny"
msgstr "Nega"
-#: actions/apioauthauthorize.php:344
+#: actions/apioauthauthorize.php:334
#, fuzzy
msgid "Allow"
msgstr "Consenti"
-#: actions/apioauthauthorize.php:361
+#: actions/apioauthauthorize.php:351
msgid "Allow or deny access to your account information."
msgstr "Consenti o nega l'accesso alle informazioni del tuo account."
@@ -743,8 +756,8 @@ msgstr "Originale"
msgid "Preview"
msgstr "Anteprima"
-#: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:608
+#: actions/avatarsettings.php:149 actions/showapplication.php:252
+#: lib/deleteuserform.php:66 lib/noticelist.php:624
msgid "Delete"
msgstr "Elimina"
@@ -794,8 +807,9 @@ msgstr ""
"tuoi messaggi, non potrà più abbonarsi e non riceverai notifica delle @-"
"risposte che ti invierà."
-#: actions/block.php:143 actions/deletenotice.php:145
-#: actions/deleteuser.php:147 actions/groupblock.php:178
+#: actions/block.php:143 actions/deleteapplication.php:153
+#: actions/deletenotice.php:145 actions/deleteuser.php:147
+#: actions/groupblock.php:178
msgid "No"
msgstr "No"
@@ -803,9 +817,9 @@ msgstr "No"
msgid "Do not block this user"
msgstr "Non bloccare questo utente"
-#: actions/block.php:144 actions/deletenotice.php:146
-#: actions/deleteuser.php:148 actions/groupblock.php:179
-#: lib/repeatform.php:132
+#: actions/block.php:144 actions/deleteapplication.php:158
+#: actions/deletenotice.php:146 actions/deleteuser.php:148
+#: actions/groupblock.php:179 lib/repeatform.php:132
msgid "Yes"
msgstr "Sì"
@@ -910,6 +924,53 @@ msgstr "Conversazione"
msgid "Notices"
msgstr "Messaggi"
+#: actions/deleteapplication.php:63
+#, fuzzy
+msgid "You must be logged in to delete an application."
+msgstr "Devi eseguire l'accesso per modificare un gruppo."
+
+#: actions/deleteapplication.php:71
+#, fuzzy
+msgid "Application not found."
+msgstr "Il messaggio non ha un profilo"
+
+#: actions/deleteapplication.php:78 actions/editapplication.php:77
+#: actions/showapplication.php:94
+#, fuzzy
+msgid "You are not the owner of this application."
+msgstr "Non fai parte di questo gruppo."
+
+#: actions/deleteapplication.php:102 actions/editapplication.php:127
+#: actions/newapplication.php:110 actions/showapplication.php:118
+#: lib/action.php:1195
+msgid "There was a problem with your session token."
+msgstr "Si è verificato un problema con il tuo token di sessione."
+
+#: actions/deleteapplication.php:123 actions/deleteapplication.php:147
+#, fuzzy
+msgid "Delete application"
+msgstr "Nessun messaggio."
+
+#: actions/deleteapplication.php:149
+#, fuzzy
+msgid ""
+"Are you sure you want to delete this application? This will clear all data "
+"about the application from the database, including all existing user "
+"connections."
+msgstr ""
+"Vuoi eliminare questo utente? Questa azione eliminerà tutti i dati "
+"dell'utente dal database, senza una copia di sicurezza."
+
+#: actions/deleteapplication.php:156
+#, fuzzy
+msgid "Do not delete this application"
+msgstr "Non eliminare il messaggio"
+
+#: actions/deleteapplication.php:160
+#, fuzzy
+msgid "Delete this application"
+msgstr "Elimina questo messaggio"
+
#: actions/deletenotice.php:67 actions/disfavor.php:61 actions/favor.php:62
#: actions/groupblock.php:61 actions/groupunblock.php:61 actions/logout.php:69
#: actions/makeadmin.php:61 actions/newmessage.php:87 actions/newnotice.php:89
@@ -944,7 +1005,7 @@ msgstr "Vuoi eliminare questo messaggio?"
msgid "Do not delete this notice"
msgstr "Non eliminare il messaggio"
-#: actions/deletenotice.php:146 lib/noticelist.php:608
+#: actions/deletenotice.php:146 lib/noticelist.php:624
msgid "Delete this notice"
msgstr "Elimina questo messaggio"
@@ -1088,7 +1149,7 @@ msgstr "Questo messaggio non è un preferito!"
msgid "Add to favorites"
msgstr "Aggiungi ai preferiti"
-#: actions/doc.php:155
+#: actions/doc.php:158
#, fuzzy, php-format
msgid "No such document \"%s\""
msgstr "Nessun documento."
@@ -1103,22 +1164,12 @@ msgstr "Altre opzioni"
msgid "You must be logged in to edit an application."
msgstr "Devi eseguire l'accesso per modificare un gruppo."
-#: actions/editapplication.php:77 actions/showapplication.php:94
-#, fuzzy
-msgid "You are not the owner of this application."
-msgstr "Non fai parte di questo gruppo."
-
-#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:163
+#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:166
#: actions/showapplication.php:87
#, fuzzy
msgid "No such application."
msgstr "Nessun messaggio."
-#: actions/editapplication.php:127 actions/newapplication.php:110
-#: actions/showapplication.php:118 lib/action.php:1195
-msgid "There was a problem with your session token."
-msgstr "Si è verificato un problema con il tuo token di sessione."
-
#: actions/editapplication.php:161
#, fuzzy
msgid "Use this form to edit your application."
@@ -1129,48 +1180,53 @@ msgstr "Usa questo modulo per modificare il gruppo."
msgid "Name is required."
msgstr "Stessa password di sopra; richiesta"
-#: actions/editapplication.php:180 actions/newapplication.php:162
+#: actions/editapplication.php:180 actions/newapplication.php:165
#, fuzzy
msgid "Name is too long (max 255 chars)."
msgstr "Nome troppo lungo (max 255 caratteri)."
-#: actions/editapplication.php:183 actions/newapplication.php:165
+#: actions/editapplication.php:183 actions/newapplication.php:162
+#, fuzzy
+msgid "Name already in use. Try another one."
+msgstr "Soprannome già in uso. Prova con un altro."
+
+#: actions/editapplication.php:186 actions/newapplication.php:168
#, fuzzy
msgid "Description is required."
msgstr "Descrizione"
-#: actions/editapplication.php:191
+#: actions/editapplication.php:194
msgid "Source URL is too long."
msgstr ""
-#: actions/editapplication.php:197 actions/newapplication.php:182
+#: actions/editapplication.php:200 actions/newapplication.php:185
#, fuzzy
msgid "Source URL is not valid."
msgstr "L'URL \"%s\" dell'immagine non è valido."
-#: actions/editapplication.php:200 actions/newapplication.php:185
+#: actions/editapplication.php:203 actions/newapplication.php:188
msgid "Organization is required."
msgstr ""
-#: actions/editapplication.php:203 actions/newapplication.php:188
+#: actions/editapplication.php:206 actions/newapplication.php:191
#, fuzzy
msgid "Organization is too long (max 255 chars)."
msgstr "Ubicazione troppo lunga (max 255 caratteri)."
-#: actions/editapplication.php:206 actions/newapplication.php:191
+#: actions/editapplication.php:209 actions/newapplication.php:194
msgid "Organization homepage is required."
msgstr ""
-#: actions/editapplication.php:215 actions/newapplication.php:203
+#: actions/editapplication.php:218 actions/newapplication.php:206
msgid "Callback is too long."
msgstr ""
-#: actions/editapplication.php:222 actions/newapplication.php:212
+#: actions/editapplication.php:225 actions/newapplication.php:215
#, fuzzy
msgid "Callback URL is not valid."
msgstr "L'URL \"%s\" dell'immagine non è valido."
-#: actions/editapplication.php:255
+#: actions/editapplication.php:258
#, fuzzy
msgid "Could not update application."
msgstr "Impossibile aggiornare il gruppo."
@@ -2109,11 +2165,11 @@ msgstr "Devi eseguire l'accesso per creare un gruppo."
msgid "Use this form to register a new application."
msgstr "Usa questo modulo per creare un nuovo gruppo."
-#: actions/newapplication.php:173
+#: actions/newapplication.php:176
msgid "Source URL is required."
msgstr ""
-#: actions/newapplication.php:255 actions/newapplication.php:264
+#: actions/newapplication.php:258 actions/newapplication.php:267
#, fuzzy
msgid "Could not create application."
msgstr "Impossibile creare gli alias."
@@ -2249,29 +2305,29 @@ msgstr ""
msgid "You have not registered any applications yet."
msgstr ""
-#: actions/oauthconnectionssettings.php:71
+#: actions/oauthconnectionssettings.php:72
msgid "Connected applications"
msgstr ""
-#: actions/oauthconnectionssettings.php:87
+#: actions/oauthconnectionssettings.php:83
msgid "You have allowed the following applications to access you account."
msgstr ""
-#: actions/oauthconnectionssettings.php:170
+#: actions/oauthconnectionssettings.php:175
#, fuzzy
msgid "You are not a user of that application."
msgstr "Non fai parte di quel gruppo."
-#: actions/oauthconnectionssettings.php:180
+#: actions/oauthconnectionssettings.php:186
msgid "Unable to revoke access for app: "
msgstr ""
-#: actions/oauthconnectionssettings.php:192
+#: actions/oauthconnectionssettings.php:198
#, php-format
msgid "You have not authorized any applications to use your account."
msgstr ""
-#: actions/oauthconnectionssettings.php:205
+#: actions/oauthconnectionssettings.php:211
msgid "Developers can edit the registration settings for their applications "
msgstr ""
@@ -2781,19 +2837,19 @@ msgstr "Attività pubblica, pagina %d"
msgid "Public timeline"
msgstr "Attività pubblica"
-#: actions/public.php:151
+#: actions/public.php:159
msgid "Public Stream Feed (RSS 1.0)"
msgstr "Feed dell'attività pubblica (RSS 1.0)"
-#: actions/public.php:155
+#: actions/public.php:163
msgid "Public Stream Feed (RSS 2.0)"
msgstr "Feed dell'attività pubblica (RSS 2.0)"
-#: actions/public.php:159
+#: actions/public.php:167
msgid "Public Stream Feed (Atom)"
msgstr "Feed dell'attività pubblica (Atom)"
-#: actions/public.php:179
+#: actions/public.php:187
#, php-format
msgid ""
"This is the public timeline for %%site.name%% but no one has posted anything "
@@ -2802,18 +2858,18 @@ msgstr ""
"Questa è l'attività pubblica di %%site.name%%, ma nessuno ha ancora scritto "
"qualche cosa."
-#: actions/public.php:182
+#: actions/public.php:190
msgid "Be the first to post!"
msgstr "Fallo tu!"
-#: actions/public.php:186
+#: actions/public.php:194
#, php-format
msgid ""
"Why not [register an account](%%action.register%%) and be the first to post!"
msgstr ""
"Perché non [crei un account](%%action.register%%) e scrivi qualche cosa!"
-#: actions/public.php:233
+#: actions/public.php:241
#, php-format
msgid ""
"This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2826,7 +2882,7 @@ msgstr ""
"net/). [Registrati](%%action.register%%) per condividere messaggi con i tuoi "
"amici, i tuoi familiari e colleghi! ([Maggiori informazioni](%%doc.help%%))"
-#: actions/public.php:238
+#: actions/public.php:246
#, php-format
msgid ""
"This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -3192,7 +3248,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:626
+#: actions/repeat.php:114 lib/noticelist.php:642
msgid "Repeated"
msgstr "Ripetuti"
@@ -3258,6 +3314,10 @@ msgstr ""
msgid "Replies to %1$s on %2$s!"
msgstr "Risposte a %1$s su %2$s!"
+#: actions/rsd.php:146 actions/version.php:157
+msgid "StatusNet"
+msgstr "StatusNet"
+
#: actions/sandbox.php:65 actions/unsandbox.php:65
msgid "You cannot sandbox users on this site."
msgstr "Non puoi mettere in \"sandbox\" gli utenti su questo sito."
@@ -3302,79 +3362,84 @@ msgstr "Salva impostazioni"
msgid "You must be logged in to view an application."
msgstr "Devi eseguire l'accesso per lasciare un gruppo."
-#: actions/showapplication.php:158
+#: actions/showapplication.php:157
#, fuzzy
msgid "Application profile"
msgstr "Il messaggio non ha un profilo"
-#: actions/showapplication.php:160 lib/applicationeditform.php:180
+#: actions/showapplication.php:159 lib/applicationeditform.php:180
msgid "Icon"
msgstr ""
-#: actions/showapplication.php:170 actions/version.php:195
+#: actions/showapplication.php:169 actions/version.php:195
#: lib/applicationeditform.php:195
msgid "Name"
msgstr "Nome"
-#: actions/showapplication.php:179 lib/applicationeditform.php:222
+#: actions/showapplication.php:178 lib/applicationeditform.php:222
#, fuzzy
msgid "Organization"
msgstr "Paginazione"
-#: actions/showapplication.php:188 actions/version.php:198
+#: actions/showapplication.php:187 actions/version.php:198
#: lib/applicationeditform.php:209 lib/groupeditform.php:172
msgid "Description"
msgstr "Descrizione"
-#: actions/showapplication.php:193 actions/showgroup.php:429
+#: actions/showapplication.php:192 actions/showgroup.php:429
#: lib/profileaction.php:174
msgid "Statistics"
msgstr "Statistiche"
-#: actions/showapplication.php:204
+#: actions/showapplication.php:203
#, php-format
-msgid "created by %1$s - %2$s access by default - %3$d users"
+msgid "Created by %1$s - %2$s access by default - %3$d users"
msgstr ""
-#: actions/showapplication.php:214
+#: actions/showapplication.php:213
msgid "Application actions"
msgstr ""
-#: actions/showapplication.php:233
+#: actions/showapplication.php:236
msgid "Reset key & secret"
msgstr ""
-#: actions/showapplication.php:241
+#: actions/showapplication.php:261
msgid "Application info"
msgstr ""
-#: actions/showapplication.php:243
+#: actions/showapplication.php:263
msgid "Consumer key"
msgstr ""
-#: actions/showapplication.php:248
+#: actions/showapplication.php:268
msgid "Consumer secret"
msgstr ""
-#: actions/showapplication.php:253
+#: actions/showapplication.php:273
msgid "Request token URL"
msgstr ""
-#: actions/showapplication.php:258
+#: actions/showapplication.php:278
msgid "Access token URL"
msgstr ""
-#: actions/showapplication.php:263
+#: actions/showapplication.php:283
#, fuzzy
msgid "Authorize URL"
msgstr "Autore"
-#: actions/showapplication.php:268
+#: actions/showapplication.php:288
msgid ""
"Note: We support HMAC-SHA1 signatures. We do not support the plaintext "
"signature method."
msgstr ""
+#: actions/showapplication.php:309
+#, fuzzy
+msgid "Are you sure you want to reset your consumer key and secret?"
+msgstr "Vuoi eliminare questo messaggio?"
+
#: actions/showfavorites.php:79
#, fuzzy, php-format
msgid "%1$s's favorite notices, page %2$d"
@@ -3434,7 +3499,7 @@ msgstr "Questo è un modo per condividere ciò che ti piace."
#: actions/showgroup.php:82 lib/groupnav.php:86
#, php-format
msgid "%s group"
-msgstr "Gruppi di %s"
+msgstr "Gruppo %s"
#: actions/showgroup.php:84
#, fuzzy, php-format
@@ -3590,12 +3655,12 @@ msgstr "Feed dei messaggi per %s (Atom)"
msgid "FOAF for %s"
msgstr "FOAF per %s"
-#: actions/showstream.php:191
+#: actions/showstream.php:200
#, php-format
msgid "This is the timeline for %1$s but %2$s hasn't posted anything yet."
msgstr "Questa è l'attività di %1$s, ma %2$s non ha ancora scritto nulla."
-#: actions/showstream.php:196
+#: actions/showstream.php:205
msgid ""
"Seen anything interesting recently? You haven't posted any notices yet, now "
"would be a good time to start :)"
@@ -3603,7 +3668,7 @@ msgstr ""
"Visto niente di interessante? Non hai scritto ancora alcun messaggio, questo "
"potrebbe essere un buon momento per iniziare! :)"
-#: actions/showstream.php:198
+#: actions/showstream.php:207
#, php-format
msgid ""
"You can try to nudge %1$s or [post something to his or her attention](%%%%"
@@ -3612,7 +3677,7 @@ msgstr ""
"Puoi provare a richiamare %1$s o [scrivere qualche cosa che attiri la sua "
"attenzione](%%%%action.newnotice%%%%?status_textarea=%2$s)."
-#: actions/showstream.php:234
+#: actions/showstream.php:243
#, php-format
msgid ""
"**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3626,7 +3691,7 @@ msgstr ""
"i messaggi di **%s** e di molti altri! ([Maggiori informazioni](%%%%doc.help%"
"%%%))"
-#: actions/showstream.php:239
+#: actions/showstream.php:248
#, php-format
msgid ""
"**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3637,7 +3702,7 @@ msgstr ""
"it.wikipedia.org/wiki/Microblogging) basato sul software libero [StatusNet]"
"(http://status.net/). "
-#: actions/showstream.php:296
+#: actions/showstream.php:305
#, php-format
msgid "Repeat of %s"
msgstr "Ripetizione di %s"
@@ -4316,10 +4381,6 @@ msgstr ""
"Questo sito esegue il software %1$s versione %2$s, Copyright 2008-2010 "
"StatusNet, Inc. e collaboratori."
-#: actions/version.php:157
-msgid "StatusNet"
-msgstr "StatusNet"
-
#: actions/version.php:161
msgid "Contributors"
msgstr "Collaboratori"
@@ -4458,22 +4519,22 @@ msgstr "Ti è proibito inviare messaggi su questo sito."
msgid "Problem saving notice."
msgstr "Problema nel salvare il messaggio."
-#: classes/Notice.php:790
+#: classes/Notice.php:788
#, fuzzy
msgid "Problem saving group inbox."
msgstr "Problema nel salvare il messaggio."
-#: classes/Notice.php:850
+#: classes/Notice.php:848
#, php-format
msgid "DB error inserting reply: %s"
msgstr "Errore del DB nell'inserire la risposta: %s"
-#: classes/Notice.php:1233
+#: classes/Notice.php:1231
#, php-format
msgid "RT @%1$s %2$s"
msgstr "RT @%1$s %2$s"
-#: classes/User.php:382
+#: classes/User.php:385
#, php-format
msgid "Welcome to %1$s, @%2$s!"
msgstr "Benvenuti su %1$s, @%2$s!"
@@ -4750,11 +4811,11 @@ msgstr "Configurazione percorsi"
msgid "Sessions configuration"
msgstr "Configurazione aspetto"
-#: lib/apiauth.php:99
+#: lib/apiauth.php:95
msgid "API resource requires read-write access, but you only have read access."
msgstr ""
-#: lib/apiauth.php:279
+#: lib/apiauth.php:273
#, php-format
msgid "Failed API auth attempt, nickname = %1$s, proxy = %2$s, ip = %3$s"
msgstr ""
@@ -5159,21 +5220,21 @@ msgstr ""
"tracks - non ancora implementato\n"
"tracking - non ancora implementato\n"
-#: lib/common.php:131
+#: lib/common.php:135
msgid "No configuration file found. "
msgstr "Non è stato trovato alcun file di configurazione. "
-#: lib/common.php:132
+#: lib/common.php:136
msgid "I looked for configuration files in the following places: "
msgstr "I file di configurazione sono stati cercati in questi posti: "
-#: lib/common.php:134
+#: lib/common.php:138
msgid "You may wish to run the installer to fix this."
msgstr ""
"Potrebbe essere necessario lanciare il programma d'installazione per "
"correggere il problema."
-#: lib/common.php:135
+#: lib/common.php:139
msgid "Go to the installer."
msgstr "Vai al programma d'installazione."
@@ -5819,23 +5880,23 @@ msgstr "O"
msgid "at"
msgstr "presso"
-#: lib/noticelist.php:531
+#: lib/noticelist.php:547
msgid "in context"
-msgstr "nel contesto"
+msgstr "in una discussione"
-#: lib/noticelist.php:556
+#: lib/noticelist.php:572
msgid "Repeated by"
msgstr "Ripetuto da"
-#: lib/noticelist.php:582
+#: lib/noticelist.php:598
msgid "Reply to this notice"
msgstr "Rispondi a questo messaggio"
-#: lib/noticelist.php:583
+#: lib/noticelist.php:599
msgid "Reply"
msgstr "Rispondi"
-#: lib/noticelist.php:625
+#: lib/noticelist.php:641
msgid "Notice repeated"
msgstr "Messaggio ripetuto"
@@ -5976,6 +6037,10 @@ msgstr "Ripetere questo messaggio?"
msgid "Repeat this notice"
msgstr "Ripeti questo messaggio"
+#: lib/router.php:665
+msgid "No single user defined for single-user mode."
+msgstr ""
+
#: lib/sandboxform.php:67
msgid "Sandbox"
msgstr "Sandbox"
@@ -6141,47 +6206,47 @@ msgstr "Messaggio"
msgid "Moderate"
msgstr "Modera"
-#: lib/util.php:868
+#: lib/util.php:867
msgid "a few seconds ago"
msgstr "pochi secondi fa"
-#: lib/util.php:870
+#: lib/util.php:869
msgid "about a minute ago"
msgstr "circa un minuto fa"
-#: lib/util.php:872
+#: lib/util.php:871
#, php-format
msgid "about %d minutes ago"
msgstr "circa %d minuti fa"
-#: lib/util.php:874
+#: lib/util.php:873
msgid "about an hour ago"
msgstr "circa un'ora fa"
-#: lib/util.php:876
+#: lib/util.php:875
#, php-format
msgid "about %d hours ago"
msgstr "circa %d ore fa"
-#: lib/util.php:878
+#: lib/util.php:877
msgid "about a day ago"
msgstr "circa un giorno fa"
-#: lib/util.php:880
+#: lib/util.php:879
#, php-format
msgid "about %d days ago"
msgstr "circa %d giorni fa"
-#: lib/util.php:882
+#: lib/util.php:881
msgid "about a month ago"
msgstr "circa un mese fa"
-#: lib/util.php:884
+#: lib/util.php:883
#, php-format
msgid "about %d months ago"
msgstr "circa %d mesi fa"
-#: lib/util.php:886
+#: lib/util.php:885
msgid "about a year ago"
msgstr "circa un anno fa"
diff --git a/locale/ja/LC_MESSAGES/statusnet.po b/locale/ja/LC_MESSAGES/statusnet.po
index dc5ae1c66..e64d47a6f 100644
--- a/locale/ja/LC_MESSAGES/statusnet.po
+++ b/locale/ja/LC_MESSAGES/statusnet.po
@@ -11,12 +11,12 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-01-30 23:41+0000\n"
-"PO-Revision-Date: 2010-01-30 23:42:10+0000\n"
+"POT-Creation-Date: 2010-02-04 10:31+0000\n"
+"PO-Revision-Date: 2010-02-04 10:33:01+0000\n"
"Language-Team: Japanese\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.16alpha (r61734); Translate extension (2010-01-16)\n"
+"X-Generator: MediaWiki 1.16alpha (r61969); Translate extension (2010-01-16)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: ja\n"
"X-Message-Group: out-statusnet\n"
@@ -95,7 +95,7 @@ msgstr "そのようなページはありません。"
#: actions/favoritesrss.php:74 actions/foaf.php:40 actions/foaf.php:58
#: actions/microsummary.php:62 actions/newmessage.php:116 actions/otp.php:76
#: actions/remotesubscribe.php:145 actions/remotesubscribe.php:154
-#: actions/replies.php:73 actions/repliesrss.php:38
+#: actions/replies.php:73 actions/repliesrss.php:38 actions/rsd.php:116
#: actions/showfavorites.php:105 actions/userbyid.php:74
#: actions/usergroups.php:91 actions/userrss.php:38 actions/xrds.php:71
#: lib/command.php:163 lib/command.php:302 lib/command.php:355
@@ -103,7 +103,7 @@ msgstr "そのようなページはありません。"
#: lib/galleryaction.php:59 lib/mailbox.php:82 lib/profileaction.php:77
#: lib/subs.php:34 lib/subs.php:125
msgid "No such user."
-msgstr "そのような利用者はいません。"
+msgstr "そのようなユーザはいません。"
#: actions/all.php:84
#, php-format
@@ -156,7 +156,7 @@ msgstr ""
"プロフィールから [%1$s さんに合図](../%2$s) したり、[知らせたいことについて投"
"稿](%%%%action.newnotice%%%%?status_textarea=%3$s) したりできます。"
-#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:202
+#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:211
#, php-format
msgid ""
"Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
@@ -223,7 +223,7 @@ msgstr ""
#: actions/apiaccountupdatedeliverydevice.php:132
msgid "Could not update user."
-msgstr "利用者を更新できませんでした。"
+msgstr "ユーザを更新できませんでした。"
#: actions/apiaccountupdateprofile.php:112
#: actions/apiaccountupdateprofilebackgroundimage.php:194
@@ -232,7 +232,7 @@ msgstr "利用者を更新できませんでした。"
#: actions/avatarbynickname.php:80 actions/foaf.php:65 actions/replies.php:80
#: actions/usergroups.php:98 lib/galleryaction.php:66 lib/profileaction.php:84
msgid "User has no profile."
-msgstr "利用者はプロフィールをもっていません。"
+msgstr "ユーザはプロフィールをもっていません。"
#: actions/apiaccountupdateprofile.php:147
msgid "Could not save profile."
@@ -273,11 +273,11 @@ msgstr "自分自身をブロックすることはできません!"
#: actions/apiblockcreate.php:126
msgid "Block user failed."
-msgstr "利用者のブロックに失敗しました。"
+msgstr "ユーザのブロックに失敗しました。"
#: actions/apiblockdestroy.php:114
msgid "Unblock user failed."
-msgstr "利用者のブロック解除に失敗しました。"
+msgstr "ユーザのブロック解除に失敗しました。"
#: actions/apidirectmessage.php:89
#, php-format
@@ -310,11 +310,11 @@ msgstr "長すぎます。メッセージは最大 %d 字までです。"
#: actions/apidirectmessagenew.php:146
msgid "Recipient user not found."
-msgstr "受け取り手の利用者が見つかりません。"
+msgstr "受け取り手のユーザが見つかりません。"
#: actions/apidirectmessagenew.php:150
msgid "Can't send direct messages to users who aren't your friend."
-msgstr "友人でない利用者にダイレクトメッセージを送ることはできません。"
+msgstr "友人でないユーザにダイレクトメッセージを送ることはできません。"
#: actions/apifavoritecreate.php:108 actions/apifavoritedestroy.php:109
#: actions/apistatusesdestroy.php:113
@@ -339,17 +339,17 @@ msgstr "お気に入りを取り消すことができません。"
#: actions/apifriendshipscreate.php:109
msgid "Could not follow user: User not found."
-msgstr "利用者をフォローできませんでした: 利用者が見つかりません。"
+msgstr "ユーザをフォローできませんでした: ユーザが見つかりません。"
#: actions/apifriendshipscreate.php:118
#, php-format
msgid "Could not follow user: %s is already on your list."
msgstr ""
-"利用者をフォローできませんでした: %s は既にあなたのリストに入っています。"
+"ユーザをフォローできませんでした: %s は既にあなたのリストに入っています。"
#: actions/apifriendshipsdestroy.php:109
msgid "Could not unfollow user: User not found."
-msgstr "利用者のフォローを停止できませんでした: 利用者が見つかりません。"
+msgstr "ユーザのフォローを停止できませんでした: ユーザが見つかりません。"
#: actions/apifriendshipsdestroy.php:120
msgid "You cannot unfollow yourself."
@@ -387,8 +387,8 @@ msgstr "そのニックネームは既に使用されています。他のもの
msgid "Not a valid nickname."
msgstr "有効なニックネームではありません。"
-#: actions/apigroupcreate.php:196 actions/editapplication.php:212
-#: actions/editgroup.php:195 actions/newapplication.php:200
+#: actions/apigroupcreate.php:196 actions/editapplication.php:215
+#: actions/editgroup.php:195 actions/newapplication.php:203
#: actions/newgroup.php:139 actions/profilesettings.php:222
#: actions/register.php:217
msgid "Homepage is not a valid URL."
@@ -400,8 +400,8 @@ msgstr "ホームページのURLが不適切です。"
msgid "Full name is too long (max 255 chars)."
msgstr "フルネームが長すぎます。(255字まで)"
-#: actions/apigroupcreate.php:213 actions/editapplication.php:187
-#: actions/newapplication.php:169
+#: actions/apigroupcreate.php:213 actions/editapplication.php:190
+#: actions/newapplication.php:172
#, php-format
msgid "Description is too long (max %d chars)."
msgstr "記述が長すぎます。(最長140字)"
@@ -452,7 +452,7 @@ msgstr "管理者によってこのグループからブロックされていま
#: actions/apigroupjoin.php:138 actions/joingroup.php:124
#, php-format
msgid "Could not join user %1$s to group %2$s."
-msgstr "利用者 %1$s はグループ %2$s に参加できません。"
+msgstr "ユーザ %1$s はグループ %2$s に参加できません。"
#: actions/apigroupleave.php:114
msgid "You are not a member of this group."
@@ -461,7 +461,7 @@ msgstr "このグループのメンバーではありません。"
#: actions/apigroupleave.php:124 actions/leavegroup.php:119
#, php-format
msgid "Could not remove user %1$s from group %2$s."
-msgstr "利用者 %1$s をグループ %2$s から削除できません。"
+msgstr "ユーザ %1$s をグループ %2$s から削除できません。"
#: actions/apigrouplist.php:95
#, php-format
@@ -478,18 +478,22 @@ msgstr "%s グループ"
msgid "groups on %s"
msgstr "%s 上のグループ"
-#: actions/apioauthauthorize.php:108 actions/apioauthauthorize.php:114
-msgid "Bad request."
-msgstr "悪い要求。"
+#: actions/apioauthauthorize.php:101
+msgid "No oauth_token parameter provided."
+msgstr "oauth_token パラメータは提供されませんでした。"
-#: actions/apioauthauthorize.php:134 actions/avatarsettings.php:268
+#: actions/apioauthauthorize.php:106
+msgid "Invalid token."
+msgstr "不正なトークン。"
+
+#: actions/apioauthauthorize.php:123 actions/avatarsettings.php:268
#: actions/deletenotice.php:157 actions/disfavor.php:74
-#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:50
+#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:54
#: actions/groupblock.php:66 actions/grouplogo.php:309
#: actions/groupunblock.php:66 actions/imsettings.php:206
#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
-#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:139
+#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:135
#: actions/othersettings.php:145 actions/passwordsettings.php:138
#: actions/profilesettings.php:194 actions/recoverpassword.php:337
#: actions/register.php:165 actions/remotesubscribe.php:77
@@ -500,21 +504,19 @@ msgstr "悪い要求。"
msgid "There was a problem with your session token. Try again, please."
msgstr "あなたのセッショントークンに問題がありました。再度お試しください。"
-#: actions/apioauthauthorize.php:146
+#: actions/apioauthauthorize.php:135
msgid "Invalid nickname / password!"
msgstr "不正なユーザ名またはパスワード。"
-#: actions/apioauthauthorize.php:170
-#, fuzzy
+#: actions/apioauthauthorize.php:159
msgid "Database error deleting OAuth application user."
-msgstr "OAuth アプリユーザの削除時DBエラー。"
+msgstr "OAuth アプリケーションユーザの削除時DBエラー。"
-#: actions/apioauthauthorize.php:196
-#, fuzzy
+#: actions/apioauthauthorize.php:185
msgid "Database error inserting OAuth application user."
-msgstr "OAuth アプリユーザの追加時DBエラー。"
+msgstr "OAuth アプリケーションユーザの追加時DBエラー。"
-#: actions/apioauthauthorize.php:231
+#: actions/apioauthauthorize.php:214
#, php-format
msgid ""
"The request token %s has been authorized. Please exchange it for an access "
@@ -523,53 +525,61 @@ msgstr ""
"リクエストトークン %s は承認されました。 アクセストークンとそれを交換してくだ"
"さい。"
-#: actions/apioauthauthorize.php:241
+#: actions/apioauthauthorize.php:227
#, php-format
-msgid "The request token %s has been denied."
-msgstr "リクエストトークン%sは否定されました。"
+msgid "The request token %s has been denied and revoked."
+msgstr "リクエストトークン%sは、拒否されて、取り消されました。"
-#: actions/apioauthauthorize.php:246 actions/avatarsettings.php:281
+#: actions/apioauthauthorize.php:232 actions/avatarsettings.php:281
#: actions/designadminpanel.php:103 actions/editapplication.php:139
#: actions/emailsettings.php:256 actions/grouplogo.php:319
#: actions/imsettings.php:220 actions/newapplication.php:121
-#: actions/oauthconnectionssettings.php:151 actions/recoverpassword.php:44
+#: actions/oauthconnectionssettings.php:147 actions/recoverpassword.php:44
#: actions/smssettings.php:248 lib/designsettings.php:304
msgid "Unexpected form submission."
msgstr "予期せぬフォーム送信です。"
-#: actions/apioauthauthorize.php:273
+#: actions/apioauthauthorize.php:259
msgid "An application would like to connect to your account"
msgstr "アプリケーションはあなたのアカウントに接続したいです"
-#: actions/apioauthauthorize.php:290
+#: actions/apioauthauthorize.php:276
msgid "Allow or deny access"
msgstr "アクセスを許可または拒絶"
-#: actions/apioauthauthorize.php:320 lib/action.php:441
+#: actions/apioauthauthorize.php:292
+#, php-format
+msgid ""
+"The application <strong>%1$s</strong> by <strong>%2$s</strong> would like "
+"the ability to <strong>%3$s</strong> your %4$s account data. You should only "
+"give access to your %4$s account to third parties you trust."
+msgstr ""
+
+#: actions/apioauthauthorize.php:310 lib/action.php:441
msgid "Account"
msgstr "アカウント"
-#: actions/apioauthauthorize.php:323 actions/login.php:230
+#: actions/apioauthauthorize.php:313 actions/login.php:230
#: actions/profilesettings.php:106 actions/register.php:424
#: actions/showgroup.php:236 actions/tagother.php:94 lib/groupeditform.php:152
#: lib/userprofile.php:131
msgid "Nickname"
msgstr "ニックネーム"
-#: actions/apioauthauthorize.php:326 actions/login.php:233
+#: actions/apioauthauthorize.php:316 actions/login.php:233
#: actions/register.php:429 lib/accountsettingsaction.php:116
msgid "Password"
msgstr "パスワード"
-#: actions/apioauthauthorize.php:338
+#: actions/apioauthauthorize.php:328
msgid "Deny"
msgstr "拒絶"
-#: actions/apioauthauthorize.php:344
+#: actions/apioauthauthorize.php:334
msgid "Allow"
msgstr "許可"
-#: actions/apioauthauthorize.php:361
+#: actions/apioauthauthorize.php:351
msgid "Allow or deny access to your account information."
msgstr "アカウント情報へのアクセスを許可するか、または拒絶してください。"
@@ -579,7 +589,7 @@ msgstr "このメソッドには POST か DELETE が必要です。"
#: actions/apistatusesdestroy.php:130
msgid "You may not delete another user's status."
-msgstr "他の利用者のステータスを消すことはできません。"
+msgstr "他のユーザのステータスを消すことはできません。"
#: actions/apistatusesretweet.php:75 actions/apistatusesretweets.php:72
#: actions/deletenotice.php:52 actions/shownotice.php:92
@@ -721,7 +731,7 @@ msgstr "自分のアバターをアップロードできます。最大サイズ
#: actions/remotesubscribe.php:191 actions/userauthorization.php:72
#: actions/userrss.php:103
msgid "User without matching profile"
-msgstr "合っているプロフィールのない利用者"
+msgstr "合っているプロフィールのないユーザ"
#: actions/avatarsettings.php:119 actions/avatarsettings.php:197
#: actions/grouplogo.php:251
@@ -738,8 +748,8 @@ msgstr "オリジナル"
msgid "Preview"
msgstr "プレビュー"
-#: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:608
+#: actions/avatarsettings.php:149 actions/showapplication.php:252
+#: lib/deleteuserform.php:66 lib/noticelist.php:624
msgid "Delete"
msgstr "削除"
@@ -773,11 +783,11 @@ msgstr "アバターが削除されました。"
#: actions/block.php:69
msgid "You already blocked that user."
-msgstr "その利用者はすでにブロック済みです。"
+msgstr "そのユーザはすでにブロック済みです。"
#: actions/block.php:105 actions/block.php:128 actions/groupblock.php:160
msgid "Block user"
-msgstr "ブロック利用者"
+msgstr "ユーザをブロック"
#: actions/block.php:130
#, fuzzy
@@ -790,8 +800,9 @@ msgstr ""
"たからフォローを外されるでしょう、将来、あなたにフォローできないで、あなたは"
"どんな @-返信 についてもそれらから通知されないでしょう。"
-#: actions/block.php:143 actions/deletenotice.php:145
-#: actions/deleteuser.php:147 actions/groupblock.php:178
+#: actions/block.php:143 actions/deleteapplication.php:153
+#: actions/deletenotice.php:145 actions/deleteuser.php:147
+#: actions/groupblock.php:178
msgid "No"
msgstr "No"
@@ -799,9 +810,9 @@ msgstr "No"
msgid "Do not block this user"
msgstr "このユーザをアンブロックする"
-#: actions/block.php:144 actions/deletenotice.php:146
-#: actions/deleteuser.php:148 actions/groupblock.php:179
-#: lib/repeatform.php:132
+#: actions/block.php:144 actions/deleteapplication.php:158
+#: actions/deletenotice.php:146 actions/deleteuser.php:148
+#: actions/groupblock.php:179 lib/repeatform.php:132
msgid "Yes"
msgstr "Yes"
@@ -835,11 +846,11 @@ msgstr "%1$s ブロックされたプロファイル、ページ %2$d"
#: actions/blockedfromgroup.php:108
msgid "A list of the users blocked from joining this group."
-msgstr "このグループへの参加をブロックされた利用者のリスト。"
+msgstr "このグループへの参加をブロックされたユーザのリスト。"
#: actions/blockedfromgroup.php:281
msgid "Unblock user from group"
-msgstr "グループからのアンブロック利用者"
+msgstr "グループからのアンブロックユーザ"
#: actions/blockedfromgroup.php:313 lib/unblockform.php:69
msgid "Unblock"
@@ -905,6 +916,47 @@ msgstr "会話"
msgid "Notices"
msgstr "つぶやき"
+#: actions/deleteapplication.php:63
+msgid "You must be logged in to delete an application."
+msgstr "アプリケーションを削除するにはログインしていなければなりません。"
+
+#: actions/deleteapplication.php:71
+msgid "Application not found."
+msgstr "アプリケーションが見つかりません。"
+
+#: actions/deleteapplication.php:78 actions/editapplication.php:77
+#: actions/showapplication.php:94
+msgid "You are not the owner of this application."
+msgstr "このアプリケーションのオーナーではありません。"
+
+#: actions/deleteapplication.php:102 actions/editapplication.php:127
+#: actions/newapplication.php:110 actions/showapplication.php:118
+#: lib/action.php:1195
+msgid "There was a problem with your session token."
+msgstr "あなたのセッショントークンに関する問題がありました。"
+
+#: actions/deleteapplication.php:123 actions/deleteapplication.php:147
+msgid "Delete application"
+msgstr "アプリケーション削除"
+
+#: actions/deleteapplication.php:149
+#, fuzzy
+msgid ""
+"Are you sure you want to delete this application? This will clear all data "
+"about the application from the database, including all existing user "
+"connections."
+msgstr ""
+"あなたは本当にこのユーザを削除したいですか? これはバックアップなしでデータ"
+"ベースからユーザに関するすべてのデータをクリアします。"
+
+#: actions/deleteapplication.php:156
+msgid "Do not delete this application"
+msgstr "このアプリケーションを削除しないでください"
+
+#: actions/deleteapplication.php:160
+msgid "Delete this application"
+msgstr "このアプリケーションを削除"
+
#: actions/deletenotice.php:67 actions/disfavor.php:61 actions/favor.php:62
#: actions/groupblock.php:61 actions/groupunblock.php:61 actions/logout.php:69
#: actions/makeadmin.php:61 actions/newmessage.php:87 actions/newnotice.php:89
@@ -939,33 +991,33 @@ msgstr "本当にこのつぶやきを削除しますか?"
msgid "Do not delete this notice"
msgstr "このつぶやきを削除できません。"
-#: actions/deletenotice.php:146 lib/noticelist.php:608
+#: actions/deletenotice.php:146 lib/noticelist.php:624
msgid "Delete this notice"
msgstr "このつぶやきを削除"
#: actions/deleteuser.php:67
msgid "You cannot delete users."
-msgstr "利用者を削除できません"
+msgstr "ユーザを削除できません"
#: actions/deleteuser.php:74
msgid "You can only delete local users."
-msgstr "ローカル利用者のみ削除できます。"
+msgstr "ローカルユーザのみ削除できます。"
#: actions/deleteuser.php:110 actions/deleteuser.php:133
msgid "Delete user"
-msgstr "利用者削除"
+msgstr "ユーザ削除"
#: actions/deleteuser.php:135
msgid ""
"Are you sure you want to delete this user? This will clear all data about "
"the user from the database, without a backup."
msgstr ""
-"あなたは本当にこの利用者を削除したいですか? これはバックアップなしでデータ"
-"ベースから利用者に関するすべてのデータをクリアします。"
+"あなたは本当にこのユーザを削除したいですか? これはバックアップなしでデータ"
+"ベースからユーザに関するすべてのデータをクリアします。"
#: actions/deleteuser.php:148 lib/deleteuserform.php:77
msgid "Delete this user"
-msgstr "このユーザーを削除"
+msgstr "このユーザを削除"
#: actions/designadminpanel.php:62 lib/accountsettingsaction.php:124
#: lib/adminpanelaction.php:316 lib/groupnav.php:119
@@ -1083,7 +1135,7 @@ msgstr "このつぶやきはお気に入りではありません!"
msgid "Add to favorites"
msgstr "お気に入りに加える"
-#: actions/doc.php:155
+#: actions/doc.php:158
#, php-format
msgid "No such document \"%s\""
msgstr "そのようなドキュメントはありません。\"%s\""
@@ -1096,20 +1148,11 @@ msgstr "アプリケーション編集"
msgid "You must be logged in to edit an application."
msgstr "アプリケーションを編集するにはログインしていなければなりません。"
-#: actions/editapplication.php:77 actions/showapplication.php:94
-msgid "You are not the owner of this application."
-msgstr "このアプリケーションのオーナーではありません。"
-
-#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:163
+#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:166
#: actions/showapplication.php:87
msgid "No such application."
msgstr "そのようなアプリケーションはありません。"
-#: actions/editapplication.php:127 actions/newapplication.php:110
-#: actions/showapplication.php:118 lib/action.php:1195
-msgid "There was a problem with your session token."
-msgstr "あなたのセッショントークンに関する問題がありました。"
-
#: actions/editapplication.php:161
msgid "Use this form to edit your application."
msgstr "このフォームを使ってアプリケーションを編集します。"
@@ -1118,43 +1161,47 @@ msgstr "このフォームを使ってアプリケーションを編集します
msgid "Name is required."
msgstr "名前は必須です。"
-#: actions/editapplication.php:180 actions/newapplication.php:162
+#: actions/editapplication.php:180 actions/newapplication.php:165
msgid "Name is too long (max 255 chars)."
msgstr "名前が長すぎます。(最大255字まで)"
-#: actions/editapplication.php:183 actions/newapplication.php:165
+#: actions/editapplication.php:183 actions/newapplication.php:162
+msgid "Name already in use. Try another one."
+msgstr "そのニックネームは既に使用されています。他のものを試してみて下さい。"
+
+#: actions/editapplication.php:186 actions/newapplication.php:168
msgid "Description is required."
msgstr "概要が必要です。"
-#: actions/editapplication.php:191
+#: actions/editapplication.php:194
msgid "Source URL is too long."
msgstr "ソースURLが長すぎます。"
-#: actions/editapplication.php:197 actions/newapplication.php:182
+#: actions/editapplication.php:200 actions/newapplication.php:185
msgid "Source URL is not valid."
msgstr "ソースURLが不正です。"
-#: actions/editapplication.php:200 actions/newapplication.php:185
+#: actions/editapplication.php:203 actions/newapplication.php:188
msgid "Organization is required."
msgstr "組織が必要です。"
-#: actions/editapplication.php:203 actions/newapplication.php:188
+#: actions/editapplication.php:206 actions/newapplication.php:191
msgid "Organization is too long (max 255 chars)."
msgstr "組織が長すぎます。(最大255字)"
-#: actions/editapplication.php:206 actions/newapplication.php:191
+#: actions/editapplication.php:209 actions/newapplication.php:194
msgid "Organization homepage is required."
msgstr "組織のホームページが必要です。"
-#: actions/editapplication.php:215 actions/newapplication.php:203
+#: actions/editapplication.php:218 actions/newapplication.php:206
msgid "Callback is too long."
msgstr "コールバックが長すぎます。"
-#: actions/editapplication.php:222 actions/newapplication.php:212
+#: actions/editapplication.php:225 actions/newapplication.php:215
msgid "Callback URL is not valid."
msgstr "コールバックURLが不正です。"
-#: actions/editapplication.php:255
+#: actions/editapplication.php:258
msgid "Could not update application."
msgstr "アプリケーションを更新できません。"
@@ -1366,7 +1413,7 @@ msgstr "入ってくるメールアドレスではありません。"
#: actions/emailsettings.php:456 actions/emailsettings.php:478
#: actions/smssettings.php:528 actions/smssettings.php:552
msgid "Couldn't update user record."
-msgstr "利用者レコードを更新できません。"
+msgstr "ユーザレコードを更新できません。"
#: actions/emailsettings.php:459 actions/smssettings.php:531
msgid "Incoming email address removed."
@@ -1435,17 +1482,17 @@ msgstr "%1$s による %2$s 上のお気に入りを更新!"
#: actions/featured.php:69 lib/featureduserssection.php:87
#: lib/publicgroupnav.php:89
msgid "Featured users"
-msgstr "フィーチャーされた利用者"
+msgstr "フィーチャーされたユーザ"
#: actions/featured.php:71
#, php-format
msgid "Featured users, page %d"
-msgstr "フィーチャーされた利用者、ページ %d"
+msgstr "フィーチャーされたユーザ、ページ %d"
#: actions/featured.php:99
#, php-format
msgid "A selection of some great users on %s"
-msgstr "%s 上の優れた利用者の集まり"
+msgstr "%s 上の優れたユーザの集まり"
#: actions/file.php:34
msgid "No notice ID."
@@ -1477,7 +1524,7 @@ msgstr "ローカルサブスクリプションを使用可能です!"
#: actions/finishremotesubscribe.php:99
msgid "That user has blocked you from subscribing."
-msgstr "この利用者はフォローをブロックされています。"
+msgstr "このユーザはフォローをブロックされています。"
#: actions/finishremotesubscribe.php:110
msgid "You are not authorized."
@@ -1527,15 +1574,15 @@ msgstr "管理者だけがグループメンバーをブロックできます。
#: actions/groupblock.php:95
msgid "User is already blocked from group."
-msgstr "利用者はすでにグループからブロックされています。"
+msgstr "ユーザはすでにグループからブロックされています。"
#: actions/groupblock.php:100
msgid "User is not a member of group."
-msgstr "利用者はグループのメンバーではありません。"
+msgstr "ユーザはグループのメンバーではありません。"
#: actions/groupblock.php:136 actions/groupmembers.php:314
msgid "Block user from group"
-msgstr "グループからブロックされた利用者"
+msgstr "グループからユーザをブロック"
#: actions/groupblock.php:162
#, php-format
@@ -1544,12 +1591,12 @@ msgid ""
"will be removed from the group, unable to post, and unable to subscribe to "
"the group in the future."
msgstr ""
-"本当に利用者 %1$s をグループ %2$s からブロックしますか? 彼らはグループから削"
+"本当にユーザ %1$s をグループ %2$s からブロックしますか? 彼らはグループから削"
"除される、投稿できない、グループをフォローできなくなります。"
#: actions/groupblock.php:178
msgid "Do not block this user from this group"
-msgstr "このグループからこの利用者をブロックしない"
+msgstr "このグループからこのユーザをブロックしない"
#: actions/groupblock.php:179
msgid "Block this user from this group"
@@ -1557,7 +1604,7 @@ msgstr "このグループからこのユーザをブロック"
#: actions/groupblock.php:196
msgid "Database error blocking user from group."
-msgstr "グループから利用者ブロックのデータベースエラー"
+msgstr "グループからのブロックユーザのデータベースエラー"
#: actions/groupbyid.php:74 actions/userbyid.php:70
msgid "No ID."
@@ -1602,7 +1649,7 @@ msgstr ""
#: actions/grouplogo.php:178
msgid "User without matching profile."
-msgstr "合っているプロフィールのない利用者"
+msgstr "合っているプロフィールのないユーザ"
#: actions/grouplogo.php:362
msgid "Pick a square area of the image to be the logo."
@@ -1628,7 +1675,7 @@ msgstr "%1$s グループメンバー、ページ %2$d"
#: actions/groupmembers.php:111
msgid "A list of the users in this group."
-msgstr "このグループの利用者のリスト。"
+msgstr "このグループのユーザのリスト。"
#: actions/groupmembers.php:175 lib/action.php:448 lib/groupnav.php:107
msgid "Admin"
@@ -1640,7 +1687,7 @@ msgstr "ブロック"
#: actions/groupmembers.php:441
msgid "Make user an admin of the group"
-msgstr "利用者をグループの管理者にする"
+msgstr "ユーザをグループの管理者にする"
#: actions/groupmembers.php:473
msgid "Make Admin"
@@ -1648,7 +1695,7 @@ msgstr "管理者にする"
#: actions/groupmembers.php:473
msgid "Make this user an admin"
-msgstr "この利用者を管理者にする"
+msgstr "このユーザを管理者にする"
#: actions/grouprss.php:133
#, php-format
@@ -1726,7 +1773,7 @@ msgstr "管理者だけがグループメンバーをアンブロックできま
#: actions/groupunblock.php:95
msgid "User is not blocked from group."
-msgstr "利用者はグループからブロックされていません。"
+msgstr "ユーザはグループからブロックされていません。"
#: actions/groupunblock.php:128 actions/unblock.php:86
msgid "Error removing the block."
@@ -1861,11 +1908,11 @@ msgstr "招待を送りました。"
#: actions/invite.php:112
msgid "Invite new users"
-msgstr "新しい利用者を招待"
+msgstr "新しいユーザを招待"
#: actions/invite.php:128
msgid "You are already subscribed to these users:"
-msgstr "すでにこれらの利用者をフォローしています:"
+msgstr "すでにこれらのユーザをフォローしています:"
#: actions/invite.php:131 actions/invite.php:139 lib/command.php:306
#, php-format
@@ -2086,11 +2133,11 @@ msgstr "アプリケーションを登録するにはログインしていなけ
msgid "Use this form to register a new application."
msgstr "このフォームを使って新しいアプリケーションを登録します。"
-#: actions/newapplication.php:173
+#: actions/newapplication.php:176
msgid "Source URL is required."
msgstr "ソースURLが必要です。"
-#: actions/newapplication.php:255 actions/newapplication.php:264
+#: actions/newapplication.php:258 actions/newapplication.php:267
msgid "Could not create application."
msgstr "アプリケーションを作成できません。"
@@ -2108,7 +2155,7 @@ msgstr "新しいメッセージ"
#: actions/newmessage.php:121 actions/newmessage.php:161 lib/command.php:358
msgid "You can't send a message to this user."
-msgstr "この利用者にメッセージを送ることはできません。"
+msgstr "このユーザにメッセージを送ることはできません。"
#: actions/newmessage.php:144 actions/newnotice.php:136 lib/command.php:342
#: lib/command.php:475
@@ -2195,7 +2242,7 @@ msgstr "\"%2$s\" 上の検索語 \"$1$s\" に一致するすべての更新"
msgid ""
"This user doesn't allow nudges or hasn't confirmed or set his email yet."
msgstr ""
-"この利用者は、合図を許可していないか、確認されていた状態でないか、メール設定"
+"このユーザは、合図を許可していないか、確認されていた状態でないか、メール設定"
"をしていません。"
#: actions/nudge.php:94
@@ -2223,30 +2270,30 @@ msgstr "あなたが登録したアプリケーション"
msgid "You have not registered any applications yet."
msgstr "あなたはまだなんのアプリケーションも登録していません。"
-#: actions/oauthconnectionssettings.php:71
+#: actions/oauthconnectionssettings.php:72
msgid "Connected applications"
msgstr "接続されたアプリケーション"
-#: actions/oauthconnectionssettings.php:87
+#: actions/oauthconnectionssettings.php:83
msgid "You have allowed the following applications to access you account."
msgstr "あなたのアカウントにアクセスする以下のアプリケーションを許可しました。"
-#: actions/oauthconnectionssettings.php:170
+#: actions/oauthconnectionssettings.php:175
msgid "You are not a user of that application."
-msgstr "あなたはそのアプリケーションの利用者ではありません。"
+msgstr "あなたはそのアプリケーションのユーザではありません。"
-#: actions/oauthconnectionssettings.php:180
+#: actions/oauthconnectionssettings.php:186
msgid "Unable to revoke access for app: "
msgstr "アプリケーションのための取消しアクセスができません: "
-#: actions/oauthconnectionssettings.php:192
+#: actions/oauthconnectionssettings.php:198
#, php-format
msgid "You have not authorized any applications to use your account."
msgstr ""
"あなたは、どんなアプリケーションもあなたのアカウントを使用するのを認可してい"
"ません。"
-#: actions/oauthconnectionssettings.php:205
+#: actions/oauthconnectionssettings.php:211
msgid "Developers can edit the registration settings for their applications "
msgstr "開発者は彼らのアプリケーションのために登録設定を編集できます "
@@ -2314,7 +2361,7 @@ msgstr "URL 短縮サービスが長すぎます。(最大50字)"
#: actions/otp.php:69
msgid "No user ID specified."
-msgstr "利用者IDの記述がありません。"
+msgstr "ユーザIDの記述がありません。"
#: actions/otp.php:83
msgid "No login token specified."
@@ -2711,7 +2758,7 @@ msgstr "不正なタグ: \"%s\""
#: actions/profilesettings.php:302
msgid "Couldn't update user for autosubscribe."
-msgstr "自動フォローのための利用者を更新できませんでした。"
+msgstr "自動フォローのためのユーザを更新できませんでした。"
#: actions/profilesettings.php:359
msgid "Couldn't save location prefs."
@@ -2747,19 +2794,19 @@ msgstr "パブリックタイムライン、ページ %d"
msgid "Public timeline"
msgstr "パブリックタイムライン"
-#: actions/public.php:151
+#: actions/public.php:159
msgid "Public Stream Feed (RSS 1.0)"
msgstr "パブリックストリームフィード (RSS 1.0)"
-#: actions/public.php:155
+#: actions/public.php:163
msgid "Public Stream Feed (RSS 2.0)"
msgstr "パブリックストリームフィード (RSS 2.0)"
-#: actions/public.php:159
+#: actions/public.php:167
msgid "Public Stream Feed (Atom)"
msgstr "パブリックストリームフィード (Atom)"
-#: actions/public.php:179
+#: actions/public.php:187
#, php-format
msgid ""
"This is the public timeline for %%site.name%% but no one has posted anything "
@@ -2768,11 +2815,11 @@ msgstr ""
"これは %%site.name%% のパブリックタイムラインです、しかしまだ誰も投稿していま"
"せん。"
-#: actions/public.php:182
+#: actions/public.php:190
msgid "Be the first to post!"
msgstr "投稿する1番目になってください!"
-#: actions/public.php:186
+#: actions/public.php:194
#, php-format
msgid ""
"Why not [register an account](%%action.register%%) and be the first to post!"
@@ -2780,7 +2827,7 @@ msgstr ""
"なぜ [アカウント登録](%%action.register%%) しないのですか、そして最初の投稿を"
"してください!"
-#: actions/public.php:233
+#: actions/public.php:241
#, php-format
msgid ""
"This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2794,7 +2841,7 @@ msgstr ""
"族そして同僚などについてのつぶやきを共有しましょう! ([もっと読む](%%doc.help%"
"%))"
-#: actions/public.php:238
+#: actions/public.php:246
#, php-format
msgid ""
"This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2863,7 +2910,7 @@ msgstr "確認コードが古すぎます。もう一度やり直してくださ
#: actions/recoverpassword.php:111
msgid "Could not update user with confirmed email address."
-msgstr "確認されたメールアドレスで利用者を更新できません。"
+msgstr "確認されたメールアドレスでユーザを更新できません。"
#: actions/recoverpassword.php:152
msgid ""
@@ -2923,11 +2970,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."
@@ -3041,7 +3088,7 @@ msgid ""
msgstr "個人情報を除く: パスワード、メールアドレス、IMアドレス、電話番号"
#: actions/register.php:538
-#, fuzzy, php-format
+#, php-format
msgid ""
"Congratulations, %1$s! And welcome to %%%%site.name%%%%. From here, you may "
"want to...\n"
@@ -3058,15 +3105,15 @@ msgid ""
"\n"
"Thanks for signing up and we hope you enjoy using this service."
msgstr ""
-"%1$s さん、おめでとうございます!%%%%site.name%%%% へようこそ。以下のようにし"
-"て始めることができます。\n"
+"%1$s さん、おめでとうございます!%%%%site.name%%%% へようこそ。次のようにして"
+"始めることができます。\n"
"\n"
"* [あなたのプロファイル](%2$s) を参照して最初のメッセージを投稿する\n"
"* [Jabber や GTalk のアドレス](%%%%action.imsettings%%%%) を追加して、インス"
"タントメッセージを通してつぶやきを送れるようにする\n"
"* あなたが知っている人やあなたと同じ興味をもっている人を[検索](%%%%action."
"peoplesearch%%%%) する\n"
-"* [プロファイル設定](%%%%action.profilesettings%%%%) を更新して他の利用者にあ"
+"* [プロファイル設定](%%%%action.profilesettings%%%%) を更新して他のユーザにあ"
"なたのことをより詳しく知らせる\n"
"* 探している機能について[オンライン文書](%%%%doc.help%%%%) を読む\n"
"\n"
@@ -3103,7 +3150,7 @@ msgstr "リモートユーザーをフォロー"
#: actions/remotesubscribe.php:129
msgid "User nickname"
-msgstr "利用者のニックネーム"
+msgstr "ユーザのニックネーム"
#: actions/remotesubscribe.php:130
msgid "Nickname of the user you want to follow"
@@ -3157,7 +3204,7 @@ msgstr "自分のつぶやきは繰り返せません。"
msgid "You already repeated that notice."
msgstr "すでにそのつぶやきを繰り返しています。"
-#: actions/repeat.php:114 lib/noticelist.php:626
+#: actions/repeat.php:114 lib/noticelist.php:642
msgid "Repeated"
msgstr "繰り返された"
@@ -3207,7 +3254,7 @@ msgid ""
"[join groups](%%action.groups%%)."
msgstr ""
"あなたは、他のユーザを会話をするか、多くの人々をフォローするか、または [グ"
-"ループに加わる] (%%action.groups%%)ことができます。"
+"ループに加わる](%%action.groups%%)ことができます。"
#: actions/replies.php:205
#, php-format
@@ -3223,13 +3270,17 @@ msgstr ""
msgid "Replies to %1$s on %2$s!"
msgstr "%2$s 上の %1$s への返信!"
+#: actions/rsd.php:146 actions/version.php:157
+msgid "StatusNet"
+msgstr "StatusNet"
+
#: actions/sandbox.php:65 actions/unsandbox.php:65
msgid "You cannot sandbox users on this site."
msgstr "あなたはこのサイトのサンドボックスユーザができません。"
#: actions/sandbox.php:72
msgid "User is already sandboxed."
-msgstr "利用者はすでにサンドボックスです。"
+msgstr "ユーザはすでにサンドボックスです。"
#: actions/sessionsadminpanel.php:54 actions/sessionsadminpanel.php:170
#: lib/adminpanelaction.php:336
@@ -3237,9 +3288,8 @@ msgid "Sessions"
msgstr "セッション"
#: actions/sessionsadminpanel.php:65
-#, fuzzy
msgid "Session settings for this StatusNet site."
-msgstr "この StatusNet サイトのデザイン設定。"
+msgstr "この StatusNet サイトのセッション設定。"
#: actions/sessionsadminpanel.php:175
msgid "Handle sessions"
@@ -3266,71 +3316,71 @@ msgstr "サイト設定の保存"
msgid "You must be logged in to view an application."
msgstr "!!アプリケーションを見るためにはログインしていなければなりません。"
-#: actions/showapplication.php:158
+#: actions/showapplication.php:157
msgid "Application profile"
msgstr "アプリケーションプロファイル"
-#: actions/showapplication.php:160 lib/applicationeditform.php:180
+#: actions/showapplication.php:159 lib/applicationeditform.php:180
msgid "Icon"
msgstr "アイコン"
-#: actions/showapplication.php:170 actions/version.php:195
+#: actions/showapplication.php:169 actions/version.php:195
#: lib/applicationeditform.php:195
msgid "Name"
msgstr "名前"
-#: actions/showapplication.php:179 lib/applicationeditform.php:222
+#: actions/showapplication.php:178 lib/applicationeditform.php:222
msgid "Organization"
msgstr "組織"
-#: actions/showapplication.php:188 actions/version.php:198
+#: actions/showapplication.php:187 actions/version.php:198
#: lib/applicationeditform.php:209 lib/groupeditform.php:172
msgid "Description"
msgstr "概要"
-#: actions/showapplication.php:193 actions/showgroup.php:429
+#: actions/showapplication.php:192 actions/showgroup.php:429
#: lib/profileaction.php:174
msgid "Statistics"
msgstr "統計データ"
-#: actions/showapplication.php:204
+#: actions/showapplication.php:203
#, php-format
-msgid "created by %1$s - %2$s access by default - %3$d users"
+msgid "Created by %1$s - %2$s access by default - %3$d users"
msgstr ""
-#: actions/showapplication.php:214
+#: actions/showapplication.php:213
msgid "Application actions"
msgstr "アプリケーションアクション"
-#: actions/showapplication.php:233
+#: actions/showapplication.php:236
msgid "Reset key & secret"
msgstr "key と secret のリセット"
-#: actions/showapplication.php:241
+#: actions/showapplication.php:261
msgid "Application info"
msgstr "アプリケーション情報"
-#: actions/showapplication.php:243
+#: actions/showapplication.php:263
msgid "Consumer key"
msgstr ""
-#: actions/showapplication.php:248
+#: actions/showapplication.php:268
msgid "Consumer secret"
msgstr ""
-#: actions/showapplication.php:253
+#: actions/showapplication.php:273
msgid "Request token URL"
msgstr "リクエストトークンURL"
-#: actions/showapplication.php:258
+#: actions/showapplication.php:278
msgid "Access token URL"
msgstr "アクセストークンURL"
-#: actions/showapplication.php:263
+#: actions/showapplication.php:283
msgid "Authorize URL"
msgstr "承認URL"
-#: actions/showapplication.php:268
+#: actions/showapplication.php:288
msgid ""
"Note: We support HMAC-SHA1 signatures. We do not support the plaintext "
"signature method."
@@ -3338,6 +3388,11 @@ msgstr ""
"注意: 私たちはHMAC-SHA1署名をサポートします。 私たちは平文署名メソッドをサ"
"ポートしません。"
+#: actions/showapplication.php:309
+#, fuzzy
+msgid "Are you sure you want to reset your consumer key and secret?"
+msgstr "本当にこのつぶやきを削除しますか?"
+
#: actions/showfavorites.php:79
#, php-format
msgid "%1$s's favorite notices, page %2$d"
@@ -3554,12 +3609,12 @@ msgstr "%sのつぶやきフィード (Atom)"
msgid "FOAF for %s"
msgstr "%s の FOAF"
-#: actions/showstream.php:191
+#: actions/showstream.php:200
#, php-format
msgid "This is the timeline for %1$s but %2$s hasn't posted anything yet."
msgstr "これは %1$s のタイムラインですが、%2$s はまだなにも投稿していません。"
-#: actions/showstream.php:196
+#: actions/showstream.php:205
msgid ""
"Seen anything interesting recently? You haven't posted any notices yet, now "
"would be a good time to start :)"
@@ -3567,7 +3622,7 @@ msgstr ""
"最近おもしろいものは何でしょう? あなたは少しのつぶやきも投稿していませんが、"
"いまは始める良い時でしょう:)"
-#: actions/showstream.php:198
+#: actions/showstream.php:207
#, php-format
msgid ""
"You can try to nudge %1$s or [post something to his or her attention](%%%%"
@@ -3576,7 +3631,7 @@ msgstr ""
"あなたは、%1$s に合図するか、[またはその人宛に何かを投稿](%%%%action."
"newnotice%%%%?status_textarea=%2$s) することができます。"
-#: actions/showstream.php:234
+#: actions/showstream.php:243
#, php-format
msgid ""
"**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3584,13 +3639,13 @@ msgid ""
"[StatusNet](http://status.net/) tool. [Join now](%%%%action.register%%%%) to "
"follow **%s**'s notices and many more! ([Read more](%%%%doc.help%%%%))"
msgstr ""
-"**%s** は %%site.name%% 上のアカウントです。フリーソフトウェアツール"
+"**%s** は %%%%site.name%%%% 上のアカウントです。フリーソフトウェアツール"
"[StatusNet](http://status.net/)を基にした[マイクロブロギング](http://en."
"wikipedia.org/wiki/Micro-blogging) サービス。[今すぐ参加](%%%%action.register"
"%%%%)して、**%s** のつぶやきなどをフォローしましょう! ([もっと読む](%%%%doc."
"help%%%%))"
-#: actions/showstream.php:239
+#: actions/showstream.php:248
#, php-format
msgid ""
"**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3601,7 +3656,7 @@ msgstr ""
"[StatusNet](http://status.net/)を基にした[マイクロブロギング](http://en."
"wikipedia.org/wiki/Micro-blogging) サービス。"
-#: actions/showstream.php:296
+#: actions/showstream.php:305
#, php-format
msgid "Repeat of %s"
msgstr "%s の繰り返し"
@@ -3612,7 +3667,7 @@ msgstr "あなたはこのサイトでユーザを黙らせることができま
#: actions/silence.php:72
msgid "User is already silenced."
-msgstr "利用者は既に黙っています。"
+msgstr "ユーザは既に黙っています。"
#: actions/siteadminpanel.php:69
msgid "Basic settings for this StatusNet site."
@@ -3820,7 +3875,7 @@ msgstr "これはすでにあなたの電話番号です。"
#: actions/smssettings.php:321
msgid "That phone number already belongs to another user."
-msgstr "この電話番号はすでに他の利用者に使われています。"
+msgstr "この電話番号はすでに他のユーザに使われています。"
#: actions/smssettings.php:347
msgid ""
@@ -3947,7 +4002,7 @@ msgid ""
msgstr ""
"今、だれのつぶやきも聞いていないなら、あなたが知っている人々をフォローしてみ"
"てください。[ピープル検索](%%action.peoplesearch%%)を試してください。そして、"
-"あなたが興味を持っているグループと私たちの[フィーチャーされた利用者](%%"
+"あなたが興味を持っているグループと私たちの[フィーチャーされたユーザ](%%"
"action.featured%%)のメンバーを探してください。もし[Twitterユーザ](%%action."
"twittersettings%%)であれば、あなたは自動的に既にフォローしている人々をフォ"
"ローできます。"
@@ -3996,7 +4051,7 @@ msgstr "タグ %s"
#: actions/tagother.php:77 lib/userprofile.php:75
msgid "User profile"
-msgstr "利用者プロファイル"
+msgstr "ユーザプロファイル"
#: actions/tagother.php:81 lib/userprofile.php:102
msgid "Photo"
@@ -4004,14 +4059,14 @@ 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 ""
@@ -4042,11 +4097,11 @@ msgstr "あなたはそのユーザをブロックしていません。"
#: actions/unsandbox.php:72
msgid "User is not sandboxed."
-msgstr "利用者はサンドボックスではありません。"
+msgstr "ユーザはサンドボックスではありません。"
#: actions/unsilence.php:72
msgid "User is not silenced."
-msgstr "利用者はサイレンスではありません。"
+msgstr "ユーザはサイレンスではありません。"
#: actions/unsubscribe.php:77
msgid "No profile id in request."
@@ -4067,11 +4122,11 @@ msgstr ""
#: actions/useradminpanel.php:58 lib/adminpanelaction.php:321
#: lib/personalgroupnav.php:115
msgid "User"
-msgstr "利用者"
+msgstr "ユーザ"
#: actions/useradminpanel.php:69
msgid "User settings for this StatusNet site."
-msgstr "この StatusNet サイトの利用者設定。"
+msgstr "この StatusNet サイトのユーザ設定。"
#: actions/useradminpanel.php:148
msgid "Invalid bio limit. Must be numeric."
@@ -4084,7 +4139,7 @@ msgstr "不正なウェルカムテキスト。最大長は255字です。"
#: actions/useradminpanel.php:164
#, php-format
msgid "Invalid default subscripton: '%1$s' is not user."
-msgstr "不正なデフォルトフォローです: '%1$s' は利用者ではありません。"
+msgstr "不正なデフォルトフォローです: '%1$s' はユーザではありません。"
#: actions/useradminpanel.php:217 lib/accountsettingsaction.php:108
#: lib/personalgroupnav.php:109
@@ -4101,15 +4156,15 @@ msgstr "プロファイル自己紹介の最大文字長。"
#: actions/useradminpanel.php:230
msgid "New users"
-msgstr "新しい利用者"
+msgstr "新しいユーザ"
#: actions/useradminpanel.php:234
msgid "New user welcome"
-msgstr "新しい利用者を歓迎"
+msgstr "新しいユーザを歓迎"
#: actions/useradminpanel.php:235
msgid "Welcome text for new users (Max 255 chars)."
-msgstr "新しい利用者へのウェルカムテキスト (最大255字)。"
+msgstr "新しいユーザへのウェルカムテキスト (最大255字)。"
#: actions/useradminpanel.php:240
msgid "Default subscription"
@@ -4117,7 +4172,7 @@ msgstr "デフォルトフォロー"
#: actions/useradminpanel.php:241
msgid "Automatically subscribe new users to this user."
-msgstr "自動的にこの利用者に新しい利用者をフォローしてください。"
+msgstr "自動的にこのユーザに新しいユーザをフォローしてください。"
#: actions/useradminpanel.php:250
msgid "Invitations"
@@ -4129,7 +4184,7 @@ msgstr "招待が可能"
#: actions/useradminpanel.php:257
msgid "Whether to allow users to invite new users."
-msgstr "利用者が新しい利用者を招待するのを許容するかどうか。"
+msgstr "ユーザが新しいユーザを招待するのを許容するかどうか。"
#: actions/userauthorization.php:105
msgid "Authorize subscription"
@@ -4282,10 +4337,6 @@ msgstr ""
"This site is powered by %1$s version %2$s, Copyright 2008-2010 StatusNet, "
"Inc. and contributors."
-#: actions/version.php:157
-msgid "StatusNet"
-msgstr "StatusNet"
-
#: actions/version.php:161
msgid "Contributors"
msgstr "コントリビュータ"
@@ -4387,7 +4438,7 @@ msgstr "つぶやきを保存する際に問題が発生しました。長すぎ
#: classes/Notice.php:218
msgid "Problem saving notice. Unknown user."
-msgstr "つぶやきを保存する際に問題が発生しました。不明な利用者です。"
+msgstr "つぶやきを保存する際に問題が発生しました。不明なユーザです。"
#: classes/Notice.php:223
msgid ""
@@ -4411,21 +4462,21 @@ msgstr "あなたはこのサイトでつぶやきを投稿するのが禁止さ
msgid "Problem saving notice."
msgstr "つぶやきを保存する際に問題が発生しました。"
-#: classes/Notice.php:790
+#: classes/Notice.php:788
msgid "Problem saving group inbox."
msgstr "グループ受信箱を保存する際に問題が発生しました。"
-#: classes/Notice.php:850
+#: classes/Notice.php:848
#, php-format
msgid "DB error inserting reply: %s"
msgstr "返信を追加する際にデータベースエラー : %s"
-#: classes/Notice.php:1233
+#: classes/Notice.php:1231
#, php-format
msgid "RT @%1$s %2$s"
msgstr ""
-#: classes/User.php:382
+#: classes/User.php:385
#, php-format
msgid "Welcome to %1$s, @%2$s!"
msgstr "ようこそ %1$s、@%2$s!"
@@ -4685,7 +4736,7 @@ msgstr "デザイン設定"
#: lib/adminpanelaction.php:322
msgid "User configuration"
-msgstr "利用者設定"
+msgstr "ユーザ設定"
#: lib/adminpanelaction.php:327
msgid "Access configuration"
@@ -4696,15 +4747,16 @@ msgid "Paths configuration"
msgstr "パス設定"
#: lib/adminpanelaction.php:337
-#, fuzzy
msgid "Sessions configuration"
-msgstr "デザイン設定"
+msgstr "セッション設定"
-#: lib/apiauth.php:99
+#: lib/apiauth.php:95
msgid "API resource requires read-write access, but you only have read access."
msgstr ""
+"APIリソースは読み書きアクセスが必要です、しかしあなたは読みアクセスしか持って"
+"いません。"
-#: lib/apiauth.php:279
+#: lib/apiauth.php:273
#, php-format
msgid "Failed API auth attempt, nickname = %1$s, proxy = %2$s, ip = %3$s"
msgstr ""
@@ -4852,7 +4904,7 @@ msgstr "その ID によるつぶやきは存在していません"
#: lib/command.php:168 lib/command.php:406 lib/command.php:467
#: lib/command.php:523
msgid "User has no last notice"
-msgstr "利用者はまだつぶやいていません"
+msgstr "ユーザはまだつぶやいていません"
#: lib/command.php:190
msgid "Notice marked as fave."
@@ -4865,7 +4917,7 @@ msgstr "あなたは既にそのグループに参加しています。"
#: lib/command.php:231
#, php-format
msgid "Could not join user %s to group %s"
-msgstr "利用者 %s はグループ %s に参加できません"
+msgstr "ユーザ %s はグループ %s に参加できません"
#: lib/command.php:236
#, php-format
@@ -4875,7 +4927,7 @@ msgstr "%s はグループ %s に参加しました"
#: lib/command.php:275
#, php-format
msgid "Could not remove user %s to group %s"
-msgstr "利用者 %s をグループ %s から削除することができません"
+msgstr "ユーザ %s をグループ %s から削除することができません"
#: lib/command.php:280
#, php-format
@@ -4949,7 +5001,7 @@ msgstr "つぶやき保存エラー。"
#: lib/command.php:547
msgid "Specify the name of the user to subscribe to"
-msgstr "フォローする利用者の名前を指定してください"
+msgstr "フォローするユーザの名前を指定してください"
#: lib/command.php:554
#, php-format
@@ -5062,21 +5114,21 @@ msgid ""
"tracking - not yet implemented.\n"
msgstr ""
-#: lib/common.php:131
+#: lib/common.php:135
msgid "No configuration file found. "
msgstr "コンフィギュレーションファイルがありません。 "
-#: lib/common.php:132
+#: lib/common.php:136
msgid "I looked for configuration files in the following places: "
msgstr "私は以下の場所でコンフィギュレーションファイルを探しました: "
-#: lib/common.php:134
+#: lib/common.php:138
msgid "You may wish to run the installer to fix this."
msgstr ""
"あなたは、これを修理するためにインストーラを動かしたがっているかもしれませ"
"ん。"
-#: lib/common.php:135
+#: lib/common.php:139
msgid "Go to the installer."
msgstr "インストーラへ。"
@@ -5209,7 +5261,7 @@ msgstr "ブロック"
#: lib/groupnav.php:102
#, php-format
msgid "%s blocked users"
-msgstr "%s ブロック利用者"
+msgstr "%s ブロックユーザ"
#: lib/groupnav.php:108
#, php-format
@@ -5558,14 +5610,14 @@ msgstr ""
#: lib/mailbox.php:89
msgid "Only the user can read their own mailboxes."
-msgstr "利用者だけがそれら自身のメールボックスを読むことができます。"
+msgstr "ユーザだけがかれら自身のメールボックスを読むことができます。"
#: lib/mailbox.php:139
msgid ""
"You have no private messages. You can send private message to engage other "
"users in conversation. People can send you messages for your eyes only."
msgstr ""
-"あなたには、プライベートメッセージが全くありません。あなたは他の利用者を会話"
+"あなたには、プライベートメッセージが全くありません。あなたは他のユーザを会話"
"に引き込むプライベートメッセージを送ることができます。人々はあなただけへの"
"メッセージを送ることができます。"
@@ -5726,23 +5778,23 @@ msgstr "西"
msgid "at"
msgstr "at"
-#: lib/noticelist.php:531
+#: lib/noticelist.php:547
msgid "in context"
msgstr ""
-#: lib/noticelist.php:556
+#: lib/noticelist.php:572
msgid "Repeated by"
msgstr ""
-#: lib/noticelist.php:582
+#: lib/noticelist.php:598
msgid "Reply to this notice"
msgstr "このつぶやきへ返信"
-#: lib/noticelist.php:583
+#: lib/noticelist.php:599
msgid "Reply"
msgstr "返信"
-#: lib/noticelist.php:625
+#: lib/noticelist.php:641
msgid "Notice repeated"
msgstr "つぶやきを繰り返しました"
@@ -5837,7 +5889,7 @@ msgstr "すべてのフォローされている"
#: lib/profileaction.php:178
msgid "User ID"
-msgstr "利用者ID"
+msgstr "ユーザID"
#: lib/profileaction.php:183
msgid "Member since"
@@ -5883,6 +5935,10 @@ msgstr "このつぶやきを繰り返しますか?"
msgid "Repeat this notice"
msgstr "このつぶやきを繰り返す"
+#: lib/router.php:665
+msgid "No single user defined for single-user mode."
+msgstr "single-user モードのためのシングルユーザが定義されていません。"
+
#: lib/sandboxform.php:67
msgid "Sandbox"
msgstr "サンドボックス"
@@ -5956,7 +6012,7 @@ msgstr "すでにフォローしています!"
#: lib/subs.php:56
msgid "User has blocked you."
-msgstr "利用者はあなたをブロックしました。"
+msgstr "ユーザはあなたをブロックしました。"
#: lib/subs.php:63
msgid "Could not subscribe."
@@ -6047,49 +6103,49 @@ msgstr "メッセージ"
#: lib/userprofile.php:311
#, fuzzy
msgid "Moderate"
-msgstr "司会"
+msgstr "管理"
-#: lib/util.php:868
+#: lib/util.php:867
msgid "a few seconds ago"
msgstr "数秒前"
-#: lib/util.php:870
+#: lib/util.php:869
msgid "about a minute ago"
msgstr "約 1 分前"
-#: lib/util.php:872
+#: lib/util.php:871
#, php-format
msgid "about %d minutes ago"
msgstr "約 %d 分前"
-#: lib/util.php:874
+#: lib/util.php:873
msgid "about an hour ago"
msgstr "約 1 時間前"
-#: lib/util.php:876
+#: lib/util.php:875
#, php-format
msgid "about %d hours ago"
msgstr "約 %d 時間前"
-#: lib/util.php:878
+#: lib/util.php:877
msgid "about a day ago"
msgstr "約 1 日前"
-#: lib/util.php:880
+#: lib/util.php:879
#, php-format
msgid "about %d days ago"
msgstr "約 %d 日前"
-#: lib/util.php:882
+#: lib/util.php:881
msgid "about a month ago"
msgstr "約 1 ヵ月前"
-#: lib/util.php:884
+#: lib/util.php:883
#, php-format
msgid "about %d months ago"
msgstr "約 %d ヵ月前"
-#: lib/util.php:886
+#: lib/util.php:885
msgid "about a year ago"
msgstr "約 1 年前"
diff --git a/locale/ko/LC_MESSAGES/statusnet.po b/locale/ko/LC_MESSAGES/statusnet.po
index 9b939636a..3735e6f55 100644
--- a/locale/ko/LC_MESSAGES/statusnet.po
+++ b/locale/ko/LC_MESSAGES/statusnet.po
@@ -7,12 +7,12 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-01-30 23:41+0000\n"
-"PO-Revision-Date: 2010-01-30 23:42:13+0000\n"
+"POT-Creation-Date: 2010-02-04 10:31+0000\n"
+"PO-Revision-Date: 2010-02-04 10:33:04+0000\n"
"Language-Team: Korean\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.16alpha (r61734); Translate extension (2010-01-16)\n"
+"X-Generator: MediaWiki 1.16alpha (r61969); Translate extension (2010-01-16)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: ko\n"
"X-Message-Group: out-statusnet\n"
@@ -99,7 +99,7 @@ msgstr "그러한 태그가 없습니다."
#: actions/favoritesrss.php:74 actions/foaf.php:40 actions/foaf.php:58
#: actions/microsummary.php:62 actions/newmessage.php:116 actions/otp.php:76
#: actions/remotesubscribe.php:145 actions/remotesubscribe.php:154
-#: actions/replies.php:73 actions/repliesrss.php:38
+#: actions/replies.php:73 actions/repliesrss.php:38 actions/rsd.php:116
#: actions/showfavorites.php:105 actions/userbyid.php:74
#: actions/usergroups.php:91 actions/userrss.php:38 actions/xrds.php:71
#: lib/command.php:163 lib/command.php:302 lib/command.php:355
@@ -156,7 +156,7 @@ msgid ""
"his or her attention](%%%%action.newnotice%%%%?status_textarea=%3$s)."
msgstr ""
-#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:202
+#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:211
#, php-format
msgid ""
"Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
@@ -393,8 +393,8 @@ msgstr "별명이 이미 사용중 입니다. 다른 별명을 시도해 보십
msgid "Not a valid nickname."
msgstr "유효한 별명이 아닙니다"
-#: actions/apigroupcreate.php:196 actions/editapplication.php:212
-#: actions/editgroup.php:195 actions/newapplication.php:200
+#: actions/apigroupcreate.php:196 actions/editapplication.php:215
+#: actions/editgroup.php:195 actions/newapplication.php:203
#: actions/newgroup.php:139 actions/profilesettings.php:222
#: actions/register.php:217
msgid "Homepage is not a valid URL."
@@ -406,8 +406,8 @@ msgstr "홈페이지 주소형식이 올바르지 않습니다."
msgid "Full name is too long (max 255 chars)."
msgstr "실명이 너무 깁니다. (최대 255글자)"
-#: actions/apigroupcreate.php:213 actions/editapplication.php:187
-#: actions/newapplication.php:169
+#: actions/apigroupcreate.php:213 actions/editapplication.php:190
+#: actions/newapplication.php:172
#, fuzzy, php-format
msgid "Description is too long (max %d chars)."
msgstr "설명이 너무 길어요. (최대 140글자)"
@@ -487,18 +487,23 @@ msgstr "%s 그룹"
msgid "groups on %s"
msgstr "그룹 행동"
-#: actions/apioauthauthorize.php:108 actions/apioauthauthorize.php:114
-msgid "Bad request."
+#: actions/apioauthauthorize.php:101
+msgid "No oauth_token parameter provided."
msgstr ""
-#: actions/apioauthauthorize.php:134 actions/avatarsettings.php:268
+#: actions/apioauthauthorize.php:106
+#, fuzzy
+msgid "Invalid token."
+msgstr "옳지 않은 크기"
+
+#: actions/apioauthauthorize.php:123 actions/avatarsettings.php:268
#: actions/deletenotice.php:157 actions/disfavor.php:74
-#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:50
+#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:54
#: actions/groupblock.php:66 actions/grouplogo.php:309
#: actions/groupunblock.php:66 actions/imsettings.php:206
#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
-#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:139
+#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:135
#: actions/othersettings.php:145 actions/passwordsettings.php:138
#: actions/profilesettings.php:194 actions/recoverpassword.php:337
#: actions/register.php:165 actions/remotesubscribe.php:77
@@ -509,76 +514,84 @@ msgstr ""
msgid "There was a problem with your session token. Try again, please."
msgstr "세션토큰에 문제가 있습니다. 다시 시도해주세요."
-#: actions/apioauthauthorize.php:146
+#: actions/apioauthauthorize.php:135
#, fuzzy
msgid "Invalid nickname / password!"
msgstr "사용자 이름이나 비밀 번호가 틀렸습니다."
-#: actions/apioauthauthorize.php:170
+#: actions/apioauthauthorize.php:159
#, fuzzy
msgid "Database error deleting OAuth application user."
msgstr "사용자 세팅 오류"
-#: actions/apioauthauthorize.php:196
+#: actions/apioauthauthorize.php:185
#, fuzzy
msgid "Database error inserting OAuth application user."
msgstr "해쉬테그를 추가 할 때에 데이타베이스 에러 : %s"
-#: actions/apioauthauthorize.php:231
+#: actions/apioauthauthorize.php:214
#, php-format
msgid ""
"The request token %s has been authorized. Please exchange it for an access "
"token."
msgstr ""
-#: actions/apioauthauthorize.php:241
+#: actions/apioauthauthorize.php:227
#, php-format
-msgid "The request token %s has been denied."
+msgid "The request token %s has been denied and revoked."
msgstr ""
-#: actions/apioauthauthorize.php:246 actions/avatarsettings.php:281
+#: actions/apioauthauthorize.php:232 actions/avatarsettings.php:281
#: actions/designadminpanel.php:103 actions/editapplication.php:139
#: actions/emailsettings.php:256 actions/grouplogo.php:319
#: actions/imsettings.php:220 actions/newapplication.php:121
-#: actions/oauthconnectionssettings.php:151 actions/recoverpassword.php:44
+#: actions/oauthconnectionssettings.php:147 actions/recoverpassword.php:44
#: actions/smssettings.php:248 lib/designsettings.php:304
msgid "Unexpected form submission."
msgstr "잘못된 폼 제출"
-#: actions/apioauthauthorize.php:273
+#: actions/apioauthauthorize.php:259
msgid "An application would like to connect to your account"
msgstr ""
-#: actions/apioauthauthorize.php:290
+#: actions/apioauthauthorize.php:276
msgid "Allow or deny access"
msgstr ""
-#: actions/apioauthauthorize.php:320 lib/action.php:441
+#: actions/apioauthauthorize.php:292
+#, php-format
+msgid ""
+"The application <strong>%1$s</strong> by <strong>%2$s</strong> would like "
+"the ability to <strong>%3$s</strong> your %4$s account data. You should only "
+"give access to your %4$s account to third parties you trust."
+msgstr ""
+
+#: actions/apioauthauthorize.php:310 lib/action.php:441
msgid "Account"
msgstr "계정"
-#: actions/apioauthauthorize.php:323 actions/login.php:230
+#: actions/apioauthauthorize.php:313 actions/login.php:230
#: actions/profilesettings.php:106 actions/register.php:424
#: actions/showgroup.php:236 actions/tagother.php:94 lib/groupeditform.php:152
#: lib/userprofile.php:131
msgid "Nickname"
msgstr "별명"
-#: actions/apioauthauthorize.php:326 actions/login.php:233
+#: actions/apioauthauthorize.php:316 actions/login.php:233
#: actions/register.php:429 lib/accountsettingsaction.php:116
msgid "Password"
msgstr "비밀 번호"
-#: actions/apioauthauthorize.php:338
+#: actions/apioauthauthorize.php:328
msgid "Deny"
msgstr ""
-#: actions/apioauthauthorize.php:344
+#: actions/apioauthauthorize.php:334
#, fuzzy
msgid "Allow"
msgstr "모든 것"
-#: actions/apioauthauthorize.php:361
+#: actions/apioauthauthorize.php:351
msgid "Allow or deny access to your account information."
msgstr ""
@@ -752,8 +765,8 @@ msgstr "원래 설정"
msgid "Preview"
msgstr "미리보기"
-#: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:608
+#: actions/avatarsettings.php:149 actions/showapplication.php:252
+#: lib/deleteuserform.php:66 lib/noticelist.php:624
msgid "Delete"
msgstr "삭제"
@@ -802,8 +815,9 @@ msgid ""
"will not be notified of any @-replies from them."
msgstr ""
-#: actions/block.php:143 actions/deletenotice.php:145
-#: actions/deleteuser.php:147 actions/groupblock.php:178
+#: actions/block.php:143 actions/deleteapplication.php:153
+#: actions/deletenotice.php:145 actions/deleteuser.php:147
+#: actions/groupblock.php:178
msgid "No"
msgstr "아니오"
@@ -812,9 +826,9 @@ msgstr "아니오"
msgid "Do not block this user"
msgstr "이 사용자를 차단해제합니다."
-#: actions/block.php:144 actions/deletenotice.php:146
-#: actions/deleteuser.php:148 actions/groupblock.php:179
-#: lib/repeatform.php:132
+#: actions/block.php:144 actions/deleteapplication.php:158
+#: actions/deletenotice.php:146 actions/deleteuser.php:148
+#: actions/groupblock.php:179 lib/repeatform.php:132
msgid "Yes"
msgstr "네, 맞습니다."
@@ -923,6 +937,50 @@ msgstr "인증 코드"
msgid "Notices"
msgstr "통지"
+#: actions/deleteapplication.php:63
+#, fuzzy
+msgid "You must be logged in to delete an application."
+msgstr "그룹을 만들기 위해서는 로그인해야 합니다."
+
+#: actions/deleteapplication.php:71
+#, fuzzy
+msgid "Application not found."
+msgstr "통지에 프로필이 없습니다."
+
+#: actions/deleteapplication.php:78 actions/editapplication.php:77
+#: actions/showapplication.php:94
+#, fuzzy
+msgid "You are not the owner of this application."
+msgstr "당신은 해당 그룹의 멤버가 아닙니다."
+
+#: actions/deleteapplication.php:102 actions/editapplication.php:127
+#: actions/newapplication.php:110 actions/showapplication.php:118
+#: lib/action.php:1195
+msgid "There was a problem with your session token."
+msgstr "당신의 세션토큰관련 문제가 있습니다."
+
+#: actions/deleteapplication.php:123 actions/deleteapplication.php:147
+#, fuzzy
+msgid "Delete application"
+msgstr "그러한 통지는 없습니다."
+
+#: actions/deleteapplication.php:149
+msgid ""
+"Are you sure you want to delete this application? This will clear all data "
+"about the application from the database, including all existing user "
+"connections."
+msgstr ""
+
+#: actions/deleteapplication.php:156
+#, fuzzy
+msgid "Do not delete this application"
+msgstr "이 통지를 지울 수 없습니다."
+
+#: actions/deleteapplication.php:160
+#, fuzzy
+msgid "Delete this application"
+msgstr "이 게시글 삭제하기"
+
#: actions/deletenotice.php:67 actions/disfavor.php:61 actions/favor.php:62
#: actions/groupblock.php:61 actions/groupunblock.php:61 actions/logout.php:69
#: actions/makeadmin.php:61 actions/newmessage.php:87 actions/newnotice.php:89
@@ -958,7 +1016,7 @@ msgstr "정말로 통지를 삭제하시겠습니까?"
msgid "Do not delete this notice"
msgstr "이 통지를 지울 수 없습니다."
-#: actions/deletenotice.php:146 lib/noticelist.php:608
+#: actions/deletenotice.php:146 lib/noticelist.php:624
msgid "Delete this notice"
msgstr "이 게시글 삭제하기"
@@ -1112,7 +1170,7 @@ msgstr "이 메시지는 favorite이 아닙니다."
msgid "Add to favorites"
msgstr "좋아하는 게시글로 추가하기"
-#: actions/doc.php:155
+#: actions/doc.php:158
#, fuzzy, php-format
msgid "No such document \"%s\""
msgstr "그러한 문서는 없습니다."
@@ -1127,22 +1185,12 @@ msgstr "다른 옵션들"
msgid "You must be logged in to edit an application."
msgstr "그룹을 만들기 위해서는 로그인해야 합니다."
-#: actions/editapplication.php:77 actions/showapplication.php:94
-#, fuzzy
-msgid "You are not the owner of this application."
-msgstr "당신은 해당 그룹의 멤버가 아닙니다."
-
-#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:163
+#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:166
#: actions/showapplication.php:87
#, fuzzy
msgid "No such application."
msgstr "그러한 통지는 없습니다."
-#: actions/editapplication.php:127 actions/newapplication.php:110
-#: actions/showapplication.php:118 lib/action.php:1195
-msgid "There was a problem with your session token."
-msgstr "당신의 세션토큰관련 문제가 있습니다."
-
#: actions/editapplication.php:161
#, fuzzy
msgid "Use this form to edit your application."
@@ -1153,47 +1201,52 @@ msgstr "다음 양식을 이용해 그룹을 편집하십시오."
msgid "Name is required."
msgstr "위와 같은 비밀 번호. 필수 사항."
-#: actions/editapplication.php:180 actions/newapplication.php:162
+#: actions/editapplication.php:180 actions/newapplication.php:165
#, fuzzy
msgid "Name is too long (max 255 chars)."
msgstr "실명이 너무 깁니다. (최대 255글자)"
-#: actions/editapplication.php:183 actions/newapplication.php:165
+#: actions/editapplication.php:183 actions/newapplication.php:162
+#, fuzzy
+msgid "Name already in use. Try another one."
+msgstr "별명이 이미 사용중 입니다. 다른 별명을 시도해 보십시오."
+
+#: actions/editapplication.php:186 actions/newapplication.php:168
#, fuzzy
msgid "Description is required."
msgstr "설명"
-#: actions/editapplication.php:191
+#: actions/editapplication.php:194
msgid "Source URL is too long."
msgstr ""
-#: actions/editapplication.php:197 actions/newapplication.php:182
+#: actions/editapplication.php:200 actions/newapplication.php:185
#, fuzzy
msgid "Source URL is not valid."
msgstr "홈페이지 주소형식이 올바르지 않습니다."
-#: actions/editapplication.php:200 actions/newapplication.php:185
+#: actions/editapplication.php:203 actions/newapplication.php:188
msgid "Organization is required."
msgstr ""
-#: actions/editapplication.php:203 actions/newapplication.php:188
+#: actions/editapplication.php:206 actions/newapplication.php:191
#, fuzzy
msgid "Organization is too long (max 255 chars)."
msgstr "위치가 너무 깁니다. (최대 255글자)"
-#: actions/editapplication.php:206 actions/newapplication.php:191
+#: actions/editapplication.php:209 actions/newapplication.php:194
msgid "Organization homepage is required."
msgstr ""
-#: actions/editapplication.php:215 actions/newapplication.php:203
+#: actions/editapplication.php:218 actions/newapplication.php:206
msgid "Callback is too long."
msgstr ""
-#: actions/editapplication.php:222 actions/newapplication.php:212
+#: actions/editapplication.php:225 actions/newapplication.php:215
msgid "Callback URL is not valid."
msgstr ""
-#: actions/editapplication.php:255
+#: actions/editapplication.php:258
#, fuzzy
msgid "Could not update application."
msgstr "그룹을 업데이트 할 수 없습니다."
@@ -2129,11 +2182,11 @@ msgstr "그룹을 만들기 위해서는 로그인해야 합니다."
msgid "Use this form to register a new application."
msgstr "새 그룹을 만들기 위해 이 양식을 사용하세요."
-#: actions/newapplication.php:173
+#: actions/newapplication.php:176
msgid "Source URL is required."
msgstr ""
-#: actions/newapplication.php:255 actions/newapplication.php:264
+#: actions/newapplication.php:258 actions/newapplication.php:267
#, fuzzy
msgid "Could not create application."
msgstr "좋아하는 게시글을 생성할 수 없습니다."
@@ -2266,29 +2319,29 @@ msgstr ""
msgid "You have not registered any applications yet."
msgstr ""
-#: actions/oauthconnectionssettings.php:71
+#: actions/oauthconnectionssettings.php:72
msgid "Connected applications"
msgstr ""
-#: actions/oauthconnectionssettings.php:87
+#: actions/oauthconnectionssettings.php:83
msgid "You have allowed the following applications to access you account."
msgstr ""
-#: actions/oauthconnectionssettings.php:170
+#: actions/oauthconnectionssettings.php:175
#, fuzzy
msgid "You are not a user of that application."
msgstr "당신은 해당 그룹의 멤버가 아닙니다."
-#: actions/oauthconnectionssettings.php:180
+#: actions/oauthconnectionssettings.php:186
msgid "Unable to revoke access for app: "
msgstr ""
-#: actions/oauthconnectionssettings.php:192
+#: actions/oauthconnectionssettings.php:198
#, php-format
msgid "You have not authorized any applications to use your account."
msgstr ""
-#: actions/oauthconnectionssettings.php:205
+#: actions/oauthconnectionssettings.php:211
msgid "Developers can edit the registration settings for their applications "
msgstr ""
@@ -2806,39 +2859,39 @@ msgstr "공개 타임라인, %d 페이지"
msgid "Public timeline"
msgstr "퍼블릭 타임라인"
-#: actions/public.php:151
+#: actions/public.php:159
#, fuzzy
msgid "Public Stream Feed (RSS 1.0)"
msgstr "퍼블릭 스트림 피드"
-#: actions/public.php:155
+#: actions/public.php:163
#, fuzzy
msgid "Public Stream Feed (RSS 2.0)"
msgstr "퍼블릭 스트림 피드"
-#: actions/public.php:159
+#: actions/public.php:167
#, fuzzy
msgid "Public Stream Feed (Atom)"
msgstr "퍼블릭 스트림 피드"
-#: actions/public.php:179
+#: actions/public.php:187
#, php-format
msgid ""
"This is the public timeline for %%site.name%% but no one has posted anything "
"yet."
msgstr ""
-#: actions/public.php:182
+#: actions/public.php:190
msgid "Be the first to post!"
msgstr ""
-#: actions/public.php:186
+#: actions/public.php:194
#, php-format
msgid ""
"Why not [register an account](%%action.register%%) and be the first to post!"
msgstr ""
-#: actions/public.php:233
+#: actions/public.php:241
#, php-format
msgid ""
"This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2847,7 +2900,7 @@ msgid ""
"friends, family, and colleagues! ([Read more](%%doc.help%%))"
msgstr ""
-#: actions/public.php:238
+#: actions/public.php:246
#, fuzzy, php-format
msgid ""
"This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -3210,7 +3263,7 @@ msgstr "라이선스에 동의하지 않는다면 등록할 수 없습니다."
msgid "You already repeated that notice."
msgstr "당신은 이미 이 사용자를 차단하고 있습니다."
-#: actions/repeat.php:114 lib/noticelist.php:626
+#: actions/repeat.php:114 lib/noticelist.php:642
#, fuzzy
msgid "Repeated"
msgstr "생성"
@@ -3272,6 +3325,11 @@ msgstr ""
msgid "Replies to %1$s on %2$s!"
msgstr "%2$s에서 %1$s까지 메시지"
+#: actions/rsd.php:146 actions/version.php:157
+#, fuzzy
+msgid "StatusNet"
+msgstr "아바타가 업데이트 되었습니다."
+
#: actions/sandbox.php:65 actions/unsandbox.php:65
#, fuzzy
msgid "You cannot sandbox users on this site."
@@ -3318,79 +3376,84 @@ msgstr "아바타 설정"
msgid "You must be logged in to view an application."
msgstr "그룹을 떠나기 위해서는 로그인해야 합니다."
-#: actions/showapplication.php:158
+#: actions/showapplication.php:157
#, fuzzy
msgid "Application profile"
msgstr "통지에 프로필이 없습니다."
-#: actions/showapplication.php:160 lib/applicationeditform.php:180
+#: actions/showapplication.php:159 lib/applicationeditform.php:180
msgid "Icon"
msgstr ""
-#: actions/showapplication.php:170 actions/version.php:195
+#: actions/showapplication.php:169 actions/version.php:195
#: lib/applicationeditform.php:195
#, fuzzy
msgid "Name"
msgstr "별명"
-#: actions/showapplication.php:179 lib/applicationeditform.php:222
+#: actions/showapplication.php:178 lib/applicationeditform.php:222
#, fuzzy
msgid "Organization"
msgstr "페이지수"
-#: actions/showapplication.php:188 actions/version.php:198
+#: actions/showapplication.php:187 actions/version.php:198
#: lib/applicationeditform.php:209 lib/groupeditform.php:172
msgid "Description"
msgstr "설명"
-#: actions/showapplication.php:193 actions/showgroup.php:429
+#: actions/showapplication.php:192 actions/showgroup.php:429
#: lib/profileaction.php:174
msgid "Statistics"
msgstr "통계"
-#: actions/showapplication.php:204
+#: actions/showapplication.php:203
#, php-format
-msgid "created by %1$s - %2$s access by default - %3$d users"
+msgid "Created by %1$s - %2$s access by default - %3$d users"
msgstr ""
-#: actions/showapplication.php:214
+#: actions/showapplication.php:213
msgid "Application actions"
msgstr ""
-#: actions/showapplication.php:233
+#: actions/showapplication.php:236
msgid "Reset key & secret"
msgstr ""
-#: actions/showapplication.php:241
+#: actions/showapplication.php:261
msgid "Application info"
msgstr ""
-#: actions/showapplication.php:243
+#: actions/showapplication.php:263
msgid "Consumer key"
msgstr ""
-#: actions/showapplication.php:248
+#: actions/showapplication.php:268
msgid "Consumer secret"
msgstr ""
-#: actions/showapplication.php:253
+#: actions/showapplication.php:273
msgid "Request token URL"
msgstr ""
-#: actions/showapplication.php:258
+#: actions/showapplication.php:278
msgid "Access token URL"
msgstr ""
-#: actions/showapplication.php:263
+#: actions/showapplication.php:283
msgid "Authorize URL"
msgstr ""
-#: actions/showapplication.php:268
+#: actions/showapplication.php:288
msgid ""
"Note: We support HMAC-SHA1 signatures. We do not support the plaintext "
"signature method."
msgstr ""
+#: actions/showapplication.php:309
+#, fuzzy
+msgid "Are you sure you want to reset your consumer key and secret?"
+msgstr "정말로 통지를 삭제하시겠습니까?"
+
#: actions/showfavorites.php:79
#, fuzzy, php-format
msgid "%1$s's favorite notices, page %2$d"
@@ -3595,25 +3658,25 @@ msgstr "%s의 통지 피드"
msgid "FOAF for %s"
msgstr "%s의 보낸쪽지함"
-#: actions/showstream.php:191
+#: actions/showstream.php:200
#, php-format
msgid "This is the timeline for %1$s but %2$s hasn't posted anything yet."
msgstr ""
-#: actions/showstream.php:196
+#: actions/showstream.php:205
msgid ""
"Seen anything interesting recently? You haven't posted any notices yet, now "
"would be a good time to start :)"
msgstr ""
-#: actions/showstream.php:198
+#: actions/showstream.php:207
#, php-format
msgid ""
"You can try to nudge %1$s or [post something to his or her attention](%%%%"
"action.newnotice%%%%?status_textarea=%2$s)."
msgstr ""
-#: actions/showstream.php:234
+#: actions/showstream.php:243
#, php-format
msgid ""
"**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3622,7 +3685,7 @@ msgid ""
"follow **%s**'s notices and many more! ([Read more](%%%%doc.help%%%%))"
msgstr ""
-#: actions/showstream.php:239
+#: actions/showstream.php:248
#, fuzzy, php-format
msgid ""
"**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3632,7 +3695,7 @@ msgstr ""
"**%s**는 %%%%site.name%%%% [마이크로블로깅](http://en.wikipedia.org/wiki/"
"Micro-blogging) 서비스에 계정을 갖고 있습니다."
-#: actions/showstream.php:296
+#: actions/showstream.php:305
#, fuzzy, php-format
msgid "Repeat of %s"
msgstr "%s에 답신"
@@ -4313,11 +4376,6 @@ msgid ""
"Inc. and contributors."
msgstr ""
-#: actions/version.php:157
-#, fuzzy
-msgid "StatusNet"
-msgstr "아바타가 업데이트 되었습니다."
-
#: actions/version.php:161
msgid "Contributors"
msgstr ""
@@ -4446,22 +4504,22 @@ msgstr "이 사이트에 게시글 포스팅으로부터 당신은 금지되었
msgid "Problem saving notice."
msgstr "통지를 저장하는데 문제가 발생했습니다."
-#: classes/Notice.php:790
+#: classes/Notice.php:788
#, fuzzy
msgid "Problem saving group inbox."
msgstr "통지를 저장하는데 문제가 발생했습니다."
-#: classes/Notice.php:850
+#: classes/Notice.php:848
#, php-format
msgid "DB error inserting reply: %s"
msgstr "답신을 추가 할 때에 데이타베이스 에러 : %s"
-#: classes/Notice.php:1233
+#: classes/Notice.php:1231
#, fuzzy, php-format
msgid "RT @%1$s %2$s"
msgstr "%1$s (%2$s)"
-#: classes/User.php:382
+#: classes/User.php:385
#, fuzzy, php-format
msgid "Welcome to %1$s, @%2$s!"
msgstr "%2$s에서 %1$s까지 메시지"
@@ -4751,11 +4809,11 @@ msgstr "SMS 인증"
msgid "Sessions configuration"
msgstr "SMS 인증"
-#: lib/apiauth.php:99
+#: lib/apiauth.php:95
msgid "API resource requires read-write access, but you only have read access."
msgstr ""
-#: lib/apiauth.php:279
+#: lib/apiauth.php:273
#, php-format
msgid "Failed API auth attempt, nickname = %1$s, proxy = %2$s, ip = %3$s"
msgstr ""
@@ -5124,20 +5182,20 @@ msgid ""
"tracking - not yet implemented.\n"
msgstr ""
-#: lib/common.php:131
+#: lib/common.php:135
#, fuzzy
msgid "No configuration file found. "
msgstr "확인 코드가 없습니다."
-#: lib/common.php:132
+#: lib/common.php:136
msgid "I looked for configuration files in the following places: "
msgstr ""
-#: lib/common.php:134
+#: lib/common.php:138
msgid "You may wish to run the installer to fix this."
msgstr ""
-#: lib/common.php:135
+#: lib/common.php:139
#, fuzzy
msgid "Go to the installer."
msgstr "이 사이트 로그인"
@@ -5708,25 +5766,25 @@ msgstr ""
msgid "at"
msgstr ""
-#: lib/noticelist.php:531
+#: lib/noticelist.php:547
#, fuzzy
msgid "in context"
msgstr "내용이 없습니다!"
-#: lib/noticelist.php:556
+#: lib/noticelist.php:572
#, fuzzy
msgid "Repeated by"
msgstr "생성"
-#: lib/noticelist.php:582
+#: lib/noticelist.php:598
msgid "Reply to this notice"
msgstr "이 게시글에 대해 답장하기"
-#: lib/noticelist.php:583
+#: lib/noticelist.php:599
msgid "Reply"
msgstr "답장하기"
-#: lib/noticelist.php:625
+#: lib/noticelist.php:641
#, fuzzy
msgid "Notice repeated"
msgstr "게시글이 등록되었습니다."
@@ -5875,6 +5933,10 @@ msgstr "이 게시글에 대해 답장하기"
msgid "Repeat this notice"
msgstr "이 게시글에 대해 답장하기"
+#: lib/router.php:665
+msgid "No single user defined for single-user mode."
+msgstr ""
+
#: lib/sandboxform.php:67
#, fuzzy
msgid "Sandbox"
@@ -6052,47 +6114,47 @@ msgstr "메시지"
msgid "Moderate"
msgstr ""
-#: lib/util.php:868
+#: lib/util.php:867
msgid "a few seconds ago"
msgstr "몇 초 전"
-#: lib/util.php:870
+#: lib/util.php:869
msgid "about a minute ago"
msgstr "1분 전"
-#: lib/util.php:872
+#: lib/util.php:871
#, php-format
msgid "about %d minutes ago"
msgstr "%d분 전"
-#: lib/util.php:874
+#: lib/util.php:873
msgid "about an hour ago"
msgstr "1시간 전"
-#: lib/util.php:876
+#: lib/util.php:875
#, php-format
msgid "about %d hours ago"
msgstr "%d시간 전"
-#: lib/util.php:878
+#: lib/util.php:877
msgid "about a day ago"
msgstr "하루 전"
-#: lib/util.php:880
+#: lib/util.php:879
#, php-format
msgid "about %d days ago"
msgstr "%d일 전"
-#: lib/util.php:882
+#: lib/util.php:881
msgid "about a month ago"
msgstr "1달 전"
-#: lib/util.php:884
+#: lib/util.php:883
#, php-format
msgid "about %d months ago"
msgstr "%d달 전"
-#: lib/util.php:886
+#: lib/util.php:885
msgid "about a year ago"
msgstr "1년 전"
diff --git a/locale/mk/LC_MESSAGES/statusnet.po b/locale/mk/LC_MESSAGES/statusnet.po
index acd8005c5..00ac4a797 100644
--- a/locale/mk/LC_MESSAGES/statusnet.po
+++ b/locale/mk/LC_MESSAGES/statusnet.po
@@ -9,12 +9,12 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-01-30 23:41+0000\n"
-"PO-Revision-Date: 2010-01-30 23:42:17+0000\n"
+"POT-Creation-Date: 2010-02-04 10:31+0000\n"
+"PO-Revision-Date: 2010-02-04 10:33:08+0000\n"
"Language-Team: Macedonian\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.16alpha (r61734); Translate extension (2010-01-16)\n"
+"X-Generator: MediaWiki 1.16alpha (r61969); Translate extension (2010-01-16)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: mk\n"
"X-Message-Group: out-statusnet\n"
@@ -95,7 +95,7 @@ msgstr "Нема таква страница"
#: actions/favoritesrss.php:74 actions/foaf.php:40 actions/foaf.php:58
#: actions/microsummary.php:62 actions/newmessage.php:116 actions/otp.php:76
#: actions/remotesubscribe.php:145 actions/remotesubscribe.php:154
-#: actions/replies.php:73 actions/repliesrss.php:38
+#: actions/replies.php:73 actions/repliesrss.php:38 actions/rsd.php:116
#: actions/showfavorites.php:105 actions/userbyid.php:74
#: actions/usergroups.php:91 actions/userrss.php:38 actions/xrds.php:71
#: lib/command.php:163 lib/command.php:302 lib/command.php:355
@@ -158,7 +158,7 @@ msgstr ""
"на корисникот или да [објавите нешто што сакате тој да го прочита](%%%%"
"action.newnotice%%%%?status_textarea=%3$s)."
-#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:202
+#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:211
#, php-format
msgid ""
"Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
@@ -390,8 +390,8 @@ msgstr "Тој прекар е во употреба. Одберете друг.
msgid "Not a valid nickname."
msgstr "Неправилен прекар."
-#: actions/apigroupcreate.php:196 actions/editapplication.php:212
-#: actions/editgroup.php:195 actions/newapplication.php:200
+#: actions/apigroupcreate.php:196 actions/editapplication.php:215
+#: actions/editgroup.php:195 actions/newapplication.php:203
#: actions/newgroup.php:139 actions/profilesettings.php:222
#: actions/register.php:217
msgid "Homepage is not a valid URL."
@@ -403,8 +403,8 @@ msgstr "Главната страница не е важечка URL-адрес
msgid "Full name is too long (max 255 chars)."
msgstr "Целото име е предолго (максимум 255 знаци)"
-#: actions/apigroupcreate.php:213 actions/editapplication.php:187
-#: actions/newapplication.php:169
+#: actions/apigroupcreate.php:213 actions/editapplication.php:190
+#: actions/newapplication.php:172
#, php-format
msgid "Description is too long (max %d chars)."
msgstr "Описот е предолг (дозволено е највеќе %d знаци)."
@@ -481,18 +481,22 @@ msgstr "%s групи"
msgid "groups on %s"
msgstr "групи на %s"
-#: actions/apioauthauthorize.php:108 actions/apioauthauthorize.php:114
-msgid "Bad request."
-msgstr "Лошо барање."
+#: actions/apioauthauthorize.php:101
+msgid "No oauth_token parameter provided."
+msgstr "Нема наведено oauth_token параметар."
-#: actions/apioauthauthorize.php:134 actions/avatarsettings.php:268
+#: actions/apioauthauthorize.php:106
+msgid "Invalid token."
+msgstr "Погрешен жетон."
+
+#: actions/apioauthauthorize.php:123 actions/avatarsettings.php:268
#: actions/deletenotice.php:157 actions/disfavor.php:74
-#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:50
+#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:54
#: actions/groupblock.php:66 actions/grouplogo.php:309
#: actions/groupunblock.php:66 actions/imsettings.php:206
#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
-#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:139
+#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:135
#: actions/othersettings.php:145 actions/passwordsettings.php:138
#: actions/profilesettings.php:194 actions/recoverpassword.php:337
#: actions/register.php:165 actions/remotesubscribe.php:77
@@ -503,74 +507,85 @@ msgstr "Лошо барање."
msgid "There was a problem with your session token. Try again, please."
msgstr "Се поајви проблем со Вашиот сесиски жетон. Обидете се повторно."
-#: actions/apioauthauthorize.php:146
+#: actions/apioauthauthorize.php:135
msgid "Invalid nickname / password!"
msgstr "Погрешен прекар / лозинка!"
-#: actions/apioauthauthorize.php:170
+#: actions/apioauthauthorize.php:159
msgid "Database error deleting OAuth application user."
msgstr "Грешка при бришењето на корисникот на OAuth-програмот."
-#: actions/apioauthauthorize.php:196
+#: actions/apioauthauthorize.php:185
msgid "Database error inserting OAuth application user."
msgstr ""
"Грешка во базата на податоци при вметнувањето на корисникот на OAuth-"
"програмот."
-#: actions/apioauthauthorize.php:231
+#: actions/apioauthauthorize.php:214
#, php-format
msgid ""
"The request token %s has been authorized. Please exchange it for an access "
"token."
msgstr "Жетонот на барањето %s е одобрен. Заменете го со жетон за пристап."
-#: actions/apioauthauthorize.php:241
+#: actions/apioauthauthorize.php:227
#, php-format
-msgid "The request token %s has been denied."
-msgstr "Жетонот на барањето %s е одбиен."
+msgid "The request token %s has been denied and revoked."
+msgstr "Жетонот на барањето %s е одбиен и поништен."
-#: actions/apioauthauthorize.php:246 actions/avatarsettings.php:281
+#: actions/apioauthauthorize.php:232 actions/avatarsettings.php:281
#: actions/designadminpanel.php:103 actions/editapplication.php:139
#: actions/emailsettings.php:256 actions/grouplogo.php:319
#: actions/imsettings.php:220 actions/newapplication.php:121
-#: actions/oauthconnectionssettings.php:151 actions/recoverpassword.php:44
+#: actions/oauthconnectionssettings.php:147 actions/recoverpassword.php:44
#: actions/smssettings.php:248 lib/designsettings.php:304
msgid "Unexpected form submission."
msgstr "Неочекувано поднесување на образец."
-#: actions/apioauthauthorize.php:273
+#: actions/apioauthauthorize.php:259
msgid "An application would like to connect to your account"
msgstr "Има програм кој сака да се поврзе со Вашата сметка"
-#: actions/apioauthauthorize.php:290
+#: actions/apioauthauthorize.php:276
msgid "Allow or deny access"
msgstr "Дозволи или одбиј пристап"
-#: actions/apioauthauthorize.php:320 lib/action.php:441
+#: actions/apioauthauthorize.php:292
+#, php-format
+msgid ""
+"The application <strong>%1$s</strong> by <strong>%2$s</strong> would like "
+"the ability to <strong>%3$s</strong> your %4$s account data. You should only "
+"give access to your %4$s account to third parties you trust."
+msgstr ""
+"Програмот <strong>%1$s</strong> од <strong>%2$s</strong> би сакал да може да "
+"<strong>%3$s</strong> податоците за Вашата %4$s сметка. Треба да дозволувате "
+"пристап до Вашата %4$s сметка само на трети страни на кои им верувате."
+
+#: actions/apioauthauthorize.php:310 lib/action.php:441
msgid "Account"
msgstr "Сметка"
-#: actions/apioauthauthorize.php:323 actions/login.php:230
+#: actions/apioauthauthorize.php:313 actions/login.php:230
#: actions/profilesettings.php:106 actions/register.php:424
#: actions/showgroup.php:236 actions/tagother.php:94 lib/groupeditform.php:152
#: lib/userprofile.php:131
msgid "Nickname"
msgstr "Прекар"
-#: actions/apioauthauthorize.php:326 actions/login.php:233
+#: actions/apioauthauthorize.php:316 actions/login.php:233
#: actions/register.php:429 lib/accountsettingsaction.php:116
msgid "Password"
msgstr "Лозинка"
-#: actions/apioauthauthorize.php:338
+#: actions/apioauthauthorize.php:328
msgid "Deny"
msgstr "Одбиј"
-#: actions/apioauthauthorize.php:344
+#: actions/apioauthauthorize.php:334
msgid "Allow"
msgstr "Дозволи"
-#: actions/apioauthauthorize.php:361
+#: actions/apioauthauthorize.php:351
msgid "Allow or deny access to your account information."
msgstr "Дозволете или одбијте пристап до податоците за Вашата сметка."
@@ -743,8 +758,8 @@ msgstr "Оригинал"
msgid "Preview"
msgstr "Преглед"
-#: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:608
+#: actions/avatarsettings.php:149 actions/showapplication.php:252
+#: lib/deleteuserform.php:66 lib/noticelist.php:624
msgid "Delete"
msgstr "Бриши"
@@ -795,8 +810,9 @@ msgstr ""
"претплати на Вас во иднина, и нема да бидете известени ако имате @-одговори "
"од корисникот."
-#: actions/block.php:143 actions/deletenotice.php:145
-#: actions/deleteuser.php:147 actions/groupblock.php:178
+#: actions/block.php:143 actions/deleteapplication.php:153
+#: actions/deletenotice.php:145 actions/deleteuser.php:147
+#: actions/groupblock.php:178
msgid "No"
msgstr "Не"
@@ -804,9 +820,9 @@ msgstr "Не"
msgid "Do not block this user"
msgstr "Не го блокирај корисников"
-#: actions/block.php:144 actions/deletenotice.php:146
-#: actions/deleteuser.php:148 actions/groupblock.php:179
-#: lib/repeatform.php:132
+#: actions/block.php:144 actions/deleteapplication.php:158
+#: actions/deletenotice.php:146 actions/deleteuser.php:148
+#: actions/groupblock.php:179 lib/repeatform.php:132
msgid "Yes"
msgstr "Да"
@@ -910,6 +926,47 @@ msgstr "Разговор"
msgid "Notices"
msgstr "Забелешки"
+#: actions/deleteapplication.php:63
+msgid "You must be logged in to delete an application."
+msgstr "Мора да сте најавени за да можете да избришете програм."
+
+#: actions/deleteapplication.php:71
+msgid "Application not found."
+msgstr "Програмот не е пронајден."
+
+#: actions/deleteapplication.php:78 actions/editapplication.php:77
+#: actions/showapplication.php:94
+msgid "You are not the owner of this application."
+msgstr "Не сте сопственик на овој програм."
+
+#: actions/deleteapplication.php:102 actions/editapplication.php:127
+#: actions/newapplication.php:110 actions/showapplication.php:118
+#: lib/action.php:1195
+msgid "There was a problem with your session token."
+msgstr "Се појави проблем со Вашиот сесиски жетон."
+
+#: actions/deleteapplication.php:123 actions/deleteapplication.php:147
+msgid "Delete application"
+msgstr "Избриши програм"
+
+#: actions/deleteapplication.php:149
+msgid ""
+"Are you sure you want to delete this application? This will clear all data "
+"about the application from the database, including all existing user "
+"connections."
+msgstr ""
+"Дали се сигурни дека сакате да го избришете овој програм? Ова воедно ќе ги "
+"избрише сите податоци за програмот од базата, вклучувајќи ги сите постоечки "
+"поврзувања."
+
+#: actions/deleteapplication.php:156
+msgid "Do not delete this application"
+msgstr "Не го бриши овој програм"
+
+#: actions/deleteapplication.php:160
+msgid "Delete this application"
+msgstr "Избриши го програмов"
+
#: actions/deletenotice.php:67 actions/disfavor.php:61 actions/favor.php:62
#: actions/groupblock.php:61 actions/groupunblock.php:61 actions/logout.php:69
#: actions/makeadmin.php:61 actions/newmessage.php:87 actions/newnotice.php:89
@@ -944,7 +1001,7 @@ msgstr "Дали сте сигурни дека сакате да ја избр
msgid "Do not delete this notice"
msgstr "Не ја бриши оваа забелешка"
-#: actions/deletenotice.php:146 lib/noticelist.php:608
+#: actions/deletenotice.php:146 lib/noticelist.php:624
msgid "Delete this notice"
msgstr "Бриши ја оваа забелешка"
@@ -1088,7 +1145,7 @@ msgstr "Оваа забелешка не Ви е омилена!"
msgid "Add to favorites"
msgstr "Додај во омилени"
-#: actions/doc.php:155
+#: actions/doc.php:158
#, php-format
msgid "No such document \"%s\""
msgstr "Нема документ со наслов „%s“"
@@ -1101,20 +1158,11 @@ msgstr "Уреди програм"
msgid "You must be logged in to edit an application."
msgstr "Мора да сте најавени за да можете да уредувате програми."
-#: actions/editapplication.php:77 actions/showapplication.php:94
-msgid "You are not the owner of this application."
-msgstr "Не сте сопственик на овој програм."
-
-#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:163
+#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:166
#: actions/showapplication.php:87
msgid "No such application."
msgstr "Нема таков програм."
-#: actions/editapplication.php:127 actions/newapplication.php:110
-#: actions/showapplication.php:118 lib/action.php:1195
-msgid "There was a problem with your session token."
-msgstr "Се појави проблем со Вашиот сесиски жетон."
-
#: actions/editapplication.php:161
msgid "Use this form to edit your application."
msgstr "Образецов служи за уредување на програмот."
@@ -1123,43 +1171,47 @@ msgstr "Образецов служи за уредување на програ
msgid "Name is required."
msgstr "Треба име."
-#: actions/editapplication.php:180 actions/newapplication.php:162
+#: actions/editapplication.php:180 actions/newapplication.php:165
msgid "Name is too long (max 255 chars)."
msgstr "Името е предолго (максимум 255 знаци)."
-#: actions/editapplication.php:183 actions/newapplication.php:165
+#: actions/editapplication.php:183 actions/newapplication.php:162
+msgid "Name already in use. Try another one."
+msgstr "Тоа име е во употреба. Одберете друго."
+
+#: actions/editapplication.php:186 actions/newapplication.php:168
msgid "Description is required."
msgstr "Треба опис."
-#: actions/editapplication.php:191
+#: actions/editapplication.php:194
msgid "Source URL is too long."
msgstr "Изворната URL-адреса е предолга."
-#: actions/editapplication.php:197 actions/newapplication.php:182
+#: actions/editapplication.php:200 actions/newapplication.php:185
msgid "Source URL is not valid."
msgstr "Изворната URL-адреса е неважечка."
-#: actions/editapplication.php:200 actions/newapplication.php:185
+#: actions/editapplication.php:203 actions/newapplication.php:188
msgid "Organization is required."
msgstr "Треба организација."
-#: actions/editapplication.php:203 actions/newapplication.php:188
+#: actions/editapplication.php:206 actions/newapplication.php:191
msgid "Organization is too long (max 255 chars)."
msgstr "Организацијата е предолга (максимумот е 255 знаци)."
-#: actions/editapplication.php:206 actions/newapplication.php:191
+#: actions/editapplication.php:209 actions/newapplication.php:194
msgid "Organization homepage is required."
msgstr "Треба домашна страница на организацијата."
-#: actions/editapplication.php:215 actions/newapplication.php:203
+#: actions/editapplication.php:218 actions/newapplication.php:206
msgid "Callback is too long."
msgstr "Повикувањето е предолго."
-#: actions/editapplication.php:222 actions/newapplication.php:212
+#: actions/editapplication.php:225 actions/newapplication.php:215
msgid "Callback URL is not valid."
msgstr "URL-адресата за повикување е неважечка."
-#: actions/editapplication.php:255
+#: actions/editapplication.php:258
msgid "Could not update application."
msgstr "Не можев да го подновам програмот."
@@ -2097,11 +2149,11 @@ msgstr "Мора да сте најавени за да можете да рег
msgid "Use this form to register a new application."
msgstr "Овој образец служи за регистрирање на нов програм."
-#: actions/newapplication.php:173
+#: actions/newapplication.php:176
msgid "Source URL is required."
msgstr "Треба изворна URL-адреса."
-#: actions/newapplication.php:255 actions/newapplication.php:264
+#: actions/newapplication.php:258 actions/newapplication.php:267
msgid "Could not create application."
msgstr "Не можеше да се создаде програмот."
@@ -2237,28 +2289,28 @@ msgstr "Програми што ги имате регистрирано"
msgid "You have not registered any applications yet."
msgstr "Сè уште немате регистрирано ниеден програм,"
-#: actions/oauthconnectionssettings.php:71
+#: actions/oauthconnectionssettings.php:72
msgid "Connected applications"
msgstr "Поврзани програми"
-#: actions/oauthconnectionssettings.php:87
+#: actions/oauthconnectionssettings.php:83
msgid "You have allowed the following applications to access you account."
msgstr "Им имате дозволено пристап до Вашата сметка на следните програми."
-#: actions/oauthconnectionssettings.php:170
+#: actions/oauthconnectionssettings.php:175
msgid "You are not a user of that application."
msgstr "Не сте корисник на тој програм."
-#: actions/oauthconnectionssettings.php:180
+#: actions/oauthconnectionssettings.php:186
msgid "Unable to revoke access for app: "
msgstr "Не можам да му го одземам пристапот на програмот: "
-#: actions/oauthconnectionssettings.php:192
+#: actions/oauthconnectionssettings.php:198
#, php-format
msgid "You have not authorized any applications to use your account."
msgstr "Му немате дозволено пристап до Вашата сметка на ниеден програм."
-#: actions/oauthconnectionssettings.php:205
+#: actions/oauthconnectionssettings.php:211
msgid "Developers can edit the registration settings for their applications "
msgstr ""
"Развивачите можат да ги нагодат регистрациските поставки за нивните програми "
@@ -2764,19 +2816,19 @@ msgstr "Јавна историја, стр. %d"
msgid "Public timeline"
msgstr "Јавна историја"
-#: actions/public.php:151
+#: actions/public.php:159
msgid "Public Stream Feed (RSS 1.0)"
msgstr "Канал на јавниот поток (RSS 1.0)"
-#: actions/public.php:155
+#: actions/public.php:163
msgid "Public Stream Feed (RSS 2.0)"
msgstr "Канал на јавниот поток (RSS 2.0)"
-#: actions/public.php:159
+#: actions/public.php:167
msgid "Public Stream Feed (Atom)"
msgstr "Канал на јавниот поток (Atom)"
-#: actions/public.php:179
+#: actions/public.php:187
#, php-format
msgid ""
"This is the public timeline for %%site.name%% but no one has posted anything "
@@ -2784,11 +2836,11 @@ msgid ""
msgstr ""
"Ова е јавната историја за %%site.name%%, но досега никој ништо нема објавено."
-#: actions/public.php:182
+#: actions/public.php:190
msgid "Be the first to post!"
msgstr "Создајте ја првата забелешка!"
-#: actions/public.php:186
+#: actions/public.php:194
#, php-format
msgid ""
"Why not [register an account](%%action.register%%) and be the first to post!"
@@ -2796,7 +2848,7 @@ msgstr ""
"Зошто не [регистрирате сметка](%%action.register%%) и станете првиот "
"објавувач!"
-#: actions/public.php:233
+#: actions/public.php:241
#, php-format
msgid ""
"This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2810,7 +2862,7 @@ msgstr ""
"споделувате забелешки за себе со приајтелите, семејството и колегите! "
"([Прочитајте повеќе](%%doc.help%%))"
-#: actions/public.php:238
+#: actions/public.php:246
#, php-format
msgid ""
"This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -3179,7 +3231,7 @@ msgstr "Не можете да повторувате сопствена заб
msgid "You already repeated that notice."
msgstr "Веќе ја имате повторено таа забелешка."
-#: actions/repeat.php:114 lib/noticelist.php:626
+#: actions/repeat.php:114 lib/noticelist.php:642
msgid "Repeated"
msgstr "Повторено"
@@ -3245,6 +3297,10 @@ msgstr ""
msgid "Replies to %1$s on %2$s!"
msgstr "Одговори на %1$s на %2$s!"
+#: actions/rsd.php:146 actions/version.php:157
+msgid "StatusNet"
+msgstr "StatusNet"
+
#: actions/sandbox.php:65 actions/unsandbox.php:65
msgid "You cannot sandbox users on this site."
msgstr "Не можете да ставате корисници во песочен режим на оваа веб-страница."
@@ -3259,9 +3315,8 @@ msgid "Sessions"
msgstr "Сесии"
#: actions/sessionsadminpanel.php:65
-#, fuzzy
msgid "Session settings for this StatusNet site."
-msgstr "Нагодувања на изгледот на оваа StatusNet веб-страница."
+msgstr "Нагодувања на сесиите за оваа StatusNet веб-страница."
#: actions/sessionsadminpanel.php:175
msgid "Handle sessions"
@@ -3288,71 +3343,71 @@ msgstr "Зачувај нагодувања на веб-страницата"
msgid "You must be logged in to view an application."
msgstr "Мора да сте најавени за да можете да го видите програмот."
-#: actions/showapplication.php:158
+#: actions/showapplication.php:157
msgid "Application profile"
msgstr "Профил на програмот"
-#: actions/showapplication.php:160 lib/applicationeditform.php:180
+#: actions/showapplication.php:159 lib/applicationeditform.php:180
msgid "Icon"
msgstr "Икона"
-#: actions/showapplication.php:170 actions/version.php:195
+#: actions/showapplication.php:169 actions/version.php:195
#: lib/applicationeditform.php:195
msgid "Name"
msgstr "Име"
-#: actions/showapplication.php:179 lib/applicationeditform.php:222
+#: actions/showapplication.php:178 lib/applicationeditform.php:222
msgid "Organization"
msgstr "Организација"
-#: actions/showapplication.php:188 actions/version.php:198
+#: actions/showapplication.php:187 actions/version.php:198
#: lib/applicationeditform.php:209 lib/groupeditform.php:172
msgid "Description"
msgstr "Опис"
-#: actions/showapplication.php:193 actions/showgroup.php:429
+#: actions/showapplication.php:192 actions/showgroup.php:429
#: lib/profileaction.php:174
msgid "Statistics"
msgstr "Статистики"
-#: actions/showapplication.php:204
+#: actions/showapplication.php:203
#, php-format
-msgid "created by %1$s - %2$s access by default - %3$d users"
-msgstr "создал: %1$s - основен пристап: %2$s - %3$d корисници"
+msgid "Created by %1$s - %2$s access by default - %3$d users"
+msgstr "Создадено од %1$s - основен пристап: %2$s - %3$d корисници"
-#: actions/showapplication.php:214
+#: actions/showapplication.php:213
msgid "Application actions"
msgstr "Дејства на програмот"
-#: actions/showapplication.php:233
+#: actions/showapplication.php:236
msgid "Reset key & secret"
msgstr "Клуч за промена и тајна"
-#: actions/showapplication.php:241
+#: actions/showapplication.php:261
msgid "Application info"
msgstr "Инфо за програмот"
-#: actions/showapplication.php:243
+#: actions/showapplication.php:263
msgid "Consumer key"
msgstr "Потрошувачки клуч"
-#: actions/showapplication.php:248
+#: actions/showapplication.php:268
msgid "Consumer secret"
msgstr "Потрошувачка тајна"
-#: actions/showapplication.php:253
+#: actions/showapplication.php:273
msgid "Request token URL"
msgstr "URL на жетонот на барањето"
-#: actions/showapplication.php:258
+#: actions/showapplication.php:278
msgid "Access token URL"
msgstr "URL на пристапниот жетон"
-#: actions/showapplication.php:263
+#: actions/showapplication.php:283
msgid "Authorize URL"
msgstr "Одобри URL"
-#: actions/showapplication.php:268
+#: actions/showapplication.php:288
msgid ""
"Note: We support HMAC-SHA1 signatures. We do not support the plaintext "
"signature method."
@@ -3360,6 +3415,11 @@ msgstr ""
"Напомена: Поддржуваме HMAC-SHA1 потписи. Не поддржуваме потпишување со прост "
"текст."
+#: actions/showapplication.php:309
+#, fuzzy
+msgid "Are you sure you want to reset your consumer key and secret?"
+msgstr "Дали сте сигурни дека сакате да ја избришете оваа заблешка?"
+
#: actions/showfavorites.php:79
#, php-format
msgid "%1$s's favorite notices, page %2$d"
@@ -3577,12 +3637,12 @@ msgstr "Канал со забелешки за %s (Atom)"
msgid "FOAF for %s"
msgstr "FOAF за %s"
-#: actions/showstream.php:191
+#: actions/showstream.php:200
#, php-format
msgid "This is the timeline for %1$s but %2$s hasn't posted anything yet."
msgstr "Ова е историјата за %1$s, но %2$s сè уште нема објавено ништо."
-#: actions/showstream.php:196
+#: actions/showstream.php:205
msgid ""
"Seen anything interesting recently? You haven't posted any notices yet, now "
"would be a good time to start :)"
@@ -3590,7 +3650,7 @@ msgstr ""
"Имате видено нешто интересно во последно време? Сè уште немате објавено "
"ниедна забелешка, но сега е добро време за да почнете :)"
-#: actions/showstream.php:198
+#: actions/showstream.php:207
#, php-format
msgid ""
"You can try to nudge %1$s or [post something to his or her attention](%%%%"
@@ -3599,7 +3659,7 @@ msgstr ""
"Можете да го подбуцнете корисникот %1$s или [да објавите нешто што сакате да "
"го прочита](%%%%action.newnotice%%%%?status_textarea=%2$s)."
-#: actions/showstream.php:234
+#: actions/showstream.php:243
#, php-format
msgid ""
"**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3613,7 +3673,7 @@ msgstr ""
"register%%%%) за да можете да ги следите забелешките на **%s** и многу "
"повеќе! ([Прочитајте повеќе](%%%%doc.help%%%%))"
-#: actions/showstream.php:239
+#: actions/showstream.php:248
#, php-format
msgid ""
"**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3624,7 +3684,7 @@ msgstr ""
"(http://mk.wikipedia.org/wiki/Микроблогирање) базирана на слободната "
"програмска алатка [StatusNet](http://status.net/). "
-#: actions/showstream.php:296
+#: actions/showstream.php:305
#, php-format
msgid "Repeat of %s"
msgstr "Повторувања на %s"
@@ -4307,10 +4367,6 @@ msgstr ""
"Оваа веб-страница работи на %1$s верзија %2$s, Авторски права 2008-2010 "
"StatusNet, Inc. и учесници."
-#: actions/version.php:157
-msgid "StatusNet"
-msgstr "StatusNet"
-
#: actions/version.php:161
msgid "Contributors"
msgstr "Учесници"
@@ -4445,21 +4501,21 @@ msgstr "Забрането Ви е да објавувате забелешки
msgid "Problem saving notice."
msgstr "Проблем во зачувувањето на белешката."
-#: classes/Notice.php:790
+#: classes/Notice.php:788
msgid "Problem saving group inbox."
msgstr "Проблем при зачувувањето на групното приемно сандаче."
-#: classes/Notice.php:850
+#: classes/Notice.php:848
#, php-format
msgid "DB error inserting reply: %s"
msgstr "Одговор од внесот во базата: %s"
-#: classes/Notice.php:1233
+#: classes/Notice.php:1231
#, php-format
msgid "RT @%1$s %2$s"
msgstr "RT @%1$s %2$s"
-#: classes/User.php:382
+#: classes/User.php:385
#, php-format
msgid "Welcome to %1$s, @%2$s!"
msgstr "Добредојдовте на %1$s, @%2$s!"
@@ -4734,17 +4790,16 @@ msgid "Paths configuration"
msgstr "Конфигурација на патеки"
#: lib/adminpanelaction.php:337
-#, fuzzy
msgid "Sessions configuration"
-msgstr "Конфигурација на изгледот"
+msgstr "Конфигурација на сесиите"
-#: lib/apiauth.php:99
+#: lib/apiauth.php:95
msgid "API resource requires read-write access, but you only have read access."
msgstr ""
"API-ресурсот бара да може и да чита и да запишува, а вие можете само да "
"читате."
-#: lib/apiauth.php:279
+#: lib/apiauth.php:273
#, php-format
msgid "Failed API auth attempt, nickname = %1$s, proxy = %2$s, ip = %3$s"
msgstr "Неуспешен обид за API-заверка, прекар = %1$s, прокси = %2$s, IP = %3$s"
@@ -5144,19 +5199,19 @@ msgstr ""
"tracks - сè уште не е имплементирано.\n"
"tracking - сè уште не е имплементирано.\n"
-#: lib/common.php:131
+#: lib/common.php:135
msgid "No configuration file found. "
msgstr "Нема пронајдено конфигурациска податотека. "
-#: lib/common.php:132
+#: lib/common.php:136
msgid "I looked for configuration files in the following places: "
msgstr "Побарав конфигурациони податотеки на следниве места: "
-#: lib/common.php:134
+#: lib/common.php:138
msgid "You may wish to run the installer to fix this."
msgstr "Препорачуваме да го пуштите инсталатерот за да го поправите ова."
-#: lib/common.php:135
+#: lib/common.php:139
msgid "Go to the installer."
msgstr "Оди на инсталаторот."
@@ -5807,23 +5862,23 @@ msgstr "З"
msgid "at"
msgstr "во"
-#: lib/noticelist.php:531
+#: lib/noticelist.php:547
msgid "in context"
msgstr "во контекст"
-#: lib/noticelist.php:556
+#: lib/noticelist.php:572
msgid "Repeated by"
msgstr "Повторено од"
-#: lib/noticelist.php:582
+#: lib/noticelist.php:598
msgid "Reply to this notice"
msgstr "Одговори на забелешкава"
-#: lib/noticelist.php:583
+#: lib/noticelist.php:599
msgid "Reply"
msgstr "Одговор"
-#: lib/noticelist.php:625
+#: lib/noticelist.php:641
msgid "Notice repeated"
msgstr "Забелешката е повторена"
@@ -5964,6 +6019,10 @@ msgstr "Да ја повторам белешкава?"
msgid "Repeat this notice"
msgstr "Повтори ја забелешкава"
+#: lib/router.php:665
+msgid "No single user defined for single-user mode."
+msgstr "Не е зададен корисник за еднокорисничкиот режим."
+
#: lib/sandboxform.php:67
msgid "Sandbox"
msgstr "Песок"
@@ -6130,47 +6189,47 @@ msgstr "Порака"
msgid "Moderate"
msgstr "Модерирај"
-#: lib/util.php:868
+#: lib/util.php:867
msgid "a few seconds ago"
msgstr "пред неколку секунди"
-#: lib/util.php:870
+#: lib/util.php:869
msgid "about a minute ago"
msgstr "пред една минута"
-#: lib/util.php:872
+#: lib/util.php:871
#, php-format
msgid "about %d minutes ago"
msgstr "пред %d минути"
-#: lib/util.php:874
+#: lib/util.php:873
msgid "about an hour ago"
msgstr "пред еден час"
-#: lib/util.php:876
+#: lib/util.php:875
#, php-format
msgid "about %d hours ago"
msgstr "пред %d часа"
-#: lib/util.php:878
+#: lib/util.php:877
msgid "about a day ago"
msgstr "пред еден ден"
-#: lib/util.php:880
+#: lib/util.php:879
#, php-format
msgid "about %d days ago"
msgstr "пред %d денови"
-#: lib/util.php:882
+#: lib/util.php:881
msgid "about a month ago"
msgstr "пред еден месец"
-#: lib/util.php:884
+#: lib/util.php:883
#, php-format
msgid "about %d months ago"
msgstr "пред %d месеца"
-#: lib/util.php:886
+#: lib/util.php:885
msgid "about a year ago"
msgstr "пред една година"
diff --git a/locale/nb/LC_MESSAGES/statusnet.po b/locale/nb/LC_MESSAGES/statusnet.po
index ef35a39b1..4252e6a83 100644
--- a/locale/nb/LC_MESSAGES/statusnet.po
+++ b/locale/nb/LC_MESSAGES/statusnet.po
@@ -8,55 +8,52 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-01-30 23:41+0000\n"
-"PO-Revision-Date: 2010-01-30 23:42:20+0000\n"
+"POT-Creation-Date: 2010-02-04 10:31+0000\n"
+"PO-Revision-Date: 2010-02-04 10:33:11+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 (r61734); Translate extension (2010-01-16)\n"
+"X-Generator: MediaWiki 1.16alpha (r61969); Translate extension (2010-01-16)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: no\n"
"X-Message-Group: out-statusnet\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: actions/accessadminpanel.php:54 lib/adminpanelaction.php:326
-#, fuzzy
msgid "Access"
-msgstr "Godta"
+msgstr "Tilgang"
#: actions/accessadminpanel.php:65
-#, fuzzy
msgid "Site access settings"
-msgstr "Innstillinger for IM"
+msgstr "Innstillinger for nettstedstilgang"
#: actions/accessadminpanel.php:158
-#, fuzzy
msgid "Registration"
-msgstr "Alle abonnementer"
+msgstr "Registrering"
#: actions/accessadminpanel.php:161
msgid "Private"
-msgstr ""
+msgstr "Privat"
#: actions/accessadminpanel.php:163
msgid "Prohibit anonymous users (not logged in) from viewing site?"
-msgstr ""
+msgstr "Forhindre anonyme brukere (ikke innlogget) å se nettsted?"
#: actions/accessadminpanel.php:167
msgid "Invite only"
-msgstr ""
+msgstr "Kun invitasjon"
#: actions/accessadminpanel.php:169
msgid "Make registration invitation only."
-msgstr ""
+msgstr "Gjør at registrering kun kan skje gjennom invitasjon."
#: actions/accessadminpanel.php:173
msgid "Closed"
-msgstr ""
+msgstr "Lukket"
#: actions/accessadminpanel.php:175
msgid "Disable new registrations."
-msgstr ""
+msgstr "Deaktiver nye registreringer."
#: actions/accessadminpanel.php:189 actions/designadminpanel.php:586
#: actions/emailsettings.php:195 actions/imsettings.php:163
@@ -71,9 +68,8 @@ msgid "Save"
msgstr "Lagre"
#: actions/accessadminpanel.php:189
-#, fuzzy
msgid "Save access settings"
-msgstr "Innstillinger for IM"
+msgstr "Lagre tilgangsinnstillinger"
#: actions/all.php:63 actions/public.php:97 actions/replies.php:92
#: actions/showfavorites.php:137 actions/tag.php:51
@@ -96,7 +92,7 @@ msgstr "Ingen slik side"
#: actions/favoritesrss.php:74 actions/foaf.php:40 actions/foaf.php:58
#: actions/microsummary.php:62 actions/newmessage.php:116 actions/otp.php:76
#: actions/remotesubscribe.php:145 actions/remotesubscribe.php:154
-#: actions/replies.php:73 actions/repliesrss.php:38
+#: actions/replies.php:73 actions/repliesrss.php:38 actions/rsd.php:116
#: actions/showfavorites.php:105 actions/userbyid.php:74
#: actions/usergroups.php:91 actions/userrss.php:38 actions/xrds.php:71
#: lib/command.php:163 lib/command.php:302 lib/command.php:355
@@ -107,9 +103,9 @@ msgid "No such user."
msgstr "Ingen slik bruker"
#: actions/all.php:84
-#, fuzzy, php-format
+#, php-format
msgid "%1$s and friends, page %2$d"
-msgstr "%s og venner"
+msgstr "%1$s og venner, side %2$d"
#: actions/all.php:86 actions/all.php:167 actions/allrss.php:115
#: actions/apitimelinefriends.php:114 actions/apitimelinehome.php:115
@@ -149,16 +145,16 @@ msgstr ""
"eller post noe selv."
#: actions/all.php:134
-#, fuzzy, php-format
+#, php-format
msgid ""
"You can try to [nudge %1$s](../%2$s) from his profile or [post something to "
"his or her attention](%%%%action.newnotice%%%%?status_textarea=%3$s)."
msgstr ""
-"Du kan prøve å [knuffe %s](../%s) fra dennes profil eller [post noe for å få "
-"hans eller hennes oppmerksomhet](%%%%action.newnotice%%%%?status_textarea=%"
-"s)."
+"Du kan prøve å [knuffe %1$s](../%2$s) fra dennes profil eller [poste noe for "
+"å få hans eller hennes oppmerksomhet](%%%%action.newnotice%%%%?"
+"status_textarea=%3$s)."
-#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:202
+#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:211
#, php-format
msgid ""
"Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
@@ -326,18 +322,16 @@ msgid "No status found with that ID."
msgstr "Fant ingen status med den ID-en."
#: actions/apifavoritecreate.php:119
-#, fuzzy
msgid "This status is already a favorite."
-msgstr "Denne statusen er allerede en favoritt!"
+msgstr "Denne statusen er allerede en favoritt."
#: actions/apifavoritecreate.php:130 actions/favor.php:84 lib/command.php:176
msgid "Could not create favorite."
msgstr "Kunne ikke opprette favoritt."
#: actions/apifavoritedestroy.php:122
-#, fuzzy
msgid "That status is not a favorite."
-msgstr "Den statusen er ikke en favoritt!"
+msgstr "Den statusen er ikke en favoritt."
#: actions/apifavoritedestroy.php:134 actions/disfavor.php:87
msgid "Could not delete favorite."
@@ -357,23 +351,20 @@ msgid "Could not unfollow user: User not found."
msgstr "Kunne ikke slutte å følge brukeren: Fant ikke brukeren."
#: actions/apifriendshipsdestroy.php:120
-#, fuzzy
msgid "You cannot unfollow yourself."
-msgstr "Du kan ikke slutte å følge deg selv!"
+msgstr "Du kan ikke slutte å følge deg selv."
#: actions/apifriendshipsexists.php:94
msgid "Two user ids or screen_names must be supplied."
msgstr "To bruker ID-er eller kallenavn må oppgis."
#: actions/apifriendshipsshow.php:134
-#, fuzzy
msgid "Could not determine source user."
-msgstr "Klarte ikke å oppdatere bruker."
+msgstr "Kunne ikke bestemme kildebruker."
#: actions/apifriendshipsshow.php:142
-#, fuzzy
msgid "Could not find target user."
-msgstr "Klarte ikke å oppdatere bruker."
+msgstr "Kunne ikke finne målbruker."
#: actions/apigroupcreate.php:164 actions/editgroup.php:182
#: actions/newgroup.php:126 actions/profilesettings.php:215
@@ -393,8 +384,8 @@ msgstr "Det nicket er allerede i bruk. Prøv et annet."
msgid "Not a valid nickname."
msgstr "Ugyldig nick."
-#: actions/apigroupcreate.php:196 actions/editapplication.php:212
-#: actions/editgroup.php:195 actions/newapplication.php:200
+#: actions/apigroupcreate.php:196 actions/editapplication.php:215
+#: actions/editgroup.php:195 actions/newapplication.php:203
#: actions/newgroup.php:139 actions/profilesettings.php:222
#: actions/register.php:217
msgid "Homepage is not a valid URL."
@@ -406,8 +397,8 @@ msgstr "Hjemmesiden er ikke en gyldig URL."
msgid "Full name is too long (max 255 chars)."
msgstr "Beklager, navnet er for langt (max 250 tegn)."
-#: actions/apigroupcreate.php:213 actions/editapplication.php:187
-#: actions/newapplication.php:169
+#: actions/apigroupcreate.php:213 actions/editapplication.php:190
+#: actions/newapplication.php:172
#, php-format
msgid "Description is too long (max %d chars)."
msgstr "Beskrivelsen er for lang (maks %d tegn)."
@@ -422,31 +413,30 @@ msgstr ""
#: actions/newgroup.php:159
#, php-format
msgid "Too many aliases! Maximum %d."
-msgstr ""
+msgstr "For mange alias! Maksimum %d."
#: actions/apigroupcreate.php:264 actions/editgroup.php:224
#: actions/newgroup.php:168
-#, fuzzy, php-format
+#, php-format
msgid "Invalid alias: \"%s\""
-msgstr "Ugyldig hjemmeside '%s'"
+msgstr "Ugyldig alias: «%s»"
#: actions/apigroupcreate.php:273 actions/editgroup.php:228
#: actions/newgroup.php:172
-#, fuzzy, php-format
+#, php-format
msgid "Alias \"%s\" already in use. Try another one."
-msgstr "Det nicket er allerede i bruk. Prøv et annet."
+msgstr "Aliaset «%s» er allerede i bruk. Prøv et annet."
#: actions/apigroupcreate.php:286 actions/editgroup.php:234
#: actions/newgroup.php:178
msgid "Alias can't be the same as nickname."
-msgstr ""
+msgstr "Alias kan ikke være det samme som kallenavn."
#: actions/apigroupismember.php:95 actions/apigroupjoin.php:104
#: actions/apigroupleave.php:104 actions/apigroupmembership.php:91
#: actions/apigroupshow.php:82 actions/apitimelinegroup.php:91
-#, fuzzy
msgid "Group not found!"
-msgstr "API-metode ikke funnet!"
+msgstr "Gruppe ikke funnet!"
#: actions/apigroupjoin.php:110 actions/joingroup.php:90
msgid "You are already a member of that group."
@@ -454,22 +444,21 @@ msgstr "Du er allerede medlem av den gruppen."
#: actions/apigroupjoin.php:119 actions/joingroup.php:95 lib/command.php:221
msgid "You have been blocked from that group by the admin."
-msgstr ""
+msgstr "Du har blitt blokkert fra den gruppen av administratoren."
#: actions/apigroupjoin.php:138 actions/joingroup.php:124
-#, fuzzy, php-format
+#, php-format
msgid "Could not join user %1$s to group %2$s."
-msgstr "Klarte ikke å oppdatere bruker."
+msgstr "Kunne ikke legge bruker %1$s til gruppe %2$s."
#: actions/apigroupleave.php:114
-#, fuzzy
msgid "You are not a member of this group."
-msgstr "Du er allerede logget inn!"
+msgstr "Du er ikke et medlem av denne gruppen."
#: actions/apigroupleave.php:124 actions/leavegroup.php:119
-#, fuzzy, php-format
+#, php-format
msgid "Could not remove user %1$s from group %2$s."
-msgstr "Klarte ikke å oppdatere bruker."
+msgstr "Kunne ikke fjerne bruker %1$s fra gruppe %2$s."
#: actions/apigrouplist.php:95
#, php-format
@@ -479,25 +468,30 @@ msgstr "%s sine grupper"
#: actions/apigrouplistall.php:90 actions/usergroups.php:62
#, php-format
msgid "%s groups"
-msgstr ""
+msgstr "%s grupper"
#: actions/apigrouplistall.php:94
#, php-format
msgid "groups on %s"
-msgstr ""
+msgstr "grupper på %s"
-#: actions/apioauthauthorize.php:108 actions/apioauthauthorize.php:114
-msgid "Bad request."
-msgstr ""
+#: actions/apioauthauthorize.php:101
+msgid "No oauth_token parameter provided."
+msgstr "Ingen verdi for oauth_token er oppgitt."
+
+#: actions/apioauthauthorize.php:106
+#, fuzzy
+msgid "Invalid token."
+msgstr "Ugyldig størrelse"
-#: actions/apioauthauthorize.php:134 actions/avatarsettings.php:268
+#: actions/apioauthauthorize.php:123 actions/avatarsettings.php:268
#: actions/deletenotice.php:157 actions/disfavor.php:74
-#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:50
+#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:54
#: actions/groupblock.php:66 actions/grouplogo.php:309
#: actions/groupunblock.php:66 actions/imsettings.php:206
#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
-#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:139
+#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:135
#: actions/othersettings.php:145 actions/passwordsettings.php:138
#: actions/profilesettings.php:194 actions/recoverpassword.php:337
#: actions/register.php:165 actions/remotesubscribe.php:77
@@ -508,76 +502,82 @@ msgstr ""
msgid "There was a problem with your session token. Try again, please."
msgstr ""
-#: actions/apioauthauthorize.php:146
-#, fuzzy
+#: actions/apioauthauthorize.php:135
msgid "Invalid nickname / password!"
-msgstr "Ugyldig brukernavn eller passord"
+msgstr "Ugyldig kallenavn / passord!"
-#: actions/apioauthauthorize.php:170
+#: actions/apioauthauthorize.php:159
msgid "Database error deleting OAuth application user."
msgstr ""
-#: actions/apioauthauthorize.php:196
+#: actions/apioauthauthorize.php:185
msgid "Database error inserting OAuth application user."
msgstr ""
-#: actions/apioauthauthorize.php:231
+#: actions/apioauthauthorize.php:214
#, php-format
msgid ""
"The request token %s has been authorized. Please exchange it for an access "
"token."
msgstr ""
-#: actions/apioauthauthorize.php:241
+#: actions/apioauthauthorize.php:227
#, php-format
-msgid "The request token %s has been denied."
+msgid "The request token %s has been denied and revoked."
msgstr ""
-#: actions/apioauthauthorize.php:246 actions/avatarsettings.php:281
+#: actions/apioauthauthorize.php:232 actions/avatarsettings.php:281
#: actions/designadminpanel.php:103 actions/editapplication.php:139
#: actions/emailsettings.php:256 actions/grouplogo.php:319
#: actions/imsettings.php:220 actions/newapplication.php:121
-#: actions/oauthconnectionssettings.php:151 actions/recoverpassword.php:44
+#: actions/oauthconnectionssettings.php:147 actions/recoverpassword.php:44
#: actions/smssettings.php:248 lib/designsettings.php:304
msgid "Unexpected form submission."
msgstr ""
-#: actions/apioauthauthorize.php:273
+#: actions/apioauthauthorize.php:259
msgid "An application would like to connect to your account"
msgstr ""
-#: actions/apioauthauthorize.php:290
+#: actions/apioauthauthorize.php:276
msgid "Allow or deny access"
+msgstr "Tillat eller nekt tilgang"
+
+#: actions/apioauthauthorize.php:292
+#, php-format
+msgid ""
+"The application <strong>%1$s</strong> by <strong>%2$s</strong> would like "
+"the ability to <strong>%3$s</strong> your %4$s account data. You should only "
+"give access to your %4$s account to third parties you trust."
msgstr ""
-#: actions/apioauthauthorize.php:320 lib/action.php:441
-#, fuzzy
+#: actions/apioauthauthorize.php:310 lib/action.php:441
msgid "Account"
-msgstr "Om"
+msgstr "Konto"
-#: actions/apioauthauthorize.php:323 actions/login.php:230
+#: actions/apioauthauthorize.php:313 actions/login.php:230
#: actions/profilesettings.php:106 actions/register.php:424
#: actions/showgroup.php:236 actions/tagother.php:94 lib/groupeditform.php:152
#: lib/userprofile.php:131
msgid "Nickname"
msgstr "Nick"
-#: actions/apioauthauthorize.php:326 actions/login.php:233
+#: actions/apioauthauthorize.php:316 actions/login.php:233
#: actions/register.php:429 lib/accountsettingsaction.php:116
msgid "Password"
msgstr "Passord"
-#: actions/apioauthauthorize.php:338
+#: actions/apioauthauthorize.php:328
msgid "Deny"
-msgstr ""
+msgstr "Nekt"
-#: actions/apioauthauthorize.php:344
+#: actions/apioauthauthorize.php:334
msgid "Allow"
-msgstr ""
+msgstr "Tillat"
-#: actions/apioauthauthorize.php:361
+#: actions/apioauthauthorize.php:351
msgid "Allow or deny access to your account information."
-msgstr ""
+msgstr "Tillat eller nekt tilgang til din kontoinformasjon."
#: actions/apistatusesdestroy.php:107
msgid "This method requires a POST or DELETE."
@@ -585,30 +585,28 @@ msgstr ""
#: actions/apistatusesdestroy.php:130
msgid "You may not delete another user's status."
-msgstr ""
+msgstr "Du kan ikke slette statusen til en annen bruker."
#: actions/apistatusesretweet.php:75 actions/apistatusesretweets.php:72
#: actions/deletenotice.php:52 actions/shownotice.php:92
msgid "No such notice."
-msgstr ""
+msgstr "Ingen slik notis."
#: actions/apistatusesretweet.php:83
-#, fuzzy
msgid "Cannot repeat your own notice."
-msgstr "Kan ikke slette notisen."
+msgstr "Kan ikke gjenta din egen notis."
#: actions/apistatusesretweet.php:91
-#, fuzzy
msgid "Already repeated that notice."
-msgstr "Kan ikke slette notisen."
+msgstr "Allerede gjentatt den notisen."
#: actions/apistatusesshow.php:138
msgid "Status deleted."
-msgstr ""
+msgstr "Status slettet."
#: actions/apistatusesshow.php:144
msgid "No status with that ID found."
-msgstr ""
+msgstr "Ingen status med den ID-en funnet."
#: actions/apistatusesupdate.php:161 actions/newnotice.php:155
#: lib/mailhandler.php:60
@@ -618,7 +616,7 @@ msgstr ""
#: actions/apistatusesupdate.php:202
msgid "Not found"
-msgstr ""
+msgstr "Ikke funnet"
#: actions/apistatusesupdate.php:225 actions/newnotice.php:178
#, php-format
@@ -630,14 +628,14 @@ msgid "Unsupported format."
msgstr ""
#: actions/apitimelinefavorites.php:108
-#, fuzzy, php-format
+#, php-format
msgid "%1$s / Favorites from %2$s"
-msgstr "%1$s / Oppdateringer som svarer til %2$s"
+msgstr "%1$s / Favoritter fra %2$s"
#: actions/apitimelinefavorites.php:120
-#, fuzzy, php-format
+#, php-format
msgid "%1$s updates favorited by %2$s / %2$s."
-msgstr "%1$s oppdateringer som svarer på oppdateringer fra %2$s / %3$s."
+msgstr "%1$s oppdateringer markert som favoritt av %2$s / %2$s."
#: actions/apitimelinegroup.php:109 actions/apitimelineuser.php:118
#: actions/grouprss.php:131 actions/userrss.php:90
@@ -649,12 +647,12 @@ msgstr "%s tidslinje"
#: actions/userrss.php:92
#, php-format
msgid "Updates from %1$s on %2$s!"
-msgstr ""
+msgstr "Oppdateringar fra %1$s på %2$s!"
#: actions/apitimelinementions.php:117
-#, fuzzy, php-format
+#, php-format
msgid "%1$s / Updates mentioning %2$s"
-msgstr "%1$s / Oppdateringer som svarer til %2$s"
+msgstr "%1$s / Oppdateringer som nevner %2$s"
#: actions/apitimelinementions.php:127
#, php-format
@@ -672,9 +670,9 @@ msgid "%s updates from everyone!"
msgstr "%s oppdateringer fra alle sammen!"
#: actions/apitimelineretweetedtome.php:111
-#, fuzzy, php-format
+#, php-format
msgid "Repeated to %s"
-msgstr "Svar til %s"
+msgstr "Gjentatt til %s"
#: actions/apitimelineretweetsofme.php:112
#, fuzzy, php-format
@@ -684,21 +682,20 @@ msgstr "Svar til %s"
#: actions/apitimelinetag.php:102 actions/tag.php:66
#, php-format
msgid "Notices tagged with %s"
-msgstr ""
+msgstr "Notiser merket med %s"
#: actions/apitimelinetag.php:108 actions/tagrss.php:64
-#, fuzzy, php-format
+#, php-format
msgid "Updates tagged with %1$s on %2$s!"
-msgstr "Mikroblogg av %s"
+msgstr "Oppdateringer merket med %1$s på %2$s!"
#: actions/apiusershow.php:96
-#, fuzzy
msgid "Not found."
-msgstr "Ingen id."
+msgstr "Ikke funnet."
#: actions/attachment.php:73
msgid "No such attachment."
-msgstr ""
+msgstr "Ingen slike vedlegg."
#: actions/avatarbynickname.php:59 actions/blockedfromgroup.php:73
#: actions/editgroup.php:84 actions/groupdesignsettings.php:84
@@ -706,11 +703,11 @@ msgstr ""
#: actions/grouprss.php:91 actions/joingroup.php:76 actions/leavegroup.php:76
#: actions/showgroup.php:121
msgid "No nickname."
-msgstr ""
+msgstr "Ingen kallenavn."
#: actions/avatarbynickname.php:64
msgid "No size."
-msgstr ""
+msgstr "Ingen størrelse."
#: actions/avatarbynickname.php:69
msgid "Invalid size."
@@ -741,18 +738,17 @@ msgstr "Innstillinger for IM"
#: actions/avatarsettings.php:127 actions/avatarsettings.php:205
#: actions/grouplogo.php:199 actions/grouplogo.php:259
msgid "Original"
-msgstr ""
+msgstr "Original"
#: actions/avatarsettings.php:142 actions/avatarsettings.php:217
#: actions/grouplogo.php:210 actions/grouplogo.php:271
msgid "Preview"
-msgstr ""
+msgstr "Forhåndsvis"
-#: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:608
-#, fuzzy
+#: actions/avatarsettings.php:149 actions/showapplication.php:252
+#: lib/deleteuserform.php:66 lib/noticelist.php:624
msgid "Delete"
-msgstr "slett"
+msgstr "Slett"
#: actions/avatarsettings.php:166 actions/grouplogo.php:233
msgid "Upload"
@@ -760,7 +756,7 @@ msgstr "Last opp"
#: actions/avatarsettings.php:231 actions/grouplogo.php:286
msgid "Crop"
-msgstr ""
+msgstr "Beskjær"
#: actions/avatarsettings.php:328
msgid "Pick a square area of the image to be your avatar"
@@ -784,13 +780,12 @@ msgid "Avatar deleted."
msgstr "Brukerbildet har blitt oppdatert."
#: actions/block.php:69
-#, fuzzy
msgid "You already blocked that user."
-msgstr "Du er allerede logget inn!"
+msgstr "Du har allerede blokkert den brukeren."
#: actions/block.php:105 actions/block.php:128 actions/groupblock.php:160
msgid "Block user"
-msgstr ""
+msgstr "Blokker brukeren"
#: actions/block.php:130
msgid ""
@@ -799,25 +794,25 @@ msgid ""
"will not be notified of any @-replies from them."
msgstr ""
-#: actions/block.php:143 actions/deletenotice.php:145
-#: actions/deleteuser.php:147 actions/groupblock.php:178
+#: actions/block.php:143 actions/deleteapplication.php:153
+#: actions/deletenotice.php:145 actions/deleteuser.php:147
+#: actions/groupblock.php:178
msgid "No"
-msgstr ""
+msgstr "Nei"
#: actions/block.php:143 actions/deleteuser.php:147
-#, fuzzy
msgid "Do not block this user"
-msgstr "Kan ikke slette notisen."
+msgstr "Ikke blokker denne brukeren"
-#: actions/block.php:144 actions/deletenotice.php:146
-#: actions/deleteuser.php:148 actions/groupblock.php:179
-#: lib/repeatform.php:132
+#: actions/block.php:144 actions/deleteapplication.php:158
+#: actions/deletenotice.php:146 actions/deleteuser.php:148
+#: actions/groupblock.php:179 lib/repeatform.php:132
msgid "Yes"
msgstr "Ja"
#: actions/block.php:144 actions/groupmembers.php:346 lib/blockform.php:80
msgid "Block this user"
-msgstr ""
+msgstr "Blokker denne brukeren"
#: actions/block.php:167
msgid "Failed to save block information."
@@ -830,19 +825,18 @@ msgstr ""
#: actions/grouprss.php:98 actions/groupunblock.php:86
#: actions/joingroup.php:83 actions/leavegroup.php:83 actions/makeadmin.php:86
#: actions/showgroup.php:137 lib/command.php:212 lib/command.php:260
-#, fuzzy
msgid "No such group."
-msgstr "Klarte ikke å lagre profil."
+msgstr "Ingen slik gruppe."
#: actions/blockedfromgroup.php:90
-#, fuzzy, php-format
+#, php-format
msgid "%s blocked profiles"
-msgstr "Klarte ikke å lagre profil."
+msgstr "%s blokkerte profiler"
#: actions/blockedfromgroup.php:93
-#, fuzzy, php-format
+#, php-format
msgid "%1$s blocked profiles, page %2$d"
-msgstr "%s og venner"
+msgstr "%1$s blokkerte profiler, side %2$d"
#: actions/blockedfromgroup.php:108
msgid "A list of the users blocked from joining this group."
@@ -899,7 +893,6 @@ msgid "Couldn't delete email confirmation."
msgstr ""
#: actions/confirmaddress.php:144
-#, fuzzy
msgid "Confirm address"
msgstr "Bekreft adresse"
@@ -909,15 +902,58 @@ msgid "The address \"%s\" has been confirmed for your account."
msgstr ""
#: actions/conversation.php:99
-#, fuzzy
msgid "Conversation"
-msgstr "Bekreftelseskode"
+msgstr "Samtale"
#: actions/conversation.php:154 lib/mailbox.php:116 lib/noticelist.php:87
#: lib/profileaction.php:216 lib/searchgroupnav.php:82
msgid "Notices"
msgstr ""
+#: actions/deleteapplication.php:63
+#, fuzzy
+msgid "You must be logged in to delete an application."
+msgstr "Gjør brukeren til en administrator for gruppen"
+
+#: actions/deleteapplication.php:71
+#, fuzzy
+msgid "Application not found."
+msgstr "Fant ikke bekreftelseskode."
+
+#: actions/deleteapplication.php:78 actions/editapplication.php:77
+#: actions/showapplication.php:94
+#, fuzzy
+msgid "You are not the owner of this application."
+msgstr "Du er allerede logget inn!"
+
+#: actions/deleteapplication.php:102 actions/editapplication.php:127
+#: actions/newapplication.php:110 actions/showapplication.php:118
+#: lib/action.php:1195
+msgid "There was a problem with your session token."
+msgstr ""
+
+#: actions/deleteapplication.php:123 actions/deleteapplication.php:147
+#, fuzzy
+msgid "Delete application"
+msgstr "Ingen slik side"
+
+#: actions/deleteapplication.php:149
+msgid ""
+"Are you sure you want to delete this application? This will clear all data "
+"about the application from the database, including all existing user "
+"connections."
+msgstr ""
+
+#: actions/deleteapplication.php:156
+#, fuzzy
+msgid "Do not delete this application"
+msgstr "Kan ikke slette notisen."
+
+#: actions/deleteapplication.php:160
+#, fuzzy
+msgid "Delete this application"
+msgstr "Beskriv degselv og dine interesser med 140 tegn"
+
#: actions/deletenotice.php:67 actions/disfavor.php:61 actions/favor.php:62
#: actions/groupblock.php:61 actions/groupunblock.php:61 actions/logout.php:69
#: actions/makeadmin.php:61 actions/newmessage.php:87 actions/newnotice.php:89
@@ -940,35 +976,31 @@ msgstr ""
#: actions/deletenotice.php:109 actions/deletenotice.php:141
msgid "Delete notice"
-msgstr ""
+msgstr "Slett notis"
#: actions/deletenotice.php:144
msgid "Are you sure you want to delete this notice?"
msgstr "Er du sikker på at du vil slette denne notisen?"
#: actions/deletenotice.php:145
-#, fuzzy
msgid "Do not delete this notice"
-msgstr "Kan ikke slette notisen."
+msgstr "Ikke slett denne notisen"
-#: actions/deletenotice.php:146 lib/noticelist.php:608
+#: actions/deletenotice.php:146 lib/noticelist.php:624
msgid "Delete this notice"
-msgstr ""
+msgstr "Slett denne notisen"
#: actions/deleteuser.php:67
-#, fuzzy
msgid "You cannot delete users."
-msgstr "Klarte ikke å oppdatere bruker."
+msgstr "Du kan ikke slette brukere."
#: actions/deleteuser.php:74
-#, fuzzy
msgid "You can only delete local users."
-msgstr "Ugyldig OpenID"
+msgstr "Du kan bare slette lokale brukere."
#: actions/deleteuser.php:110 actions/deleteuser.php:133
-#, fuzzy
msgid "Delete user"
-msgstr "slett"
+msgstr "Slett bruker"
#: actions/deleteuser.php:135
msgid ""
@@ -977,9 +1009,8 @@ msgid ""
msgstr ""
#: actions/deleteuser.php:148 lib/deleteuserform.php:77
-#, fuzzy
msgid "Delete this user"
-msgstr "Kan ikke slette notisen."
+msgstr "Slett denne brukeren"
#: actions/designadminpanel.php:62 lib/accountsettingsaction.php:124
#: lib/adminpanelaction.php:316 lib/groupnav.php:119
@@ -1001,13 +1032,12 @@ msgid "Theme not available: %s"
msgstr ""
#: actions/designadminpanel.php:375
-#, fuzzy
msgid "Change logo"
-msgstr "Endre passordet ditt"
+msgstr "Endre logo"
#: actions/designadminpanel.php:380
msgid "Site logo"
-msgstr ""
+msgstr "Nettstedslogo"
#: actions/designadminpanel.php:387
#, fuzzy
@@ -1025,12 +1055,12 @@ msgstr ""
#: actions/designadminpanel.php:417 lib/designsettings.php:101
msgid "Change background image"
-msgstr ""
+msgstr "Endre bakgrunnsbilde"
#: actions/designadminpanel.php:422 actions/designadminpanel.php:497
#: lib/designsettings.php:178
msgid "Background"
-msgstr ""
+msgstr "Bakgrunn"
#: actions/designadminpanel.php:427
#, php-format
@@ -1060,9 +1090,8 @@ msgid "Change colours"
msgstr "Endre farger"
#: actions/designadminpanel.php:510 lib/designsettings.php:191
-#, fuzzy
msgid "Content"
-msgstr "Koble til"
+msgstr "Innhold"
#: actions/designadminpanel.php:523 lib/designsettings.php:204
#, fuzzy
@@ -1079,7 +1108,7 @@ msgstr "Lenker"
#: actions/designadminpanel.php:577 lib/designsettings.php:247
msgid "Use defaults"
-msgstr ""
+msgstr "Bruk standard"
#: actions/designadminpanel.php:578 lib/designsettings.php:248
msgid "Restore default designs"
@@ -1099,9 +1128,9 @@ msgstr ""
#: actions/disfavor.php:94
msgid "Add to favorites"
-msgstr ""
+msgstr "Legg til i favoritter"
-#: actions/doc.php:155
+#: actions/doc.php:158
#, php-format
msgid "No such document \"%s\""
msgstr ""
@@ -1116,71 +1145,61 @@ msgstr "Ingen slik side"
msgid "You must be logged in to edit an application."
msgstr "Gjør brukeren til en administrator for gruppen"
-#: actions/editapplication.php:77 actions/showapplication.php:94
-#, fuzzy
-msgid "You are not the owner of this application."
-msgstr "Du er allerede logget inn!"
-
-#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:163
+#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:166
#: actions/showapplication.php:87
#, fuzzy
msgid "No such application."
msgstr "Ingen slik side"
-#: actions/editapplication.php:127 actions/newapplication.php:110
-#: actions/showapplication.php:118 lib/action.php:1195
-msgid "There was a problem with your session token."
-msgstr ""
-
#: actions/editapplication.php:161
msgid "Use this form to edit your application."
msgstr ""
#: actions/editapplication.php:177 actions/newapplication.php:159
msgid "Name is required."
-msgstr ""
+msgstr "Navn kreves."
-#: actions/editapplication.php:180 actions/newapplication.php:162
-#, fuzzy
+#: actions/editapplication.php:180 actions/newapplication.php:165
msgid "Name is too long (max 255 chars)."
-msgstr "Beklager, navnet er for langt (max 250 tegn)."
+msgstr "Navn er for langt (maks 250 tegn)."
-#: actions/editapplication.php:183 actions/newapplication.php:165
-#, fuzzy
+#: actions/editapplication.php:183 actions/newapplication.php:162
+msgid "Name already in use. Try another one."
+msgstr "Navn allerede i bruk. Prøv et annet."
+
+#: actions/editapplication.php:186 actions/newapplication.php:168
msgid "Description is required."
-msgstr "Alle abonnementer"
+msgstr "Beskrivelse kreves."
-#: actions/editapplication.php:191
+#: actions/editapplication.php:194
msgid "Source URL is too long."
-msgstr ""
+msgstr "Kilde-URL er for lang."
-#: actions/editapplication.php:197 actions/newapplication.php:182
-#, fuzzy
+#: actions/editapplication.php:200 actions/newapplication.php:185
msgid "Source URL is not valid."
-msgstr "Hjemmesiden er ikke en gyldig URL."
+msgstr "Kilde-URL er ikke gyldig."
-#: actions/editapplication.php:200 actions/newapplication.php:185
+#: actions/editapplication.php:203 actions/newapplication.php:188
msgid "Organization is required."
-msgstr ""
+msgstr "Organisasjon kreves."
-#: actions/editapplication.php:203 actions/newapplication.php:188
-#, fuzzy
+#: actions/editapplication.php:206 actions/newapplication.php:191
msgid "Organization is too long (max 255 chars)."
-msgstr "Beskrivelsen er for lang (maks %d tegn)."
+msgstr "Organisasjon er for lang (maks 255 tegn)."
-#: actions/editapplication.php:206 actions/newapplication.php:191
+#: actions/editapplication.php:209 actions/newapplication.php:194
msgid "Organization homepage is required."
msgstr ""
-#: actions/editapplication.php:215 actions/newapplication.php:203
+#: actions/editapplication.php:218 actions/newapplication.php:206
msgid "Callback is too long."
msgstr ""
-#: actions/editapplication.php:222 actions/newapplication.php:212
+#: actions/editapplication.php:225 actions/newapplication.php:215
msgid "Callback URL is not valid."
msgstr ""
-#: actions/editapplication.php:255
+#: actions/editapplication.php:258
#, fuzzy
msgid "Could not update application."
msgstr "Klarte ikke å oppdatere bruker."
@@ -1192,7 +1211,7 @@ msgstr ""
#: actions/editgroup.php:68 actions/grouplogo.php:70 actions/newgroup.php:65
msgid "You must be logged in to create a group."
-msgstr ""
+msgstr "Du må være innlogget for å opprette en gruppe."
#: actions/editgroup.php:103 actions/editgroup.php:168
#: actions/groupdesignsettings.php:104 actions/grouplogo.php:106
@@ -1205,19 +1224,17 @@ msgid "Use this form to edit the group."
msgstr ""
#: actions/editgroup.php:201 actions/newgroup.php:145
-#, fuzzy, php-format
+#, php-format
msgid "description is too long (max %d chars)."
-msgstr "Bioen er for lang (max 140 tegn)"
+msgstr "beskrivelse er for lang (maks %d tegn)"
#: actions/editgroup.php:253
-#, fuzzy
msgid "Could not update group."
-msgstr "Klarte ikke å oppdatere bruker."
+msgstr "Kunne ikke oppdatere gruppe."
#: actions/editgroup.php:259 classes/User_group.php:390
-#, fuzzy
msgid "Could not create aliases."
-msgstr "Klarte ikke å lagre avatar-informasjonen"
+msgstr "Kunne ikke opprette alias."
#: actions/editgroup.php:269
msgid "Options saved."
@@ -1263,13 +1280,12 @@ msgid "Cancel"
msgstr "Avbryt"
#: actions/emailsettings.php:121
-#, fuzzy
msgid "Email address"
msgstr "E-postadresse"
#: actions/emailsettings.php:123
msgid "Email address, like \"UserName@example.org\""
-msgstr ""
+msgstr "E-postadresse («brukernavn@eksempel.org»)"
#: actions/emailsettings.php:126 actions/imsettings.php:133
#: actions/smssettings.php:145
@@ -1521,14 +1537,12 @@ msgid "Error updating remote profile"
msgstr ""
#: actions/getfile.php:79
-#, fuzzy
msgid "No such file."
-msgstr "Klarte ikke å lagre profil."
+msgstr "Ingen slik fil."
#: actions/getfile.php:83
-#, fuzzy
msgid "Cannot read file."
-msgstr "Klarte ikke å lagre profil."
+msgstr "Kan ikke lese fil."
#: actions/groupblock.php:71 actions/groupunblock.php:71
#: actions/makeadmin.php:71 actions/subedit.php:46
@@ -1585,9 +1599,8 @@ msgid "Database error blocking user from group."
msgstr ""
#: actions/groupbyid.php:74 actions/userbyid.php:70
-#, fuzzy
msgid "No ID."
-msgstr "Ingen id."
+msgstr "Ingen ID."
#: actions/groupdesignsettings.php:68
msgid "You must be logged in to edit a group."
@@ -1615,7 +1628,7 @@ msgstr ""
#: actions/grouplogo.php:139 actions/grouplogo.php:192
msgid "Group logo"
-msgstr ""
+msgstr "Gruppelogo"
#: actions/grouplogo.php:150
#, php-format
@@ -1633,9 +1646,8 @@ msgid "Pick a square area of the image to be the logo."
msgstr ""
#: actions/grouplogo.php:396
-#, fuzzy
msgid "Logo updated."
-msgstr "Avataren har blitt oppdatert."
+msgstr "Logo oppdatert."
#: actions/grouplogo.php:398
msgid "Failed updating logo."
@@ -1644,7 +1656,7 @@ msgstr ""
#: actions/groupmembers.php:93 lib/groupnav.php:92
#, php-format
msgid "%s group members"
-msgstr ""
+msgstr "%s gruppemedlemmer"
#: actions/groupmembers.php:96
#, php-format
@@ -1701,9 +1713,8 @@ msgid ""
msgstr ""
#: actions/groups.php:107 actions/usergroups.php:124 lib/groupeditform.php:122
-#, fuzzy
msgid "Create a new group"
-msgstr "Opprett en ny konto"
+msgstr "Opprett en ny gruppe"
#: actions/groupsearch.php:52
#, php-format
@@ -1713,14 +1724,13 @@ msgid ""
msgstr ""
#: actions/groupsearch.php:58
-#, fuzzy
msgid "Group search"
-msgstr "Tekst-søk"
+msgstr "Gruppesøk"
#: actions/groupsearch.php:79 actions/noticesearch.php:117
#: actions/peoplesearch.php:83
msgid "No results."
-msgstr ""
+msgstr "Ingen resultat."
#: actions/groupsearch.php:82
#, php-format
@@ -1841,12 +1851,12 @@ msgstr "Det er ikke din Jabber ID."
#: actions/inbox.php:59
#, php-format
msgid "Inbox for %1$s - page %2$d"
-msgstr ""
+msgstr "Innboks for %1$s - side %2$d"
#: actions/inbox.php:62
#, php-format
msgid "Inbox for %s"
-msgstr ""
+msgstr "Innboks for %s"
#: actions/inbox.php:115
msgid "This is your inbox, which lists your incoming private messages."
@@ -1854,7 +1864,7 @@ msgstr ""
#: actions/invite.php:39
msgid "Invites have been disabled."
-msgstr ""
+msgstr "Invitasjoner har blitt deaktivert."
#: actions/invite.php:41
#, php-format
@@ -1864,15 +1874,15 @@ msgstr ""
#: actions/invite.php:72
#, php-format
msgid "Invalid email address: %s"
-msgstr ""
+msgstr "Ugyldig e-postadresse: %s"
#: actions/invite.php:110
msgid "Invitation(s) sent"
-msgstr ""
+msgstr "Invitasjon(er) sendt"
#: actions/invite.php:112
msgid "Invite new users"
-msgstr ""
+msgstr "Inviter nye brukere"
#: actions/invite.php:128
msgid "You are already subscribed to these users:"
@@ -1881,7 +1891,7 @@ msgstr ""
#: actions/invite.php:131 actions/invite.php:139 lib/command.php:306
#, php-format
msgid "%1$s (%2$s)"
-msgstr ""
+msgstr "%1$s (%2$s)"
#: actions/invite.php:136
msgid ""
@@ -1905,7 +1915,7 @@ msgstr ""
#: actions/invite.php:187
msgid "Email addresses"
-msgstr ""
+msgstr "E-postadresser"
#: actions/invite.php:189
msgid "Addresses of friends to invite (one per line)"
@@ -1913,7 +1923,7 @@ msgstr "Adresser til venner som skal inviteres (én per linje)"
#: actions/invite.php:192
msgid "Personal message"
-msgstr ""
+msgstr "Personlig melding"
#: actions/invite.php:194
msgid "Optionally add a personal message to the invitation."
@@ -1982,7 +1992,7 @@ msgstr ""
#: actions/joingroup.php:60
msgid "You must be logged in to join a group."
-msgstr ""
+msgstr "Du må være innlogget for å bli med i en gruppe."
#: actions/joingroup.php:131
#, php-format
@@ -1998,9 +2008,9 @@ msgid "You are not a member of that group."
msgstr ""
#: actions/leavegroup.php:127
-#, fuzzy, php-format
+#, php-format
msgid "%1$s left group %2$s"
-msgstr "%1$s sin status på %2$s"
+msgstr "%1$s forlot gruppe %2$s"
#: actions/login.php:80 actions/otp.php:62 actions/register.php:137
msgid "Already logged in."
@@ -2071,7 +2081,7 @@ msgstr "Gjør brukeren til en administrator for gruppen"
#: actions/microsummary.php:69
msgid "No current status"
-msgstr ""
+msgstr "Ingen nåværende status"
#: actions/newapplication.php:52
#, fuzzy
@@ -2086,11 +2096,11 @@ msgstr ""
msgid "Use this form to register a new application."
msgstr ""
-#: actions/newapplication.php:173
+#: actions/newapplication.php:176
msgid "Source URL is required."
msgstr ""
-#: actions/newapplication.php:255 actions/newapplication.php:264
+#: actions/newapplication.php:258 actions/newapplication.php:267
#, fuzzy
msgid "Could not create application."
msgstr "Klarte ikke å lagre avatar-informasjonen"
@@ -2193,11 +2203,11 @@ msgstr ""
#: actions/nudge.php:94
msgid "Nudge sent"
-msgstr ""
+msgstr "Knuff sendt"
#: actions/nudge.php:97
msgid "Nudge sent!"
-msgstr ""
+msgstr "Knuff sendt!"
#: actions/oauthappssettings.php:59
msgid "You must be logged in to list your applications."
@@ -2216,29 +2226,29 @@ msgstr ""
msgid "You have not registered any applications yet."
msgstr ""
-#: actions/oauthconnectionssettings.php:71
+#: actions/oauthconnectionssettings.php:72
msgid "Connected applications"
msgstr ""
-#: actions/oauthconnectionssettings.php:87
+#: actions/oauthconnectionssettings.php:83
msgid "You have allowed the following applications to access you account."
msgstr ""
-#: actions/oauthconnectionssettings.php:170
+#: actions/oauthconnectionssettings.php:175
#, fuzzy
msgid "You are not a user of that application."
msgstr "Du er allerede logget inn!"
-#: actions/oauthconnectionssettings.php:180
+#: actions/oauthconnectionssettings.php:186
msgid "Unable to revoke access for app: "
msgstr ""
-#: actions/oauthconnectionssettings.php:192
+#: actions/oauthconnectionssettings.php:198
#, php-format
msgid "You have not authorized any applications to use your account."
msgstr ""
-#: actions/oauthconnectionssettings.php:205
+#: actions/oauthconnectionssettings.php:211
msgid "Developers can edit the registration settings for their applications "
msgstr ""
@@ -2253,11 +2263,11 @@ msgstr "%1$s sin status på %2$s"
#: actions/oembed.php:157
msgid "content type "
-msgstr ""
+msgstr "innholdstype "
#: actions/oembed.php:160
msgid "Only "
-msgstr ""
+msgstr "Bare "
#: actions/oembed.php:181 actions/oembed.php:200 lib/api.php:1039
#: lib/api.php:1067 lib/api.php:1177
@@ -2273,9 +2283,8 @@ msgid "Notice Search"
msgstr ""
#: actions/othersettings.php:60
-#, fuzzy
msgid "Other settings"
-msgstr "Innstillinger for IM"
+msgstr "Andre innstillinger"
#: actions/othersettings.php:71
msgid "Manage various other options."
@@ -2332,30 +2341,28 @@ msgstr ""
#: actions/outbox.php:58
#, php-format
msgid "Outbox for %1$s - page %2$d"
-msgstr ""
+msgstr "Utboks for %1$s - side %2$d"
#: actions/outbox.php:61
#, php-format
msgid "Outbox for %s"
-msgstr ""
+msgstr "Utboks for %s"
#: actions/outbox.php:116
msgid "This is your outbox, which lists private messages you have sent."
-msgstr ""
+msgstr "Dette er utboksen din som viser alle private meldinger du har sendt."
#: actions/passwordsettings.php:58
msgid "Change password"
msgstr "Endre passord"
#: actions/passwordsettings.php:69
-#, fuzzy
msgid "Change your password."
-msgstr "Endre passord"
+msgstr "Endre passordet ditt."
#: actions/passwordsettings.php:96 actions/recoverpassword.php:231
-#, fuzzy
msgid "Password change"
-msgstr "Passordet ble lagret"
+msgstr "Endre passord"
#: actions/passwordsettings.php:104
msgid "Old password"
@@ -2376,7 +2383,7 @@ msgstr "Bekreft"
#: actions/passwordsettings.php:113 actions/recoverpassword.php:240
msgid "Same as password above"
-msgstr ""
+msgstr "Samme som passord ovenfor"
#: actions/passwordsettings.php:117
msgid "Change"
@@ -2384,11 +2391,11 @@ msgstr "Endre"
#: actions/passwordsettings.php:154 actions/register.php:230
msgid "Password must be 6 or more characters."
-msgstr ""
+msgstr "Passord må være minst 6 tegn."
#: actions/passwordsettings.php:157 actions/register.php:233
msgid "Passwords don't match."
-msgstr ""
+msgstr "Passordene var ikke like."
#: actions/passwordsettings.php:165
msgid "Incorrect old password"
@@ -2444,9 +2451,8 @@ msgid "Site"
msgstr ""
#: actions/pathsadminpanel.php:238
-#, fuzzy
msgid "Server"
-msgstr "Gjenopprett"
+msgstr "Tjener"
#: actions/pathsadminpanel.php:238
msgid "Site's server hostname."
@@ -2530,24 +2536,23 @@ msgstr ""
#: actions/pathsadminpanel.php:320
msgid "SSL"
-msgstr ""
+msgstr "SSL"
#: actions/pathsadminpanel.php:323 actions/siteadminpanel.php:294
-#, fuzzy
msgid "Never"
-msgstr "Gjenopprett"
+msgstr "Aldri"
#: actions/pathsadminpanel.php:324
msgid "Sometimes"
-msgstr ""
+msgstr "Noen ganger"
#: actions/pathsadminpanel.php:325
msgid "Always"
-msgstr ""
+msgstr "Alltid"
#: actions/pathsadminpanel.php:329
msgid "Use SSL"
-msgstr ""
+msgstr "Bruk SSL"
#: actions/pathsadminpanel.php:330
msgid "When to use SSL"
@@ -2674,7 +2679,7 @@ msgstr "Språk"
#: actions/profilesettings.php:152
msgid "Preferred language"
-msgstr ""
+msgstr "Foretrukket språk"
#: actions/profilesettings.php:161
msgid "Timezone"
@@ -2682,7 +2687,7 @@ msgstr "Tidssone"
#: actions/profilesettings.php:162
msgid "What timezone are you normally in?"
-msgstr ""
+msgstr "Hvilken tidssone er du vanligvis i?"
#: actions/profilesettings.php:167
msgid ""
@@ -2691,17 +2696,17 @@ msgstr ""
"Abonner automatisk på de som abonnerer på meg (best for ikke-mennesker)"
#: actions/profilesettings.php:228 actions/register.php:223
-#, fuzzy, php-format
+#, php-format
msgid "Bio is too long (max %d chars)."
-msgstr "«Om meg» er for lang (maks 140 tegn)."
+msgstr "«Om meg» er for lang (maks %d tegn)."
#: actions/profilesettings.php:235 actions/siteadminpanel.php:150
msgid "Timezone not selected."
-msgstr ""
+msgstr "Tidssone ikke valgt."
#: actions/profilesettings.php:241
msgid "Language is too long (max 50 chars)."
-msgstr ""
+msgstr "Språk er for langt (maks 50 tegn)."
#: actions/profilesettings.php:253 actions/tagother.php:178
#, fuzzy, php-format
@@ -2748,37 +2753,37 @@ msgstr ""
msgid "Public timeline"
msgstr ""
-#: actions/public.php:151
+#: actions/public.php:159
msgid "Public Stream Feed (RSS 1.0)"
msgstr ""
-#: actions/public.php:155
+#: actions/public.php:163
msgid "Public Stream Feed (RSS 2.0)"
msgstr ""
-#: actions/public.php:159
+#: actions/public.php:167
#, fuzzy
msgid "Public Stream Feed (Atom)"
msgstr "%s offentlig strøm"
-#: actions/public.php:179
+#: actions/public.php:187
#, php-format
msgid ""
"This is the public timeline for %%site.name%% but no one has posted anything "
"yet."
msgstr ""
-#: actions/public.php:182
+#: actions/public.php:190
msgid "Be the first to post!"
msgstr ""
-#: actions/public.php:186
+#: actions/public.php:194
#, php-format
msgid ""
"Why not [register an account](%%action.register%%) and be the first to post!"
msgstr ""
-#: actions/public.php:233
+#: actions/public.php:241
#, php-format
msgid ""
"This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2787,7 +2792,7 @@ msgid ""
"friends, family, and colleagues! ([Read more](%%doc.help%%))"
msgstr ""
-#: actions/public.php:238
+#: actions/public.php:246
#, php-format
msgid ""
"This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2973,7 +2978,7 @@ msgstr ""
#: actions/register.php:212
msgid "Email address already exists."
-msgstr ""
+msgstr "E-postadressen finnes allerede."
#: actions/register.php:243 actions/register.php:265
msgid "Invalid username or password."
@@ -2996,7 +3001,7 @@ msgstr "6 eller flere tegn. Påkrevd."
#: actions/register.php:434
msgid "Same as password above. Required."
-msgstr ""
+msgstr "Samme som passord over. Kreves."
#: actions/register.php:438 actions/register.php:442
#: actions/siteadminpanel.php:256 lib/accountsettingsaction.php:120
@@ -3013,23 +3018,22 @@ msgstr "Lengre navn, helst ditt \"ekte\" navn"
#: actions/register.php:494
msgid "My text and files are available under "
-msgstr ""
+msgstr "Teksten og filene mine er tilgjengelig under "
#: actions/register.php:496
msgid "Creative Commons Attribution 3.0"
-msgstr ""
+msgstr "Creative Commons Navngivelse 3.0"
#: actions/register.php:497
-#, fuzzy
msgid ""
" except this private data: password, email address, IM address, and phone "
"number."
msgstr ""
-"utenom disse private dataene: passord, epost, adresse, lynmeldingsadresse og "
-"telefonnummer."
+" utenom disse private dataene: passord, e-postadresse, lynmeldingsadresse "
+"og telefonnummer."
#: actions/register.php:538
-#, fuzzy, php-format
+#, php-format
msgid ""
"Congratulations, %1$s! And welcome to %%%%site.name%%%%. From here, you may "
"want to...\n"
@@ -3046,20 +3050,20 @@ msgid ""
"\n"
"Thanks for signing up and we hope you enjoy using this service."
msgstr ""
-"Gratulerer, %s! Og velkommen til %%%%site.name%%%%. Herfra vil du "
+"Gratulerer, %1$s! Og velkommen til %%%%site.name%%%%. Herfra vil du "
"kanskje...\n"
"\n"
-"* Gå til [din profil](%s) og sende din første notis.\n"
-"* Legge til en [Jabber/GTalk addresse](%%%%action.imsettings%%%%) så du kan "
-"sende notiser fra lynmeldinger.\n"
-"* [Søke etter brukere](%%%%action.peoplesearch%%%%) that you may know or "
-"that share your interests. \n"
-"* Update your [profile settings](%%%%action.profilesettings%%%%) to tell "
-"others more about you. \n"
-"* Read over the [online docs](%%%%doc.help%%%%) for features you may have "
-"missed. \n"
+"* Gå til [din profil](%2$s) og sende din første melding.\n"
+"* Legge til en [Jabber/GTalk-addresse](%%%%action.imsettings%%%%) så du kan "
+"sende notiser gjennom lynmeldinger.\n"
+"* [Søke etter brukere](%%%%action.peoplesearch%%%%) som du kanskje kjenner "
+"eller deler dine interesser.\n"
+"* Oppdater dine [profilinnstillinger](%%%%action.profilesettings%%%%) for å "
+"fortelle mer om deg til andre.\n"
+"* Les over [hjelpetekstene](%%%%doc.help%%%%) for funksjoner du kan ha gått "
+"glipp av.\n"
"\n"
-"Thanks for signing up and we hope you enjoy using this service."
+"Takk for at du registrerte deg og vi håper du kommer til å like tjenesten."
#: actions/register.php:562
msgid ""
@@ -3140,15 +3144,13 @@ msgstr ""
msgid "You already repeated that notice."
msgstr "Du er allerede logget inn!"
-#: actions/repeat.php:114 lib/noticelist.php:626
-#, fuzzy
+#: actions/repeat.php:114 lib/noticelist.php:642
msgid "Repeated"
-msgstr "Opprett"
+msgstr "Gjentatt"
#: actions/repeat.php:119
-#, fuzzy
msgid "Repeated!"
-msgstr "Opprett"
+msgstr "Gjentatt!"
#: actions/replies.php:125 actions/repliesrss.php:68
#: lib/personalgroupnav.php:105
@@ -3157,24 +3159,24 @@ msgid "Replies to %s"
msgstr "Svar til %s"
#: actions/replies.php:127
-#, fuzzy, php-format
+#, php-format
msgid "Replies to %1$s, page %2$d"
-msgstr "Svar til %s"
+msgstr "Svar til %1$s, side %2$d"
#: actions/replies.php:144
#, php-format
msgid "Replies feed for %s (RSS 1.0)"
-msgstr ""
+msgstr "Svarstrøm for %s (RSS 1.0)"
#: actions/replies.php:151
#, php-format
msgid "Replies feed for %s (RSS 2.0)"
-msgstr ""
+msgstr "Svarstrøm for %s (RSS 2.0)"
#: actions/replies.php:158
-#, fuzzy, php-format
+#, php-format
msgid "Replies feed for %s (Atom)"
-msgstr "Svar til %s"
+msgstr "Svarstrøm for %s (Atom)"
#: actions/replies.php:198
#, fuzzy, php-format
@@ -3201,9 +3203,13 @@ msgstr ""
"s)."
#: actions/repliesrss.php:72
-#, fuzzy, php-format
+#, php-format
msgid "Replies to %1$s on %2$s!"
-msgstr "Svar til %s"
+msgstr "Svar til %1$s på %2$s!"
+
+#: actions/rsd.php:146 actions/version.php:157
+msgid "StatusNet"
+msgstr "StatusNet"
#: actions/sandbox.php:65 actions/unsandbox.php:65
#, fuzzy
@@ -3250,79 +3256,81 @@ msgstr "Innstillinger for IM"
msgid "You must be logged in to view an application."
msgstr ""
-#: actions/showapplication.php:158
+#: actions/showapplication.php:157
msgid "Application profile"
msgstr ""
-#: actions/showapplication.php:160 lib/applicationeditform.php:180
+#: actions/showapplication.php:159 lib/applicationeditform.php:180
msgid "Icon"
-msgstr ""
+msgstr "Ikon"
-#: actions/showapplication.php:170 actions/version.php:195
+#: actions/showapplication.php:169 actions/version.php:195
#: lib/applicationeditform.php:195
-#, fuzzy
msgid "Name"
-msgstr "Nick"
+msgstr "Navn"
-#: actions/showapplication.php:179 lib/applicationeditform.php:222
-#, fuzzy
+#: actions/showapplication.php:178 lib/applicationeditform.php:222
msgid "Organization"
-msgstr "Bekreftelseskode"
+msgstr "Organisasjon"
-#: actions/showapplication.php:188 actions/version.php:198
+#: actions/showapplication.php:187 actions/version.php:198
#: lib/applicationeditform.php:209 lib/groupeditform.php:172
-#, fuzzy
msgid "Description"
-msgstr "Alle abonnementer"
+msgstr "Beskrivelse"
-#: actions/showapplication.php:193 actions/showgroup.php:429
+#: actions/showapplication.php:192 actions/showgroup.php:429
#: lib/profileaction.php:174
msgid "Statistics"
msgstr "Statistikk"
-#: actions/showapplication.php:204
+#: actions/showapplication.php:203
#, php-format
-msgid "created by %1$s - %2$s access by default - %3$d users"
-msgstr ""
+msgid "Created by %1$s - %2$s access by default - %3$d users"
+msgstr "Opprettet av %1$s - %2$s standardtilgang - %3$d brukere"
-#: actions/showapplication.php:214
+#: actions/showapplication.php:213
msgid "Application actions"
msgstr ""
-#: actions/showapplication.php:233
+#: actions/showapplication.php:236
msgid "Reset key & secret"
msgstr ""
-#: actions/showapplication.php:241
+#: actions/showapplication.php:261
msgid "Application info"
msgstr ""
-#: actions/showapplication.php:243
+#: actions/showapplication.php:263
msgid "Consumer key"
msgstr ""
-#: actions/showapplication.php:248
+#: actions/showapplication.php:268
msgid "Consumer secret"
msgstr ""
-#: actions/showapplication.php:253
+#: actions/showapplication.php:273
msgid "Request token URL"
msgstr ""
-#: actions/showapplication.php:258
+#: actions/showapplication.php:278
msgid "Access token URL"
msgstr ""
-#: actions/showapplication.php:263
+#: actions/showapplication.php:283
msgid "Authorize URL"
msgstr ""
-#: actions/showapplication.php:268
+#: actions/showapplication.php:288
msgid ""
"Note: We support HMAC-SHA1 signatures. We do not support the plaintext "
"signature method."
msgstr ""
+#: actions/showapplication.php:309
+#, fuzzy
+msgid "Are you sure you want to reset your consumer key and secret?"
+msgstr "Er du sikker på at du vil slette denne notisen?"
+
#: actions/showfavorites.php:79
#, fuzzy, php-format
msgid "%1$s's favorite notices, page %2$d"
@@ -3525,18 +3533,18 @@ msgstr ""
msgid "FOAF for %s"
msgstr "Feed for taggen %s"
-#: actions/showstream.php:191
+#: actions/showstream.php:200
#, fuzzy, php-format
msgid "This is the timeline for %1$s but %2$s hasn't posted anything yet."
msgstr "Dette er tidslinjen for %s og venner, men ingen har postet noe enda."
-#: actions/showstream.php:196
+#: actions/showstream.php:205
msgid ""
"Seen anything interesting recently? You haven't posted any notices yet, now "
"would be a good time to start :)"
msgstr ""
-#: actions/showstream.php:198
+#: actions/showstream.php:207
#, fuzzy, php-format
msgid ""
"You can try to nudge %1$s or [post something to his or her attention](%%%%"
@@ -3546,7 +3554,7 @@ msgstr ""
"hans eller hennes oppmerksomhet](%%%%action.newnotice%%%%?status_textarea=%"
"s)."
-#: actions/showstream.php:234
+#: actions/showstream.php:243
#, php-format
msgid ""
"**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3555,7 +3563,7 @@ msgid ""
"follow **%s**'s notices and many more! ([Read more](%%%%doc.help%%%%))"
msgstr ""
-#: actions/showstream.php:239
+#: actions/showstream.php:248
#, php-format
msgid ""
"**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3563,7 +3571,7 @@ msgid ""
"[StatusNet](http://status.net/) tool. "
msgstr ""
-#: actions/showstream.php:296
+#: actions/showstream.php:305
#, fuzzy, php-format
msgid "Repeat of %s"
msgstr "Svar til %s"
@@ -4224,11 +4232,6 @@ msgid ""
"Inc. and contributors."
msgstr ""
-#: actions/version.php:157
-#, fuzzy
-msgid "StatusNet"
-msgstr "Statistikk"
-
#: actions/version.php:161
msgid "Contributors"
msgstr ""
@@ -4350,21 +4353,21 @@ msgstr ""
msgid "Problem saving notice."
msgstr ""
-#: classes/Notice.php:790
+#: classes/Notice.php:788
msgid "Problem saving group inbox."
msgstr ""
-#: classes/Notice.php:850
+#: classes/Notice.php:848
#, php-format
msgid "DB error inserting reply: %s"
msgstr ""
-#: classes/Notice.php:1233
+#: classes/Notice.php:1231
#, php-format
msgid "RT @%1$s %2$s"
msgstr ""
-#: classes/User.php:382
+#: classes/User.php:385
#, php-format
msgid "Welcome to %1$s, @%2$s!"
msgstr ""
@@ -4641,11 +4644,11 @@ msgstr ""
msgid "Sessions configuration"
msgstr ""
-#: lib/apiauth.php:99
+#: lib/apiauth.php:95
msgid "API resource requires read-write access, but you only have read access."
msgstr ""
-#: lib/apiauth.php:279
+#: lib/apiauth.php:273
#, php-format
msgid "Failed API auth attempt, nickname = %1$s, proxy = %2$s, ip = %3$s"
msgstr ""
@@ -5015,20 +5018,20 @@ msgid ""
"tracking - not yet implemented.\n"
msgstr ""
-#: lib/common.php:131
+#: lib/common.php:135
#, fuzzy
msgid "No configuration file found. "
msgstr "Fant ikke bekreftelseskode."
-#: lib/common.php:132
+#: lib/common.php:136
msgid "I looked for configuration files in the following places: "
msgstr ""
-#: lib/common.php:134
+#: lib/common.php:138
msgid "You may wish to run the installer to fix this."
msgstr ""
-#: lib/common.php:135
+#: lib/common.php:139
msgid "Go to the installer."
msgstr ""
@@ -5602,25 +5605,25 @@ msgstr ""
msgid "at"
msgstr ""
-#: lib/noticelist.php:531
+#: lib/noticelist.php:547
msgid "in context"
msgstr ""
-#: lib/noticelist.php:556
+#: lib/noticelist.php:572
#, fuzzy
msgid "Repeated by"
msgstr "Opprett"
-#: lib/noticelist.php:582
+#: lib/noticelist.php:598
msgid "Reply to this notice"
msgstr ""
-#: lib/noticelist.php:583
+#: lib/noticelist.php:599
#, fuzzy
msgid "Reply"
msgstr "svar"
-#: lib/noticelist.php:625
+#: lib/noticelist.php:641
#, fuzzy
msgid "Notice repeated"
msgstr "Nytt nick"
@@ -5767,6 +5770,10 @@ msgstr "Kan ikke slette notisen."
msgid "Repeat this notice"
msgstr "Kan ikke slette notisen."
+#: lib/router.php:665
+msgid "No single user defined for single-user mode."
+msgstr ""
+
#: lib/sandboxform.php:67
msgid "Sandbox"
msgstr ""
@@ -5942,47 +5949,47 @@ msgstr ""
msgid "Moderate"
msgstr ""
-#: lib/util.php:868
+#: lib/util.php:867
msgid "a few seconds ago"
msgstr "noen få sekunder siden"
-#: lib/util.php:870
+#: lib/util.php:869
msgid "about a minute ago"
msgstr "omtrent ett minutt siden"
-#: lib/util.php:872
+#: lib/util.php:871
#, php-format
msgid "about %d minutes ago"
msgstr "omtrent %d minutter siden"
-#: lib/util.php:874
+#: lib/util.php:873
msgid "about an hour ago"
msgstr "omtrent én time siden"
-#: lib/util.php:876
+#: lib/util.php:875
#, php-format
msgid "about %d hours ago"
msgstr "omtrent %d timer siden"
-#: lib/util.php:878
+#: lib/util.php:877
msgid "about a day ago"
msgstr "omtrent én dag siden"
-#: lib/util.php:880
+#: lib/util.php:879
#, php-format
msgid "about %d days ago"
msgstr "omtrent %d dager siden"
-#: lib/util.php:882
+#: lib/util.php:881
msgid "about a month ago"
msgstr "omtrent én måned siden"
-#: lib/util.php:884
+#: lib/util.php:883
#, php-format
msgid "about %d months ago"
msgstr "omtrent %d måneder siden"
-#: lib/util.php:886
+#: lib/util.php:885
msgid "about a year ago"
msgstr "omtrent ett år siden"
diff --git a/locale/nl/LC_MESSAGES/statusnet.po b/locale/nl/LC_MESSAGES/statusnet.po
index 9de175f9a..489ab7f95 100644
--- a/locale/nl/LC_MESSAGES/statusnet.po
+++ b/locale/nl/LC_MESSAGES/statusnet.po
@@ -10,12 +10,12 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-01-30 23:41+0000\n"
-"PO-Revision-Date: 2010-01-30 23:42:26+0000\n"
+"POT-Creation-Date: 2010-02-04 10:31+0000\n"
+"PO-Revision-Date: 2010-02-04 10:33:17+0000\n"
"Language-Team: Dutch\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.16alpha (r61734); Translate extension (2010-01-16)\n"
+"X-Generator: MediaWiki 1.16alpha (r61969); Translate extension (2010-01-16)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: nl\n"
"X-Message-Group: out-statusnet\n"
@@ -94,7 +94,7 @@ msgstr "Deze pagina bestaat niet"
#: actions/favoritesrss.php:74 actions/foaf.php:40 actions/foaf.php:58
#: actions/microsummary.php:62 actions/newmessage.php:116 actions/otp.php:76
#: actions/remotesubscribe.php:145 actions/remotesubscribe.php:154
-#: actions/replies.php:73 actions/repliesrss.php:38
+#: actions/replies.php:73 actions/repliesrss.php:38 actions/rsd.php:116
#: actions/showfavorites.php:105 actions/userbyid.php:74
#: actions/usergroups.php:91 actions/userrss.php:38 actions/xrds.php:71
#: lib/command.php:163 lib/command.php:302 lib/command.php:355
@@ -158,7 +158,7 @@ msgstr ""
"bericht voor die gebruiker plaatsen](%%%%action.newnotice%%%%?"
"status_textarea=%3$s)."
-#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:202
+#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:211
#, php-format
msgid ""
"Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
@@ -394,8 +394,8 @@ msgstr ""
msgid "Not a valid nickname."
msgstr "Ongeldige gebruikersnaam!"
-#: actions/apigroupcreate.php:196 actions/editapplication.php:212
-#: actions/editgroup.php:195 actions/newapplication.php:200
+#: actions/apigroupcreate.php:196 actions/editapplication.php:215
+#: actions/editgroup.php:195 actions/newapplication.php:203
#: actions/newgroup.php:139 actions/profilesettings.php:222
#: actions/register.php:217
msgid "Homepage is not a valid URL."
@@ -407,8 +407,8 @@ msgstr "De thuispagina is geen geldige URL."
msgid "Full name is too long (max 255 chars)."
msgstr "De volledige naam is te lang (maximaal 255 tekens)."
-#: actions/apigroupcreate.php:213 actions/editapplication.php:187
-#: actions/newapplication.php:169
+#: actions/apigroupcreate.php:213 actions/editapplication.php:190
+#: actions/newapplication.php:172
#, php-format
msgid "Description is too long (max %d chars)."
msgstr "De beschrijving is te lang (maximaal %d tekens)."
@@ -485,18 +485,22 @@ msgstr "%s groepen"
msgid "groups on %s"
msgstr "groepen op %s"
-#: actions/apioauthauthorize.php:108 actions/apioauthauthorize.php:114
-msgid "Bad request."
-msgstr "Ongeldig verzoek."
+#: actions/apioauthauthorize.php:101
+msgid "No oauth_token parameter provided."
+msgstr "Er is geen oauth_token parameter opgegeven."
-#: actions/apioauthauthorize.php:134 actions/avatarsettings.php:268
+#: actions/apioauthauthorize.php:106
+msgid "Invalid token."
+msgstr "Ongeldig token."
+
+#: actions/apioauthauthorize.php:123 actions/avatarsettings.php:268
#: actions/deletenotice.php:157 actions/disfavor.php:74
-#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:50
+#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:54
#: actions/groupblock.php:66 actions/grouplogo.php:309
#: actions/groupunblock.php:66 actions/imsettings.php:206
#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
-#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:139
+#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:135
#: actions/othersettings.php:145 actions/passwordsettings.php:138
#: actions/profilesettings.php:194 actions/recoverpassword.php:337
#: actions/register.php:165 actions/remotesubscribe.php:77
@@ -509,23 +513,23 @@ msgstr ""
"Er is een probleem ontstaan met uw sessie. Probeer het nog een keer, "
"alstublieft."
-#: actions/apioauthauthorize.php:146
+#: actions/apioauthauthorize.php:135
msgid "Invalid nickname / password!"
msgstr "Ongeldige gebruikersnaam of wachtwoord."
-#: actions/apioauthauthorize.php:170
+#: actions/apioauthauthorize.php:159
msgid "Database error deleting OAuth application user."
msgstr ""
"Er is een databasefout opgetreden tijdens het verwijderen van de OAuth "
"applicatiegebruiker."
-#: actions/apioauthauthorize.php:196
+#: actions/apioauthauthorize.php:185
msgid "Database error inserting OAuth application user."
msgstr ""
"Er is een databasefout opgetreden tijdens het toevoegen van de OAuth "
"applicatiegebruiker."
-#: actions/apioauthauthorize.php:231
+#: actions/apioauthauthorize.php:214
#, php-format
msgid ""
"The request token %s has been authorized. Please exchange it for an access "
@@ -534,53 +538,64 @@ msgstr ""
"Het verzoektoken %s is geautoriseerd. Wissel het alstublieft uit voor een "
"toegangstoken."
-#: actions/apioauthauthorize.php:241
+#: actions/apioauthauthorize.php:227
#, php-format
-msgid "The request token %s has been denied."
-msgstr "Het verzoektoken %s is geweigerd."
+msgid "The request token %s has been denied and revoked."
+msgstr "Het verzoektoken %s is geweigerd en ingetrokken."
-#: actions/apioauthauthorize.php:246 actions/avatarsettings.php:281
+#: actions/apioauthauthorize.php:232 actions/avatarsettings.php:281
#: actions/designadminpanel.php:103 actions/editapplication.php:139
#: actions/emailsettings.php:256 actions/grouplogo.php:319
#: actions/imsettings.php:220 actions/newapplication.php:121
-#: actions/oauthconnectionssettings.php:151 actions/recoverpassword.php:44
+#: actions/oauthconnectionssettings.php:147 actions/recoverpassword.php:44
#: actions/smssettings.php:248 lib/designsettings.php:304
msgid "Unexpected form submission."
msgstr "Het formulier is onverwacht ingezonden."
-#: actions/apioauthauthorize.php:273
+#: actions/apioauthauthorize.php:259
msgid "An application would like to connect to your account"
msgstr "Een applicatie vraagt toegang tot uw gebruikersgegevens"
-#: actions/apioauthauthorize.php:290
+#: actions/apioauthauthorize.php:276
msgid "Allow or deny access"
msgstr "Toegang toestaan of ontzeggen"
-#: actions/apioauthauthorize.php:320 lib/action.php:441
+#: actions/apioauthauthorize.php:292
+#, php-format
+msgid ""
+"The application <strong>%1$s</strong> by <strong>%2$s</strong> would like "
+"the ability to <strong>%3$s</strong> your %4$s account data. You should only "
+"give access to your %4$s account to third parties you trust."
+msgstr ""
+"De <strong>applicatie %1$s</strong> van <strong>%2$s</strong> vraagt toegang "
+"van het type \"<strong>%3$s</strong> tot uw gebruikersgegevens. Geef alleen "
+"toegang tot uw gebruiker bij %4$s aan derde partijen die u vertrouwt."
+
+#: actions/apioauthauthorize.php:310 lib/action.php:441
msgid "Account"
msgstr "Gebruiker"
-#: actions/apioauthauthorize.php:323 actions/login.php:230
+#: actions/apioauthauthorize.php:313 actions/login.php:230
#: actions/profilesettings.php:106 actions/register.php:424
#: actions/showgroup.php:236 actions/tagother.php:94 lib/groupeditform.php:152
#: lib/userprofile.php:131
msgid "Nickname"
msgstr "Gebruikersnaam"
-#: actions/apioauthauthorize.php:326 actions/login.php:233
+#: actions/apioauthauthorize.php:316 actions/login.php:233
#: actions/register.php:429 lib/accountsettingsaction.php:116
msgid "Password"
msgstr "Wachtwoord"
-#: actions/apioauthauthorize.php:338
+#: actions/apioauthauthorize.php:328
msgid "Deny"
msgstr "Ontzeggen"
-#: actions/apioauthauthorize.php:344
+#: actions/apioauthauthorize.php:334
msgid "Allow"
msgstr "Toestaan"
-#: actions/apioauthauthorize.php:361
+#: actions/apioauthauthorize.php:351
msgid "Allow or deny access to your account information."
msgstr "Toegang tot uw gebruikersgegevens toestaan of ontzeggen."
@@ -752,8 +767,8 @@ msgstr "Origineel"
msgid "Preview"
msgstr "Voorvertoning"
-#: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:608
+#: actions/avatarsettings.php:149 actions/showapplication.php:252
+#: lib/deleteuserform.php:66 lib/noticelist.php:624
msgid "Delete"
msgstr "Verwijderen"
@@ -804,8 +819,9 @@ msgstr ""
"niet meer volgen en u wordt niet op de hoogte gebracht van \"@\"-antwoorden "
"van deze gebruiker."
-#: actions/block.php:143 actions/deletenotice.php:145
-#: actions/deleteuser.php:147 actions/groupblock.php:178
+#: actions/block.php:143 actions/deleteapplication.php:153
+#: actions/deletenotice.php:145 actions/deleteuser.php:147
+#: actions/groupblock.php:178
msgid "No"
msgstr "Nee"
@@ -813,9 +829,9 @@ msgstr "Nee"
msgid "Do not block this user"
msgstr "Gebruiker niet blokkeren"
-#: actions/block.php:144 actions/deletenotice.php:146
-#: actions/deleteuser.php:148 actions/groupblock.php:179
-#: lib/repeatform.php:132
+#: actions/block.php:144 actions/deleteapplication.php:158
+#: actions/deletenotice.php:146 actions/deleteuser.php:148
+#: actions/groupblock.php:179 lib/repeatform.php:132
msgid "Yes"
msgstr "Ja"
@@ -919,6 +935,47 @@ msgstr "Dialoog"
msgid "Notices"
msgstr "Mededelingen"
+#: actions/deleteapplication.php:63
+msgid "You must be logged in to delete an application."
+msgstr "U moet aangemeld zijn om een applicatie te kunnen verwijderen."
+
+#: actions/deleteapplication.php:71
+msgid "Application not found."
+msgstr "De applicatie is niet gevonden."
+
+#: actions/deleteapplication.php:78 actions/editapplication.php:77
+#: actions/showapplication.php:94
+msgid "You are not the owner of this application."
+msgstr "U bent niet de eigenaar van deze applicatie."
+
+#: actions/deleteapplication.php:102 actions/editapplication.php:127
+#: actions/newapplication.php:110 actions/showapplication.php:118
+#: lib/action.php:1195
+msgid "There was a problem with your session token."
+msgstr "Er is een probleem met uw sessietoken."
+
+#: actions/deleteapplication.php:123 actions/deleteapplication.php:147
+msgid "Delete application"
+msgstr "Applicatie verwijderen"
+
+#: actions/deleteapplication.php:149
+msgid ""
+"Are you sure you want to delete this application? This will clear all data "
+"about the application from the database, including all existing user "
+"connections."
+msgstr ""
+"Weet u zeker dat u deze applicatie wilt verwijderen? Door deze handeling "
+"worden alle gegevens van deze applicatie uit de database verwijderd, "
+"inclusief alle bestaande gebruikersverbindingen."
+
+#: actions/deleteapplication.php:156
+msgid "Do not delete this application"
+msgstr "Deze applicatie niet verwijderen"
+
+#: actions/deleteapplication.php:160
+msgid "Delete this application"
+msgstr "Deze applicatie verwijderen"
+
#: actions/deletenotice.php:67 actions/disfavor.php:61 actions/favor.php:62
#: actions/groupblock.php:61 actions/groupunblock.php:61 actions/logout.php:69
#: actions/makeadmin.php:61 actions/newmessage.php:87 actions/newnotice.php:89
@@ -953,7 +1010,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:608
+#: actions/deletenotice.php:146 lib/noticelist.php:624
msgid "Delete this notice"
msgstr "Deze mededeling verwijderen"
@@ -1098,7 +1155,7 @@ msgstr "Deze mededeling staats niet op uw favorietenlijst."
msgid "Add to favorites"
msgstr "Aan favorieten toevoegen"
-#: actions/doc.php:155
+#: actions/doc.php:158
#, php-format
msgid "No such document \"%s\""
msgstr "Onbekend document \"%s\""
@@ -1111,20 +1168,11 @@ msgstr "Applicatie bewerken"
msgid "You must be logged in to edit an application."
msgstr "U moet aangemeld zijn om een applicatie te kunnen bewerken."
-#: actions/editapplication.php:77 actions/showapplication.php:94
-msgid "You are not the owner of this application."
-msgstr "U bent niet de eigenaar van deze applicatie."
-
-#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:163
+#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:166
#: actions/showapplication.php:87
msgid "No such application."
msgstr "De applicatie bestaat niet."
-#: actions/editapplication.php:127 actions/newapplication.php:110
-#: actions/showapplication.php:118 lib/action.php:1195
-msgid "There was a problem with your session token."
-msgstr "Er is een probleem met uw sessietoken."
-
#: actions/editapplication.php:161
msgid "Use this form to edit your application."
msgstr "Gebruik dit formulier om uw applicatiegegevens te bewerken."
@@ -1133,43 +1181,47 @@ msgstr "Gebruik dit formulier om uw applicatiegegevens te bewerken."
msgid "Name is required."
msgstr "Een naam is verplicht."
-#: actions/editapplication.php:180 actions/newapplication.php:162
+#: actions/editapplication.php:180 actions/newapplication.php:165
msgid "Name is too long (max 255 chars)."
msgstr "De naam is te lang (maximaal 255 tekens)."
-#: actions/editapplication.php:183 actions/newapplication.php:165
+#: actions/editapplication.php:183 actions/newapplication.php:162
+msgid "Name already in use. Try another one."
+msgstr "Deze naam wordt al gebruikt. Kies een andere."
+
+#: actions/editapplication.php:186 actions/newapplication.php:168
msgid "Description is required."
msgstr "Een beschrijving is verplicht"
-#: actions/editapplication.php:191
+#: actions/editapplication.php:194
msgid "Source URL is too long."
msgstr "De bron-URL is te lang."
-#: actions/editapplication.php:197 actions/newapplication.php:182
+#: actions/editapplication.php:200 actions/newapplication.php:185
msgid "Source URL is not valid."
msgstr "De bron-URL is niet geldig."
-#: actions/editapplication.php:200 actions/newapplication.php:185
+#: actions/editapplication.php:203 actions/newapplication.php:188
msgid "Organization is required."
msgstr "Organisatie is verplicht."
-#: actions/editapplication.php:203 actions/newapplication.php:188
+#: actions/editapplication.php:206 actions/newapplication.php:191
msgid "Organization is too long (max 255 chars)."
msgstr "De organisatienaam is te lang (maximaal 255 tekens)."
-#: actions/editapplication.php:206 actions/newapplication.php:191
+#: actions/editapplication.php:209 actions/newapplication.php:194
msgid "Organization homepage is required."
msgstr "De homepage voor een organisatie is verplicht."
-#: actions/editapplication.php:215 actions/newapplication.php:203
+#: actions/editapplication.php:218 actions/newapplication.php:206
msgid "Callback is too long."
msgstr "De callback is te lang."
-#: actions/editapplication.php:222 actions/newapplication.php:212
+#: actions/editapplication.php:225 actions/newapplication.php:215
msgid "Callback URL is not valid."
msgstr "De callback-URL is niet geldig."
-#: actions/editapplication.php:255
+#: actions/editapplication.php:258
msgid "Could not update application."
msgstr "Het was niet mogelijk de applicatie bij te werken."
@@ -2114,11 +2166,11 @@ msgstr "U moet aangemeld zijn om een applicatie te kunnen registreren."
msgid "Use this form to register a new application."
msgstr "Gebruik dit formulier om een nieuwe applicatie te registreren."
-#: actions/newapplication.php:173
+#: actions/newapplication.php:176
msgid "Source URL is required."
msgstr "Een bron-URL is verplicht."
-#: actions/newapplication.php:255 actions/newapplication.php:264
+#: actions/newapplication.php:258 actions/newapplication.php:267
msgid "Could not create application."
msgstr "Het was niet mogelijk de applicatie aan te maken."
@@ -2253,32 +2305,32 @@ msgstr "Door u geregistreerde applicaties"
msgid "You have not registered any applications yet."
msgstr "U hebt nog geen applicaties geregistreerd."
-#: actions/oauthconnectionssettings.php:71
+#: actions/oauthconnectionssettings.php:72
msgid "Connected applications"
msgstr "Verbonden applicaties"
-#: actions/oauthconnectionssettings.php:87
+#: actions/oauthconnectionssettings.php:83
msgid "You have allowed the following applications to access you account."
msgstr ""
"U hebt de volgende applicaties toegang gegeven tot uw gebruikersgegevens."
-#: actions/oauthconnectionssettings.php:170
+#: actions/oauthconnectionssettings.php:175
msgid "You are not a user of that application."
msgstr "U bent geen gebruiker van die applicatie."
-#: actions/oauthconnectionssettings.php:180
+#: actions/oauthconnectionssettings.php:186
msgid "Unable to revoke access for app: "
msgstr ""
"Het was niet mogelijk de toegang te ontzeggen voor de volgende applicatie: "
-#: actions/oauthconnectionssettings.php:192
+#: actions/oauthconnectionssettings.php:198
#, php-format
msgid "You have not authorized any applications to use your account."
msgstr ""
"U hebt geen enkele applicatie geautoriseerd voor toegang tot uw "
"gebruikersgegevens."
-#: actions/oauthconnectionssettings.php:205
+#: actions/oauthconnectionssettings.php:211
msgid "Developers can edit the registration settings for their applications "
msgstr ""
"Ontwikkelaars kunnen de registratiegegevens voor hun applicaties bewerken "
@@ -2784,19 +2836,19 @@ msgstr "Openbare tijdlijn, pagina %d"
msgid "Public timeline"
msgstr "Openbare tijdlijn"
-#: actions/public.php:151
+#: actions/public.php:159
msgid "Public Stream Feed (RSS 1.0)"
msgstr "Publieke streamfeed (RSS 1.0)"
-#: actions/public.php:155
+#: actions/public.php:163
msgid "Public Stream Feed (RSS 2.0)"
msgstr "Publieke streamfeed (RSS 1.0)"
-#: actions/public.php:159
+#: actions/public.php:167
msgid "Public Stream Feed (Atom)"
msgstr "Publieke streamfeed (Atom)"
-#: actions/public.php:179
+#: actions/public.php:187
#, php-format
msgid ""
"This is the public timeline for %%site.name%% but no one has posted anything "
@@ -2805,11 +2857,11 @@ msgstr ""
"Dit is de publieke tijdlijn voor %%site.name%%, maar niemand heeft nog "
"berichten geplaatst."
-#: actions/public.php:182
+#: actions/public.php:190
msgid "Be the first to post!"
msgstr "U kunt de eerste zijn die een bericht plaatst!"
-#: actions/public.php:186
+#: actions/public.php:194
#, php-format
msgid ""
"Why not [register an account](%%action.register%%) and be the first to post!"
@@ -2817,7 +2869,7 @@ msgstr ""
"Waarom [registreert u geen gebruiker](%%action.register%%) en plaatst u als "
"eerste een bericht?"
-#: actions/public.php:233
+#: actions/public.php:241
#, php-format
msgid ""
"This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2830,7 +2882,7 @@ msgstr ""
"net/). [Registreer nu](%%action.register%%) om mededelingen over uzelf te "
"delen met vrienden, familie en collega's! [Meer lezen...](%%doc.help%%)"
-#: actions/public.php:238
+#: actions/public.php:246
#, php-format
msgid ""
"This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -3201,7 +3253,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:626
+#: actions/repeat.php:114 lib/noticelist.php:642
msgid "Repeated"
msgstr "Herhaald"
@@ -3267,6 +3319,10 @@ msgstr ""
msgid "Replies to %1$s on %2$s!"
msgstr "Antwoorden aan %1$s op %2$s."
+#: actions/rsd.php:146 actions/version.php:157
+msgid "StatusNet"
+msgstr "StatusNet"
+
#: actions/sandbox.php:65 actions/unsandbox.php:65
msgid "You cannot sandbox users on this site."
msgstr "Op deze website kunt u gebruikers niet in de zandbak plaatsen."
@@ -3281,9 +3337,8 @@ msgid "Sessions"
msgstr "Sessies"
#: actions/sessionsadminpanel.php:65
-#, fuzzy
msgid "Session settings for this StatusNet site."
-msgstr "Instellingen voor de vormgeving van deze StatusNet-website."
+msgstr "Sessieinstellingen voor deze StatusNet-website."
#: actions/sessionsadminpanel.php:175
msgid "Handle sessions"
@@ -3310,71 +3365,71 @@ msgstr "Websiteinstellingen opslaan"
msgid "You must be logged in to view an application."
msgstr "U moet aangemeld zijn om een applicatie te kunnen bekijken."
-#: actions/showapplication.php:158
+#: actions/showapplication.php:157
msgid "Application profile"
msgstr "Applicatieprofiel"
-#: actions/showapplication.php:160 lib/applicationeditform.php:180
+#: actions/showapplication.php:159 lib/applicationeditform.php:180
msgid "Icon"
msgstr "Icoon"
-#: actions/showapplication.php:170 actions/version.php:195
+#: actions/showapplication.php:169 actions/version.php:195
#: lib/applicationeditform.php:195
msgid "Name"
msgstr "Naam"
-#: actions/showapplication.php:179 lib/applicationeditform.php:222
+#: actions/showapplication.php:178 lib/applicationeditform.php:222
msgid "Organization"
msgstr "Organisatie"
-#: actions/showapplication.php:188 actions/version.php:198
+#: actions/showapplication.php:187 actions/version.php:198
#: lib/applicationeditform.php:209 lib/groupeditform.php:172
msgid "Description"
msgstr "Beschrijving"
-#: actions/showapplication.php:193 actions/showgroup.php:429
+#: actions/showapplication.php:192 actions/showgroup.php:429
#: lib/profileaction.php:174
msgid "Statistics"
msgstr "Statistieken"
-#: actions/showapplication.php:204
+#: actions/showapplication.php:203
#, php-format
-msgid "created by %1$s - %2$s access by default - %3$d users"
-msgstr "aangemaakt door %1$s - standaardtoegang \"%2$s\" - %3$d gebruikers"
+msgid "Created by %1$s - %2$s access by default - %3$d users"
+msgstr "Aangemaakt door %1$s - standaardtoegang \"%2$s\" - %3$d gebruikers"
-#: actions/showapplication.php:214
+#: actions/showapplication.php:213
msgid "Application actions"
msgstr "Applicatiehandelingen"
-#: actions/showapplication.php:233
+#: actions/showapplication.php:236
msgid "Reset key & secret"
msgstr "Sleutel en wachtwoord op nieuw instellen"
-#: actions/showapplication.php:241
+#: actions/showapplication.php:261
msgid "Application info"
msgstr "Applicatieinformatie"
-#: actions/showapplication.php:243
+#: actions/showapplication.php:263
msgid "Consumer key"
msgstr "Gebruikerssleutel"
-#: actions/showapplication.php:248
+#: actions/showapplication.php:268
msgid "Consumer secret"
msgstr "Gebruikerswachtwoord"
-#: actions/showapplication.php:253
+#: actions/showapplication.php:273
msgid "Request token URL"
msgstr "URL voor verzoektoken"
-#: actions/showapplication.php:258
+#: actions/showapplication.php:278
msgid "Access token URL"
msgstr "URL voor toegangstoken"
-#: actions/showapplication.php:263
+#: actions/showapplication.php:283
msgid "Authorize URL"
msgstr "Autorisatie-URL"
-#: actions/showapplication.php:268
+#: actions/showapplication.php:288
msgid ""
"Note: We support HMAC-SHA1 signatures. We do not support the plaintext "
"signature method."
@@ -3382,6 +3437,11 @@ msgstr ""
"Opmerking: HMAC-SHA1 ondertekening wordt ondersteund. Ondertekening in "
"platte tekst is niet mogelijk."
+#: actions/showapplication.php:309
+#, fuzzy
+msgid "Are you sure you want to reset your consumer key and secret?"
+msgstr "Weet u zeker dat u deze aankondiging wilt verwijderen?"
+
#: actions/showfavorites.php:79
#, php-format
msgid "%1$s's favorite notices, page %2$d"
@@ -3600,13 +3660,13 @@ msgstr "Mededelingenfeed voor %s (Atom)"
msgid "FOAF for %s"
msgstr "Vriend van een vriend (FOAF) voor %s"
-#: actions/showstream.php:191
+#: actions/showstream.php:200
#, php-format
msgid "This is the timeline for %1$s but %2$s hasn't posted anything yet."
msgstr ""
"Dit is de tijdlijn voor %1$s, maar %2$s heeft nog geen berichten verzonden."
-#: actions/showstream.php:196
+#: actions/showstream.php:205
msgid ""
"Seen anything interesting recently? You haven't posted any notices yet, now "
"would be a good time to start :)"
@@ -3614,7 +3674,7 @@ msgstr ""
"Hebt u recentelijk iets interessants gezien? U hebt nog geen mededelingen "
"verstuurd, dus dit is een ideaal moment om daarmee te beginnen!"
-#: actions/showstream.php:198
+#: actions/showstream.php:207
#, php-format
msgid ""
"You can try to nudge %1$s or [post something to his or her attention](%%%%"
@@ -3623,7 +3683,7 @@ msgstr ""
"U kunt proberen %1$s te porren of [een bericht voor die gebruiker plaatsen](%"
"%%%action.newnotice%%%%?status_textarea=%2$s)."
-#: actions/showstream.php:234
+#: actions/showstream.php:243
#, php-format
msgid ""
"**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3637,7 +3697,7 @@ msgstr ""
"abonneren op de mededelingen van **%s** en nog veel meer! [Meer lezen...](%%%"
"%doc.help%%%%)"
-#: actions/showstream.php:239
+#: actions/showstream.php:248
#, php-format
msgid ""
"**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3648,7 +3708,7 @@ msgstr ""
"(http://en.wikipedia.org/wiki/Micro-blogging) gebaseerd op de Vrije Software "
"[StatusNet](http://status.net/). "
-#: actions/showstream.php:296
+#: actions/showstream.php:305
#, php-format
msgid "Repeat of %s"
msgstr "Herhaald van %s"
@@ -4336,10 +4396,6 @@ msgstr ""
"Deze website wordt aangedreven door %1$2 versie %2$s. Auteursrechten "
"voorbehouden 2008-2010 Statusnet, Inc. en medewerkers."
-#: actions/version.php:157
-msgid "StatusNet"
-msgstr "StatusNet"
-
#: actions/version.php:161
msgid "Contributors"
msgstr "Medewerkers"
@@ -4480,24 +4536,24 @@ msgstr ""
msgid "Problem saving notice."
msgstr "Er is een probleem opgetreden bij het opslaan van de mededeling."
-#: classes/Notice.php:790
+#: classes/Notice.php:788
msgid "Problem saving group inbox."
msgstr ""
"Er is een probleem opgetreden bij het opslaan van het Postvak IN van de "
"groep."
-#: classes/Notice.php:850
+#: classes/Notice.php:848
#, php-format
msgid "DB error inserting reply: %s"
msgstr ""
"Er is een databasefout opgetreden bij het invoegen van het antwoord: %s"
-#: classes/Notice.php:1233
+#: classes/Notice.php:1231
#, php-format
msgid "RT @%1$s %2$s"
msgstr "RT @%1$s %2$s"
-#: classes/User.php:382
+#: classes/User.php:385
#, php-format
msgid "Welcome to %1$s, @%2$s!"
msgstr "Welkom bij %1$s, @%2$s!"
@@ -4772,17 +4828,16 @@ msgid "Paths configuration"
msgstr "Padinstellingen"
#: lib/adminpanelaction.php:337
-#, fuzzy
msgid "Sessions configuration"
-msgstr "Instellingen vormgeving"
+msgstr "Sessieinstellingen"
-#: lib/apiauth.php:99
+#: lib/apiauth.php:95
msgid "API resource requires read-write access, but you only have read access."
msgstr ""
"Het API-programma heeft lezen-en-schrijventoegang nodig, maar u hebt alleen "
"maar leestoegang."
-#: lib/apiauth.php:279
+#: lib/apiauth.php:273
#, php-format
msgid "Failed API auth attempt, nickname = %1$s, proxy = %2$s, ip = %3$s"
msgstr ""
@@ -5189,20 +5244,20 @@ msgstr ""
"tracks - nog niet beschikbaar\n"
"tracking - nog niet beschikbaar\n"
-#: lib/common.php:131
+#: lib/common.php:135
msgid "No configuration file found. "
msgstr "Er is geen instellingenbestand aangetroffen. "
-#: lib/common.php:132
+#: lib/common.php:136
msgid "I looked for configuration files in the following places: "
msgstr "Er is gezocht naar instellingenbestanden op de volgende plaatsen: "
-#: lib/common.php:134
+#: lib/common.php:138
msgid "You may wish to run the installer to fix this."
msgstr ""
"U kunt proberen de installer uit te voeren om dit probleem op te lossen."
-#: lib/common.php:135
+#: lib/common.php:139
msgid "Go to the installer."
msgstr "Naar het installatieprogramma gaan."
@@ -5852,23 +5907,23 @@ msgstr "W"
msgid "at"
msgstr "op"
-#: lib/noticelist.php:531
+#: lib/noticelist.php:547
msgid "in context"
msgstr "in context"
-#: lib/noticelist.php:556
+#: lib/noticelist.php:572
msgid "Repeated by"
msgstr "Herhaald door"
-#: lib/noticelist.php:582
+#: lib/noticelist.php:598
msgid "Reply to this notice"
msgstr "Op deze mededeling antwoorden"
-#: lib/noticelist.php:583
+#: lib/noticelist.php:599
msgid "Reply"
msgstr "Antwoorden"
-#: lib/noticelist.php:625
+#: lib/noticelist.php:641
msgid "Notice repeated"
msgstr "Mededeling herhaald"
@@ -6010,6 +6065,10 @@ msgstr "Deze mededeling herhalen?"
msgid "Repeat this notice"
msgstr "Deze mededeling herhalen"
+#: lib/router.php:665
+msgid "No single user defined for single-user mode."
+msgstr "Er is geen gebruiker gedefinieerd voor single-usermodus."
+
#: lib/sandboxform.php:67
msgid "Sandbox"
msgstr "Zandbak"
@@ -6175,47 +6234,47 @@ msgstr "Bericht"
msgid "Moderate"
msgstr "Modereren"
-#: lib/util.php:868
+#: lib/util.php:867
msgid "a few seconds ago"
msgstr "een paar seconden geleden"
-#: lib/util.php:870
+#: lib/util.php:869
msgid "about a minute ago"
msgstr "ongeveer een minuut geleden"
-#: lib/util.php:872
+#: lib/util.php:871
#, php-format
msgid "about %d minutes ago"
msgstr "ongeveer %d minuten geleden"
-#: lib/util.php:874
+#: lib/util.php:873
msgid "about an hour ago"
msgstr "ongeveer een uur geleden"
-#: lib/util.php:876
+#: lib/util.php:875
#, php-format
msgid "about %d hours ago"
msgstr "ongeveer %d uur geleden"
-#: lib/util.php:878
+#: lib/util.php:877
msgid "about a day ago"
msgstr "ongeveer een dag geleden"
-#: lib/util.php:880
+#: lib/util.php:879
#, php-format
msgid "about %d days ago"
msgstr "ongeveer %d dagen geleden"
-#: lib/util.php:882
+#: lib/util.php:881
msgid "about a month ago"
msgstr "ongeveer een maand geleden"
-#: lib/util.php:884
+#: lib/util.php:883
#, php-format
msgid "about %d months ago"
msgstr "ongeveer %d maanden geleden"
-#: lib/util.php:886
+#: lib/util.php:885
msgid "about a year ago"
msgstr "ongeveer een jaar geleden"
diff --git a/locale/nn/LC_MESSAGES/statusnet.po b/locale/nn/LC_MESSAGES/statusnet.po
index 934c0e32d..aa512e84a 100644
--- a/locale/nn/LC_MESSAGES/statusnet.po
+++ b/locale/nn/LC_MESSAGES/statusnet.po
@@ -7,12 +7,12 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-01-30 23:41+0000\n"
-"PO-Revision-Date: 2010-01-30 23:42:23+0000\n"
+"POT-Creation-Date: 2010-02-04 10:31+0000\n"
+"PO-Revision-Date: 2010-02-04 10:33:14+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 (r61734); Translate extension (2010-01-16)\n"
+"X-Generator: MediaWiki 1.16alpha (r61969); Translate extension (2010-01-16)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: nn\n"
"X-Message-Group: out-statusnet\n"
@@ -99,7 +99,7 @@ msgstr "Dette emneord finst ikkje."
#: actions/favoritesrss.php:74 actions/foaf.php:40 actions/foaf.php:58
#: actions/microsummary.php:62 actions/newmessage.php:116 actions/otp.php:76
#: actions/remotesubscribe.php:145 actions/remotesubscribe.php:154
-#: actions/replies.php:73 actions/repliesrss.php:38
+#: actions/replies.php:73 actions/repliesrss.php:38 actions/rsd.php:116
#: actions/showfavorites.php:105 actions/userbyid.php:74
#: actions/usergroups.php:91 actions/userrss.php:38 actions/xrds.php:71
#: lib/command.php:163 lib/command.php:302 lib/command.php:355
@@ -156,7 +156,7 @@ msgid ""
"his or her attention](%%%%action.newnotice%%%%?status_textarea=%3$s)."
msgstr ""
-#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:202
+#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:211
#, php-format
msgid ""
"Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
@@ -391,8 +391,8 @@ msgstr "Kallenamnet er allereie i bruk. Prøv eit anna."
msgid "Not a valid nickname."
msgstr "Ikkje eit gyldig brukarnamn."
-#: actions/apigroupcreate.php:196 actions/editapplication.php:212
-#: actions/editgroup.php:195 actions/newapplication.php:200
+#: actions/apigroupcreate.php:196 actions/editapplication.php:215
+#: actions/editgroup.php:195 actions/newapplication.php:203
#: actions/newgroup.php:139 actions/profilesettings.php:222
#: actions/register.php:217
msgid "Homepage is not a valid URL."
@@ -404,8 +404,8 @@ msgstr "Heimesida er ikkje ei gyldig internettadresse."
msgid "Full name is too long (max 255 chars)."
msgstr "Ditt fulle namn er for langt (maksimalt 255 teikn)."
-#: actions/apigroupcreate.php:213 actions/editapplication.php:187
-#: actions/newapplication.php:169
+#: actions/apigroupcreate.php:213 actions/editapplication.php:190
+#: actions/newapplication.php:172
#, fuzzy, php-format
msgid "Description is too long (max %d chars)."
msgstr "skildringa er for lang (maks 140 teikn)."
@@ -485,18 +485,23 @@ msgstr "%s grupper"
msgid "groups on %s"
msgstr "Gruppe handlingar"
-#: actions/apioauthauthorize.php:108 actions/apioauthauthorize.php:114
-msgid "Bad request."
+#: actions/apioauthauthorize.php:101
+msgid "No oauth_token parameter provided."
msgstr ""
-#: actions/apioauthauthorize.php:134 actions/avatarsettings.php:268
+#: actions/apioauthauthorize.php:106
+#, fuzzy
+msgid "Invalid token."
+msgstr "Ugyldig storleik."
+
+#: actions/apioauthauthorize.php:123 actions/avatarsettings.php:268
#: actions/deletenotice.php:157 actions/disfavor.php:74
-#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:50
+#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:54
#: actions/groupblock.php:66 actions/grouplogo.php:309
#: actions/groupunblock.php:66 actions/imsettings.php:206
#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
-#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:139
+#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:135
#: actions/othersettings.php:145 actions/passwordsettings.php:138
#: actions/profilesettings.php:194 actions/recoverpassword.php:337
#: actions/register.php:165 actions/remotesubscribe.php:77
@@ -507,76 +512,84 @@ msgstr ""
msgid "There was a problem with your session token. Try again, please."
msgstr "Der var eit problem med sesjonen din. Vennlegst prøv på nytt."
-#: actions/apioauthauthorize.php:146
+#: actions/apioauthauthorize.php:135
#, fuzzy
msgid "Invalid nickname / password!"
msgstr "Ugyldig brukarnamn eller passord."
-#: actions/apioauthauthorize.php:170
+#: actions/apioauthauthorize.php:159
#, fuzzy
msgid "Database error deleting OAuth application user."
msgstr "Feil ved å setja brukar."
-#: actions/apioauthauthorize.php:196
+#: actions/apioauthauthorize.php:185
#, fuzzy
msgid "Database error inserting OAuth application user."
msgstr "databasefeil ved innsetjing av skigardmerkelapp (#merkelapp): %s"
-#: actions/apioauthauthorize.php:231
+#: actions/apioauthauthorize.php:214
#, php-format
msgid ""
"The request token %s has been authorized. Please exchange it for an access "
"token."
msgstr ""
-#: actions/apioauthauthorize.php:241
+#: actions/apioauthauthorize.php:227
#, php-format
-msgid "The request token %s has been denied."
+msgid "The request token %s has been denied and revoked."
msgstr ""
-#: actions/apioauthauthorize.php:246 actions/avatarsettings.php:281
+#: actions/apioauthauthorize.php:232 actions/avatarsettings.php:281
#: actions/designadminpanel.php:103 actions/editapplication.php:139
#: actions/emailsettings.php:256 actions/grouplogo.php:319
#: actions/imsettings.php:220 actions/newapplication.php:121
-#: actions/oauthconnectionssettings.php:151 actions/recoverpassword.php:44
+#: actions/oauthconnectionssettings.php:147 actions/recoverpassword.php:44
#: actions/smssettings.php:248 lib/designsettings.php:304
msgid "Unexpected form submission."
msgstr "Uventa skjemasending."
-#: actions/apioauthauthorize.php:273
+#: actions/apioauthauthorize.php:259
msgid "An application would like to connect to your account"
msgstr ""
-#: actions/apioauthauthorize.php:290
+#: actions/apioauthauthorize.php:276
msgid "Allow or deny access"
msgstr ""
-#: actions/apioauthauthorize.php:320 lib/action.php:441
+#: actions/apioauthauthorize.php:292
+#, php-format
+msgid ""
+"The application <strong>%1$s</strong> by <strong>%2$s</strong> would like "
+"the ability to <strong>%3$s</strong> your %4$s account data. You should only "
+"give access to your %4$s account to third parties you trust."
+msgstr ""
+
+#: actions/apioauthauthorize.php:310 lib/action.php:441
msgid "Account"
msgstr "Konto"
-#: actions/apioauthauthorize.php:323 actions/login.php:230
+#: actions/apioauthauthorize.php:313 actions/login.php:230
#: actions/profilesettings.php:106 actions/register.php:424
#: actions/showgroup.php:236 actions/tagother.php:94 lib/groupeditform.php:152
#: lib/userprofile.php:131
msgid "Nickname"
msgstr "Kallenamn"
-#: actions/apioauthauthorize.php:326 actions/login.php:233
+#: actions/apioauthauthorize.php:316 actions/login.php:233
#: actions/register.php:429 lib/accountsettingsaction.php:116
msgid "Password"
msgstr "Passord"
-#: actions/apioauthauthorize.php:338
+#: actions/apioauthauthorize.php:328
msgid "Deny"
msgstr ""
-#: actions/apioauthauthorize.php:344
+#: actions/apioauthauthorize.php:334
#, fuzzy
msgid "Allow"
msgstr "Alle"
-#: actions/apioauthauthorize.php:361
+#: actions/apioauthauthorize.php:351
msgid "Allow or deny access to your account information."
msgstr ""
@@ -750,8 +763,8 @@ msgstr "Original"
msgid "Preview"
msgstr "Forhandsvis"
-#: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:608
+#: actions/avatarsettings.php:149 actions/showapplication.php:252
+#: lib/deleteuserform.php:66 lib/noticelist.php:624
msgid "Delete"
msgstr "Slett"
@@ -800,8 +813,9 @@ msgid ""
"will not be notified of any @-replies from them."
msgstr ""
-#: actions/block.php:143 actions/deletenotice.php:145
-#: actions/deleteuser.php:147 actions/groupblock.php:178
+#: actions/block.php:143 actions/deleteapplication.php:153
+#: actions/deletenotice.php:145 actions/deleteuser.php:147
+#: actions/groupblock.php:178
msgid "No"
msgstr "Nei"
@@ -810,9 +824,9 @@ msgstr "Nei"
msgid "Do not block this user"
msgstr "Lås opp brukaren"
-#: actions/block.php:144 actions/deletenotice.php:146
-#: actions/deleteuser.php:148 actions/groupblock.php:179
-#: lib/repeatform.php:132
+#: actions/block.php:144 actions/deleteapplication.php:158
+#: actions/deletenotice.php:146 actions/deleteuser.php:148
+#: actions/groupblock.php:179 lib/repeatform.php:132
msgid "Yes"
msgstr "Jau"
@@ -921,6 +935,50 @@ msgstr "Stadfestingskode"
msgid "Notices"
msgstr "Notisar"
+#: actions/deleteapplication.php:63
+#, fuzzy
+msgid "You must be logged in to delete an application."
+msgstr "Du må være logga inn for å lage ei gruppe."
+
+#: actions/deleteapplication.php:71
+#, fuzzy
+msgid "Application not found."
+msgstr "Notisen har ingen profil"
+
+#: actions/deleteapplication.php:78 actions/editapplication.php:77
+#: actions/showapplication.php:94
+#, fuzzy
+msgid "You are not the owner of this application."
+msgstr "Du er ikkje medlem av den gruppa."
+
+#: actions/deleteapplication.php:102 actions/editapplication.php:127
+#: actions/newapplication.php:110 actions/showapplication.php:118
+#: lib/action.php:1195
+msgid "There was a problem with your session token."
+msgstr "Det var eit problem med sesjons billetten din."
+
+#: actions/deleteapplication.php:123 actions/deleteapplication.php:147
+#, fuzzy
+msgid "Delete application"
+msgstr "Denne notisen finst ikkje."
+
+#: actions/deleteapplication.php:149
+msgid ""
+"Are you sure you want to delete this application? This will clear all data "
+"about the application from the database, including all existing user "
+"connections."
+msgstr ""
+
+#: actions/deleteapplication.php:156
+#, fuzzy
+msgid "Do not delete this application"
+msgstr "Kan ikkje sletta notisen."
+
+#: actions/deleteapplication.php:160
+#, fuzzy
+msgid "Delete this application"
+msgstr "Slett denne notisen"
+
#: actions/deletenotice.php:67 actions/disfavor.php:61 actions/favor.php:62
#: actions/groupblock.php:61 actions/groupunblock.php:61 actions/logout.php:69
#: actions/makeadmin.php:61 actions/newmessage.php:87 actions/newnotice.php:89
@@ -957,7 +1015,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:608
+#: actions/deletenotice.php:146 lib/noticelist.php:624
msgid "Delete this notice"
msgstr "Slett denne notisen"
@@ -1111,7 +1169,7 @@ msgstr "Denne notisen er ikkje ein favoritt!"
msgid "Add to favorites"
msgstr "Legg til i favorittar"
-#: actions/doc.php:155
+#: actions/doc.php:158
#, fuzzy, php-format
msgid "No such document \"%s\""
msgstr "Slikt dokument finst ikkje."
@@ -1126,22 +1184,12 @@ msgstr "Andre val"
msgid "You must be logged in to edit an application."
msgstr "Du må være logga inn for å lage ei gruppe."
-#: actions/editapplication.php:77 actions/showapplication.php:94
-#, fuzzy
-msgid "You are not the owner of this application."
-msgstr "Du er ikkje medlem av den gruppa."
-
-#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:163
+#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:166
#: actions/showapplication.php:87
#, fuzzy
msgid "No such application."
msgstr "Denne notisen finst ikkje."
-#: actions/editapplication.php:127 actions/newapplication.php:110
-#: actions/showapplication.php:118 lib/action.php:1195
-msgid "There was a problem with your session token."
-msgstr "Det var eit problem med sesjons billetten din."
-
#: actions/editapplication.php:161
#, fuzzy
msgid "Use this form to edit your application."
@@ -1152,47 +1200,52 @@ msgstr "Bruk dette skjemaet for å redigere gruppa"
msgid "Name is required."
msgstr "Samme som passord over. Påkrevd."
-#: actions/editapplication.php:180 actions/newapplication.php:162
+#: actions/editapplication.php:180 actions/newapplication.php:165
#, fuzzy
msgid "Name is too long (max 255 chars)."
msgstr "Ditt fulle namn er for langt (maksimalt 255 teikn)."
-#: actions/editapplication.php:183 actions/newapplication.php:165
+#: actions/editapplication.php:183 actions/newapplication.php:162
+#, fuzzy
+msgid "Name already in use. Try another one."
+msgstr "Kallenamnet er allereie i bruk. Prøv eit anna."
+
+#: actions/editapplication.php:186 actions/newapplication.php:168
#, fuzzy
msgid "Description is required."
msgstr "Beskriving"
-#: actions/editapplication.php:191
+#: actions/editapplication.php:194
msgid "Source URL is too long."
msgstr ""
-#: actions/editapplication.php:197 actions/newapplication.php:182
+#: actions/editapplication.php:200 actions/newapplication.php:185
#, fuzzy
msgid "Source URL is not valid."
msgstr "Heimesida er ikkje ei gyldig internettadresse."
-#: actions/editapplication.php:200 actions/newapplication.php:185
+#: actions/editapplication.php:203 actions/newapplication.php:188
msgid "Organization is required."
msgstr ""
-#: actions/editapplication.php:203 actions/newapplication.php:188
+#: actions/editapplication.php:206 actions/newapplication.php:191
#, fuzzy
msgid "Organization is too long (max 255 chars)."
msgstr "Plassering er for lang (maksimalt 255 teikn)."
-#: actions/editapplication.php:206 actions/newapplication.php:191
+#: actions/editapplication.php:209 actions/newapplication.php:194
msgid "Organization homepage is required."
msgstr ""
-#: actions/editapplication.php:215 actions/newapplication.php:203
+#: actions/editapplication.php:218 actions/newapplication.php:206
msgid "Callback is too long."
msgstr ""
-#: actions/editapplication.php:222 actions/newapplication.php:212
+#: actions/editapplication.php:225 actions/newapplication.php:215
msgid "Callback URL is not valid."
msgstr ""
-#: actions/editapplication.php:255
+#: actions/editapplication.php:258
#, fuzzy
msgid "Could not update application."
msgstr "Kann ikkje oppdatera gruppa."
@@ -2132,11 +2185,11 @@ msgstr "Du må være logga inn for å lage ei gruppe."
msgid "Use this form to register a new application."
msgstr "Bruk dette skjemaet for å lage ein ny gruppe."
-#: actions/newapplication.php:173
+#: actions/newapplication.php:176
msgid "Source URL is required."
msgstr ""
-#: actions/newapplication.php:255 actions/newapplication.php:264
+#: actions/newapplication.php:258 actions/newapplication.php:267
#, fuzzy
msgid "Could not create application."
msgstr "Kunne ikkje lagre favoritt."
@@ -2271,29 +2324,29 @@ msgstr ""
msgid "You have not registered any applications yet."
msgstr ""
-#: actions/oauthconnectionssettings.php:71
+#: actions/oauthconnectionssettings.php:72
msgid "Connected applications"
msgstr ""
-#: actions/oauthconnectionssettings.php:87
+#: actions/oauthconnectionssettings.php:83
msgid "You have allowed the following applications to access you account."
msgstr ""
-#: actions/oauthconnectionssettings.php:170
+#: actions/oauthconnectionssettings.php:175
#, fuzzy
msgid "You are not a user of that application."
msgstr "Du er ikkje medlem av den gruppa."
-#: actions/oauthconnectionssettings.php:180
+#: actions/oauthconnectionssettings.php:186
msgid "Unable to revoke access for app: "
msgstr ""
-#: actions/oauthconnectionssettings.php:192
+#: actions/oauthconnectionssettings.php:198
#, php-format
msgid "You have not authorized any applications to use your account."
msgstr ""
-#: actions/oauthconnectionssettings.php:205
+#: actions/oauthconnectionssettings.php:211
msgid "Developers can edit the registration settings for their applications "
msgstr ""
@@ -2815,39 +2868,39 @@ msgstr "Offentleg tidsline, side %d"
msgid "Public timeline"
msgstr "Offentleg tidsline"
-#: actions/public.php:151
+#: actions/public.php:159
#, fuzzy
msgid "Public Stream Feed (RSS 1.0)"
msgstr "Offentleg straum"
-#: actions/public.php:155
+#: actions/public.php:163
#, fuzzy
msgid "Public Stream Feed (RSS 2.0)"
msgstr "Offentleg straum"
-#: actions/public.php:159
+#: actions/public.php:167
#, fuzzy
msgid "Public Stream Feed (Atom)"
msgstr "Offentleg straum"
-#: actions/public.php:179
+#: actions/public.php:187
#, php-format
msgid ""
"This is the public timeline for %%site.name%% but no one has posted anything "
"yet."
msgstr ""
-#: actions/public.php:182
+#: actions/public.php:190
msgid "Be the first to post!"
msgstr ""
-#: actions/public.php:186
+#: actions/public.php:194
#, php-format
msgid ""
"Why not [register an account](%%action.register%%) and be the first to post!"
msgstr ""
-#: actions/public.php:233
+#: actions/public.php:241
#, php-format
msgid ""
"This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2856,7 +2909,7 @@ msgid ""
"friends, family, and colleagues! ([Read more](%%doc.help%%))"
msgstr ""
-#: actions/public.php:238
+#: actions/public.php:246
#, fuzzy, php-format
msgid ""
"This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -3223,7 +3276,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:626
+#: actions/repeat.php:114 lib/noticelist.php:642
#, fuzzy
msgid "Repeated"
msgstr "Lag"
@@ -3285,6 +3338,11 @@ msgstr ""
msgid "Replies to %1$s on %2$s!"
msgstr "Melding til %1$s på %2$s"
+#: actions/rsd.php:146 actions/version.php:157
+#, fuzzy
+msgid "StatusNet"
+msgstr "Lasta opp brukarbilete."
+
#: actions/sandbox.php:65 actions/unsandbox.php:65
#, fuzzy
msgid "You cannot sandbox users on this site."
@@ -3331,79 +3389,84 @@ msgstr "Avatar-innstillingar"
msgid "You must be logged in to view an application."
msgstr "Du må være innlogga for å melde deg ut av ei gruppe."
-#: actions/showapplication.php:158
+#: actions/showapplication.php:157
#, fuzzy
msgid "Application profile"
msgstr "Notisen har ingen profil"
-#: actions/showapplication.php:160 lib/applicationeditform.php:180
+#: actions/showapplication.php:159 lib/applicationeditform.php:180
msgid "Icon"
msgstr ""
-#: actions/showapplication.php:170 actions/version.php:195
+#: actions/showapplication.php:169 actions/version.php:195
#: lib/applicationeditform.php:195
#, fuzzy
msgid "Name"
msgstr "Kallenamn"
-#: actions/showapplication.php:179 lib/applicationeditform.php:222
+#: actions/showapplication.php:178 lib/applicationeditform.php:222
#, fuzzy
msgid "Organization"
msgstr "Paginering"
-#: actions/showapplication.php:188 actions/version.php:198
+#: actions/showapplication.php:187 actions/version.php:198
#: lib/applicationeditform.php:209 lib/groupeditform.php:172
msgid "Description"
msgstr "Beskriving"
-#: actions/showapplication.php:193 actions/showgroup.php:429
+#: actions/showapplication.php:192 actions/showgroup.php:429
#: lib/profileaction.php:174
msgid "Statistics"
msgstr "Statistikk"
-#: actions/showapplication.php:204
+#: actions/showapplication.php:203
#, php-format
-msgid "created by %1$s - %2$s access by default - %3$d users"
+msgid "Created by %1$s - %2$s access by default - %3$d users"
msgstr ""
-#: actions/showapplication.php:214
+#: actions/showapplication.php:213
msgid "Application actions"
msgstr ""
-#: actions/showapplication.php:233
+#: actions/showapplication.php:236
msgid "Reset key & secret"
msgstr ""
-#: actions/showapplication.php:241
+#: actions/showapplication.php:261
msgid "Application info"
msgstr ""
-#: actions/showapplication.php:243
+#: actions/showapplication.php:263
msgid "Consumer key"
msgstr ""
-#: actions/showapplication.php:248
+#: actions/showapplication.php:268
msgid "Consumer secret"
msgstr ""
-#: actions/showapplication.php:253
+#: actions/showapplication.php:273
msgid "Request token URL"
msgstr ""
-#: actions/showapplication.php:258
+#: actions/showapplication.php:278
msgid "Access token URL"
msgstr ""
-#: actions/showapplication.php:263
+#: actions/showapplication.php:283
msgid "Authorize URL"
msgstr ""
-#: actions/showapplication.php:268
+#: actions/showapplication.php:288
msgid ""
"Note: We support HMAC-SHA1 signatures. We do not support the plaintext "
"signature method."
msgstr ""
+#: actions/showapplication.php:309
+#, fuzzy
+msgid "Are you sure you want to reset your consumer key and secret?"
+msgstr "Sikker på at du vil sletta notisen?"
+
#: actions/showfavorites.php:79
#, fuzzy, php-format
msgid "%1$s's favorite notices, page %2$d"
@@ -3608,25 +3671,25 @@ msgstr "Notisstraum for %s"
msgid "FOAF for %s"
msgstr "Utboks for %s"
-#: actions/showstream.php:191
+#: actions/showstream.php:200
#, php-format
msgid "This is the timeline for %1$s but %2$s hasn't posted anything yet."
msgstr ""
-#: actions/showstream.php:196
+#: actions/showstream.php:205
msgid ""
"Seen anything interesting recently? You haven't posted any notices yet, now "
"would be a good time to start :)"
msgstr ""
-#: actions/showstream.php:198
+#: actions/showstream.php:207
#, php-format
msgid ""
"You can try to nudge %1$s or [post something to his or her attention](%%%%"
"action.newnotice%%%%?status_textarea=%2$s)."
msgstr ""
-#: actions/showstream.php:234
+#: actions/showstream.php:243
#, php-format
msgid ""
"**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3635,7 +3698,7 @@ msgid ""
"follow **%s**'s notices and many more! ([Read more](%%%%doc.help%%%%))"
msgstr ""
-#: actions/showstream.php:239
+#: actions/showstream.php:248
#, fuzzy, php-format
msgid ""
"**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3645,7 +3708,7 @@ msgstr ""
"**%s** har ein konto på %%%%site.name%%%%, ei [mikroblogging](http://en."
"wikipedia.org/wiki/Micro-blogging)-teneste"
-#: actions/showstream.php:296
+#: actions/showstream.php:305
#, fuzzy, php-format
msgid "Repeat of %s"
msgstr "Svar til %s"
@@ -4332,11 +4395,6 @@ msgid ""
"Inc. and contributors."
msgstr ""
-#: actions/version.php:157
-#, fuzzy
-msgid "StatusNet"
-msgstr "Lasta opp brukarbilete."
-
#: actions/version.php:161
msgid "Contributors"
msgstr ""
@@ -4463,22 +4521,22 @@ msgstr "Du kan ikkje lengre legge inn notisar på denne sida."
msgid "Problem saving notice."
msgstr "Eit problem oppstod ved lagring av notis."
-#: classes/Notice.php:790
+#: classes/Notice.php:788
#, fuzzy
msgid "Problem saving group inbox."
msgstr "Eit problem oppstod ved lagring av notis."
-#: classes/Notice.php:850
+#: classes/Notice.php:848
#, php-format
msgid "DB error inserting reply: %s"
msgstr "Databasefeil, kan ikkje lagra svar: %s"
-#: classes/Notice.php:1233
+#: classes/Notice.php:1231
#, fuzzy, php-format
msgid "RT @%1$s %2$s"
msgstr "%1$s (%2$s)"
-#: classes/User.php:382
+#: classes/User.php:385
#, fuzzy, php-format
msgid "Welcome to %1$s, @%2$s!"
msgstr "Melding til %1$s på %2$s"
@@ -4768,11 +4826,11 @@ msgstr "SMS bekreftelse"
msgid "Sessions configuration"
msgstr "SMS bekreftelse"
-#: lib/apiauth.php:99
+#: lib/apiauth.php:95
msgid "API resource requires read-write access, but you only have read access."
msgstr ""
-#: lib/apiauth.php:279
+#: lib/apiauth.php:273
#, php-format
msgid "Failed API auth attempt, nickname = %1$s, proxy = %2$s, ip = %3$s"
msgstr ""
@@ -5144,20 +5202,20 @@ msgid ""
"tracking - not yet implemented.\n"
msgstr ""
-#: lib/common.php:131
+#: lib/common.php:135
#, fuzzy
msgid "No configuration file found. "
msgstr "Ingen stadfestingskode."
-#: lib/common.php:132
+#: lib/common.php:136
msgid "I looked for configuration files in the following places: "
msgstr ""
-#: lib/common.php:134
+#: lib/common.php:138
msgid "You may wish to run the installer to fix this."
msgstr ""
-#: lib/common.php:135
+#: lib/common.php:139
#, fuzzy
msgid "Go to the installer."
msgstr "Logg inn or sida"
@@ -5735,25 +5793,25 @@ msgstr ""
msgid "at"
msgstr ""
-#: lib/noticelist.php:531
+#: lib/noticelist.php:547
#, fuzzy
msgid "in context"
msgstr "Ingen innhald."
-#: lib/noticelist.php:556
+#: lib/noticelist.php:572
#, fuzzy
msgid "Repeated by"
msgstr "Lag"
-#: lib/noticelist.php:582
+#: lib/noticelist.php:598
msgid "Reply to this notice"
msgstr "Svar på denne notisen"
-#: lib/noticelist.php:583
+#: lib/noticelist.php:599
msgid "Reply"
msgstr "Svar"
-#: lib/noticelist.php:625
+#: lib/noticelist.php:641
#, fuzzy
msgid "Notice repeated"
msgstr "Melding lagra"
@@ -5902,6 +5960,10 @@ msgstr "Svar på denne notisen"
msgid "Repeat this notice"
msgstr "Svar på denne notisen"
+#: lib/router.php:665
+msgid "No single user defined for single-user mode."
+msgstr ""
+
#: lib/sandboxform.php:67
#, fuzzy
msgid "Sandbox"
@@ -6079,47 +6141,47 @@ msgstr "Melding"
msgid "Moderate"
msgstr ""
-#: lib/util.php:868
+#: lib/util.php:867
msgid "a few seconds ago"
msgstr "eit par sekund sidan"
-#: lib/util.php:870
+#: lib/util.php:869
msgid "about a minute ago"
msgstr "omtrent eitt minutt sidan"
-#: lib/util.php:872
+#: lib/util.php:871
#, php-format
msgid "about %d minutes ago"
msgstr "~%d minutt sidan"
-#: lib/util.php:874
+#: lib/util.php:873
msgid "about an hour ago"
msgstr "omtrent ein time sidan"
-#: lib/util.php:876
+#: lib/util.php:875
#, php-format
msgid "about %d hours ago"
msgstr "~%d timar sidan"
-#: lib/util.php:878
+#: lib/util.php:877
msgid "about a day ago"
msgstr "omtrent ein dag sidan"
-#: lib/util.php:880
+#: lib/util.php:879
#, php-format
msgid "about %d days ago"
msgstr "~%d dagar sidan"
-#: lib/util.php:882
+#: lib/util.php:881
msgid "about a month ago"
msgstr "omtrent ein månad sidan"
-#: lib/util.php:884
+#: lib/util.php:883
#, php-format
msgid "about %d months ago"
msgstr "~%d månadar sidan"
-#: lib/util.php:886
+#: lib/util.php:885
msgid "about a year ago"
msgstr "omtrent eitt år sidan"
diff --git a/locale/pl/LC_MESSAGES/statusnet.po b/locale/pl/LC_MESSAGES/statusnet.po
index 02a3face1..cf3c247f8 100644
--- a/locale/pl/LC_MESSAGES/statusnet.po
+++ b/locale/pl/LC_MESSAGES/statusnet.po
@@ -10,8 +10,8 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-01-30 23:41+0000\n"
-"PO-Revision-Date: 2010-01-30 23:42:30+0000\n"
+"POT-Creation-Date: 2010-02-04 10:31+0000\n"
+"PO-Revision-Date: 2010-02-04 10:33:20+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 (r61734); Translate extension (2010-01-16)\n"
+"X-Generator: MediaWiki 1.16alpha (r61969); Translate extension (2010-01-16)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: pl\n"
"X-Message-Group: out-statusnet\n"
@@ -30,7 +30,7 @@ msgstr "Dostęp"
#: actions/accessadminpanel.php:65
msgid "Site access settings"
-msgstr "Ustawienia dostępu strony"
+msgstr "Ustawienia dostępu witryny"
#: actions/accessadminpanel.php:158
msgid "Registration"
@@ -42,7 +42,7 @@ msgstr "Prywatna"
#: actions/accessadminpanel.php:163
msgid "Prohibit anonymous users (not logged in) from viewing site?"
-msgstr "Zabronić anonimowym użytkownikom (niezalogowanym) przeglądać stronę?"
+msgstr "Zabronić anonimowym użytkownikom (niezalogowanym) przeglądać witrynę?"
#: actions/accessadminpanel.php:167
msgid "Invite only"
@@ -97,7 +97,7 @@ msgstr "Nie ma takiej strony"
#: actions/favoritesrss.php:74 actions/foaf.php:40 actions/foaf.php:58
#: actions/microsummary.php:62 actions/newmessage.php:116 actions/otp.php:76
#: actions/remotesubscribe.php:145 actions/remotesubscribe.php:154
-#: actions/replies.php:73 actions/repliesrss.php:38
+#: actions/replies.php:73 actions/repliesrss.php:38 actions/rsd.php:116
#: actions/showfavorites.php:105 actions/userbyid.php:74
#: actions/usergroups.php:91 actions/userrss.php:38 actions/xrds.php:71
#: lib/command.php:163 lib/command.php:302 lib/command.php:355
@@ -161,7 +161,7 @@ msgstr ""
"[wysłać coś wymagającego jego uwagi](%%%%action.newnotice%%%%?"
"status_textarea=%3$s)."
-#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:202
+#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:211
#, php-format
msgid ""
"Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
@@ -391,8 +391,8 @@ msgstr "Pseudonim jest już używany. Spróbuj innego."
msgid "Not a valid nickname."
msgstr "To nie jest prawidłowy pseudonim."
-#: actions/apigroupcreate.php:196 actions/editapplication.php:212
-#: actions/editgroup.php:195 actions/newapplication.php:200
+#: actions/apigroupcreate.php:196 actions/editapplication.php:215
+#: actions/editgroup.php:195 actions/newapplication.php:203
#: actions/newgroup.php:139 actions/profilesettings.php:222
#: actions/register.php:217
msgid "Homepage is not a valid URL."
@@ -404,8 +404,8 @@ msgstr "Strona domowa nie jest prawidłowym adresem URL."
msgid "Full name is too long (max 255 chars)."
msgstr "Imię i nazwisko jest za długie (maksymalnie 255 znaków)."
-#: actions/apigroupcreate.php:213 actions/editapplication.php:187
-#: actions/newapplication.php:169
+#: actions/apigroupcreate.php:213 actions/editapplication.php:190
+#: actions/newapplication.php:172
#, php-format
msgid "Description is too long (max %d chars)."
msgstr "Opis jest za długi (maksymalnie %d znaków)."
@@ -482,18 +482,22 @@ msgstr "Grupy %s"
msgid "groups on %s"
msgstr "grupy na %s"
-#: actions/apioauthauthorize.php:108 actions/apioauthauthorize.php:114
-msgid "Bad request."
-msgstr "Błędne żądanie."
+#: actions/apioauthauthorize.php:101
+msgid "No oauth_token parameter provided."
+msgstr "Nie podano parametru oauth_token."
-#: actions/apioauthauthorize.php:134 actions/avatarsettings.php:268
+#: actions/apioauthauthorize.php:106
+msgid "Invalid token."
+msgstr "Nieprawidłowy token."
+
+#: actions/apioauthauthorize.php:123 actions/avatarsettings.php:268
#: actions/deletenotice.php:157 actions/disfavor.php:74
-#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:50
+#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:54
#: actions/groupblock.php:66 actions/grouplogo.php:309
#: actions/groupunblock.php:66 actions/imsettings.php:206
#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
-#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:139
+#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:135
#: actions/othersettings.php:145 actions/passwordsettings.php:138
#: actions/profilesettings.php:194 actions/recoverpassword.php:337
#: actions/register.php:165 actions/remotesubscribe.php:77
@@ -504,19 +508,19 @@ msgstr "Błędne żądanie."
msgid "There was a problem with your session token. Try again, please."
msgstr "Wystąpił problem z tokenem sesji. Spróbuj ponownie."
-#: actions/apioauthauthorize.php:146
+#: actions/apioauthauthorize.php:135
msgid "Invalid nickname / password!"
msgstr "Nieprawidłowy pseudonim/hasło."
-#: actions/apioauthauthorize.php:170
+#: actions/apioauthauthorize.php:159
msgid "Database error deleting OAuth application user."
msgstr "Błąd bazy danych podczas usuwania użytkownika aplikacji OAuth."
-#: actions/apioauthauthorize.php:196
+#: actions/apioauthauthorize.php:185
msgid "Database error inserting OAuth application user."
msgstr "Błąd bazy danych podczas wprowadzania użytkownika aplikacji OAuth."
-#: actions/apioauthauthorize.php:231
+#: actions/apioauthauthorize.php:214
#, php-format
msgid ""
"The request token %s has been authorized. Please exchange it for an access "
@@ -524,53 +528,64 @@ msgid ""
msgstr ""
"Token żądania %s został upoważniony. Proszę wymienić go na token dostępu."
-#: actions/apioauthauthorize.php:241
+#: actions/apioauthauthorize.php:227
#, php-format
-msgid "The request token %s has been denied."
-msgstr "Token żądania %s został odrzucony."
+msgid "The request token %s has been denied and revoked."
+msgstr "Token żądania %s został odrzucony lub unieważniony."
-#: actions/apioauthauthorize.php:246 actions/avatarsettings.php:281
+#: actions/apioauthauthorize.php:232 actions/avatarsettings.php:281
#: actions/designadminpanel.php:103 actions/editapplication.php:139
#: actions/emailsettings.php:256 actions/grouplogo.php:319
#: actions/imsettings.php:220 actions/newapplication.php:121
-#: actions/oauthconnectionssettings.php:151 actions/recoverpassword.php:44
+#: actions/oauthconnectionssettings.php:147 actions/recoverpassword.php:44
#: actions/smssettings.php:248 lib/designsettings.php:304
msgid "Unexpected form submission."
msgstr "Nieoczekiwane wysłanie formularza."
-#: actions/apioauthauthorize.php:273
+#: actions/apioauthauthorize.php:259
msgid "An application would like to connect to your account"
msgstr "Aplikacja chce połączyć się z kontem użytkownika"
-#: actions/apioauthauthorize.php:290
+#: actions/apioauthauthorize.php:276
msgid "Allow or deny access"
msgstr "Zezwolić czy odmówić dostęp"
-#: actions/apioauthauthorize.php:320 lib/action.php:441
+#: actions/apioauthauthorize.php:292
+#, php-format
+msgid ""
+"The application <strong>%1$s</strong> by <strong>%2$s</strong> would like "
+"the ability to <strong>%3$s</strong> your %4$s account data. You should only "
+"give access to your %4$s account to third parties you trust."
+msgstr ""
+"Aplikacja <strong>%1$s</strong> autorstwa <strong>%2$s</strong> chciałaby "
+"uzyskać możliwość <strong>%3$s</strong> danych konta %4$s. Dostęp do konta %4"
+"$s powinien być udostępniany tylko zaufanym osobom trzecim."
+
+#: actions/apioauthauthorize.php:310 lib/action.php:441
msgid "Account"
msgstr "Konto"
-#: actions/apioauthauthorize.php:323 actions/login.php:230
+#: actions/apioauthauthorize.php:313 actions/login.php:230
#: actions/profilesettings.php:106 actions/register.php:424
#: actions/showgroup.php:236 actions/tagother.php:94 lib/groupeditform.php:152
#: lib/userprofile.php:131
msgid "Nickname"
msgstr "Pseudonim"
-#: actions/apioauthauthorize.php:326 actions/login.php:233
+#: actions/apioauthauthorize.php:316 actions/login.php:233
#: actions/register.php:429 lib/accountsettingsaction.php:116
msgid "Password"
msgstr "Hasło"
-#: actions/apioauthauthorize.php:338
+#: actions/apioauthauthorize.php:328
msgid "Deny"
msgstr "Odrzuć"
-#: actions/apioauthauthorize.php:344
+#: actions/apioauthauthorize.php:334
msgid "Allow"
msgstr "Zezwól"
-#: actions/apioauthauthorize.php:361
+#: actions/apioauthauthorize.php:351
msgid "Allow or deny access to your account information."
msgstr "Zezwól lub odmów dostęp do informacji konta."
@@ -739,8 +754,8 @@ msgstr "Oryginał"
msgid "Preview"
msgstr "Podgląd"
-#: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:608
+#: actions/avatarsettings.php:149 actions/showapplication.php:252
+#: lib/deleteuserform.php:66 lib/noticelist.php:624
msgid "Delete"
msgstr "Usuń"
@@ -790,8 +805,9 @@ msgstr ""
"do ciebie zostanie usunięta, nie będzie mógł cię subskrybować w przyszłości "
"i nie będziesz powiadamiany o żadnych odpowiedziach @ od niego."
-#: actions/block.php:143 actions/deletenotice.php:145
-#: actions/deleteuser.php:147 actions/groupblock.php:178
+#: actions/block.php:143 actions/deleteapplication.php:153
+#: actions/deletenotice.php:145 actions/deleteuser.php:147
+#: actions/groupblock.php:178
msgid "No"
msgstr "Nie"
@@ -799,9 +815,9 @@ msgstr "Nie"
msgid "Do not block this user"
msgstr "Nie blokuj tego użytkownika"
-#: actions/block.php:144 actions/deletenotice.php:146
-#: actions/deleteuser.php:148 actions/groupblock.php:179
-#: lib/repeatform.php:132
+#: actions/block.php:144 actions/deleteapplication.php:158
+#: actions/deletenotice.php:146 actions/deleteuser.php:148
+#: actions/groupblock.php:179 lib/repeatform.php:132
msgid "Yes"
msgstr "Tak"
@@ -905,6 +921,46 @@ msgstr "Rozmowa"
msgid "Notices"
msgstr "Wpisy"
+#: actions/deleteapplication.php:63
+msgid "You must be logged in to delete an application."
+msgstr "Musisz być zalogowany, aby usunąć aplikację."
+
+#: actions/deleteapplication.php:71
+msgid "Application not found."
+msgstr "Nie odnaleziono aplikacji."
+
+#: actions/deleteapplication.php:78 actions/editapplication.php:77
+#: actions/showapplication.php:94
+msgid "You are not the owner of this application."
+msgstr "Nie jesteś właścicielem tej aplikacji."
+
+#: actions/deleteapplication.php:102 actions/editapplication.php:127
+#: actions/newapplication.php:110 actions/showapplication.php:118
+#: lib/action.php:1195
+msgid "There was a problem with your session token."
+msgstr "Wystąpił problem z tokenem sesji."
+
+#: actions/deleteapplication.php:123 actions/deleteapplication.php:147
+msgid "Delete application"
+msgstr "Usuń aplikację"
+
+#: actions/deleteapplication.php:149
+msgid ""
+"Are you sure you want to delete this application? This will clear all data "
+"about the application from the database, including all existing user "
+"connections."
+msgstr ""
+"Na pewno usunąć tę aplikację? Wyczyści to wszystkie dane o aplikacji z bazy "
+"danych, w tym wszystkie istniejące połączenia użytkowników."
+
+#: actions/deleteapplication.php:156
+msgid "Do not delete this application"
+msgstr "Nie usuwaj tej aplikacji"
+
+#: actions/deleteapplication.php:160
+msgid "Delete this application"
+msgstr "Usuń tę aplikację"
+
#: actions/deletenotice.php:67 actions/disfavor.php:61 actions/favor.php:62
#: actions/groupblock.php:61 actions/groupunblock.php:61 actions/logout.php:69
#: actions/makeadmin.php:61 actions/newmessage.php:87 actions/newnotice.php:89
@@ -939,7 +995,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:608
+#: actions/deletenotice.php:146 lib/noticelist.php:624
msgid "Delete this notice"
msgstr "Usuń ten wpis"
@@ -974,7 +1030,7 @@ msgstr "Wygląd"
#: actions/designadminpanel.php:73
msgid "Design settings for this StatusNet site."
-msgstr "Ustawienia wyglądu tej strony StatusNet."
+msgstr "Ustawienia wyglądu tej witryny StatusNet."
#: actions/designadminpanel.php:275
msgid "Invalid logo URL."
@@ -991,7 +1047,7 @@ msgstr "Zmień logo"
#: actions/designadminpanel.php:380
msgid "Site logo"
-msgstr "Logo strony"
+msgstr "Logo witryny"
#: actions/designadminpanel.php:387
msgid "Change theme"
@@ -999,11 +1055,11 @@ msgstr "Zmień motyw"
#: actions/designadminpanel.php:404
msgid "Site theme"
-msgstr "Motyw strony"
+msgstr "Motyw witryny"
#: actions/designadminpanel.php:405
msgid "Theme for the site."
-msgstr "Motyw strony."
+msgstr "Motyw witryny."
#: actions/designadminpanel.php:417 lib/designsettings.php:101
msgid "Change background image"
@@ -1019,7 +1075,7 @@ msgstr "Tło"
msgid ""
"You can upload a background image for the site. The maximum file size is %1"
"$s."
-msgstr "Można wysłać obraz tła dla strony. Maksymalny rozmiar pliku to %1$s."
+msgstr "Można wysłać obraz tła dla witryny. Maksymalny rozmiar pliku to %1$s."
#: actions/designadminpanel.php:457 lib/designsettings.php:139
msgid "On"
@@ -1081,7 +1137,7 @@ msgstr "Ten wpis nie jest ulubiony."
msgid "Add to favorites"
msgstr "Dodaj do ulubionych"
-#: actions/doc.php:155
+#: actions/doc.php:158
#, php-format
msgid "No such document \"%s\""
msgstr "Nie ma takiego dokumentu \\\"%s\\\""
@@ -1094,20 +1150,11 @@ msgstr "Zmodyfikuj aplikację"
msgid "You must be logged in to edit an application."
msgstr "Musisz być zalogowany, aby zmodyfikować aplikację."
-#: actions/editapplication.php:77 actions/showapplication.php:94
-msgid "You are not the owner of this application."
-msgstr "Nie jesteś właścicielem tej aplikacji."
-
-#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:163
+#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:166
#: actions/showapplication.php:87
msgid "No such application."
msgstr "Nie ma takiej aplikacji."
-#: actions/editapplication.php:127 actions/newapplication.php:110
-#: actions/showapplication.php:118 lib/action.php:1195
-msgid "There was a problem with your session token."
-msgstr "Wystąpił problem z tokenem sesji."
-
#: actions/editapplication.php:161
msgid "Use this form to edit your application."
msgstr "Użyj tego formularza, aby zmodyfikować aplikację."
@@ -1116,43 +1163,47 @@ msgstr "Użyj tego formularza, aby zmodyfikować aplikację."
msgid "Name is required."
msgstr "Nazwa jest wymagana."
-#: actions/editapplication.php:180 actions/newapplication.php:162
+#: actions/editapplication.php:180 actions/newapplication.php:165
msgid "Name is too long (max 255 chars)."
msgstr "Nazwa jest za długa (maksymalnie 255 znaków)."
-#: actions/editapplication.php:183 actions/newapplication.php:165
+#: actions/editapplication.php:183 actions/newapplication.php:162
+msgid "Name already in use. Try another one."
+msgstr "Nazwa jest już używana. Spróbuj innej."
+
+#: actions/editapplication.php:186 actions/newapplication.php:168
msgid "Description is required."
msgstr "Opis jest wymagany."
-#: actions/editapplication.php:191
+#: actions/editapplication.php:194
msgid "Source URL is too long."
msgstr "Źródłowy adres URL jest za długi."
-#: actions/editapplication.php:197 actions/newapplication.php:182
+#: actions/editapplication.php:200 actions/newapplication.php:185
msgid "Source URL is not valid."
msgstr "Źródłowy adres URL jest nieprawidłowy."
-#: actions/editapplication.php:200 actions/newapplication.php:185
+#: actions/editapplication.php:203 actions/newapplication.php:188
msgid "Organization is required."
msgstr "Organizacja jest wymagana."
-#: actions/editapplication.php:203 actions/newapplication.php:188
+#: actions/editapplication.php:206 actions/newapplication.php:191
msgid "Organization is too long (max 255 chars)."
msgstr "Organizacja jest za długa (maksymalnie 255 znaków)."
-#: actions/editapplication.php:206 actions/newapplication.php:191
+#: actions/editapplication.php:209 actions/newapplication.php:194
msgid "Organization homepage is required."
msgstr "Strona domowa organizacji jest wymagana."
-#: actions/editapplication.php:215 actions/newapplication.php:203
+#: actions/editapplication.php:218 actions/newapplication.php:206
msgid "Callback is too long."
msgstr "Adres zwrotny jest za długi."
-#: actions/editapplication.php:222 actions/newapplication.php:212
+#: actions/editapplication.php:225 actions/newapplication.php:215
msgid "Callback URL is not valid."
msgstr "Adres zwrotny URL jest nieprawidłowy."
-#: actions/editapplication.php:255
+#: actions/editapplication.php:258
msgid "Could not update application."
msgstr "Nie można zaktualizować aplikacji."
@@ -1392,7 +1443,7 @@ msgstr "Popularne wpisy, strona %d"
#: actions/favorited.php:79
msgid "The most popular notices on the site right now."
-msgstr "Najpopularniejsze wpisy na stronie w te chwili."
+msgstr "Najpopularniejsze wpisy na witrynie w te chwili."
#: actions/favorited.php:150
msgid "Favorite notices appear on this page but no one has favorited one yet."
@@ -1881,7 +1932,7 @@ msgid ""
"on the site. Thanks for growing the community!"
msgstr ""
"Zostaniesz powiadomiony, kiedy ktoś zaakceptuje zaproszenie i zarejestruje "
-"się na stronie. Dziękujemy za pomoc w zwiększaniu społeczności."
+"się na witrynie. Dziękujemy za pomoc w zwiększaniu społeczności."
#: actions/invite.php:162
msgid ""
@@ -2013,7 +2064,7 @@ msgstr "Zaloguj się"
#: actions/login.php:227
msgid "Login to site"
-msgstr "Zaloguj się na stronie"
+msgstr "Zaloguj się na witrynie"
#: actions/login.php:236 actions/register.php:478
msgid "Remember me"
@@ -2081,11 +2132,11 @@ msgstr "Musisz być zalogowany, aby zarejestrować aplikację."
msgid "Use this form to register a new application."
msgstr "Użyj tego formularza, aby zarejestrować aplikację."
-#: actions/newapplication.php:173
+#: actions/newapplication.php:176
msgid "Source URL is required."
msgstr "Źródłowy adres URL jest wymagany."
-#: actions/newapplication.php:255 actions/newapplication.php:264
+#: actions/newapplication.php:258 actions/newapplication.php:267
msgid "Could not create application."
msgstr "Nie można utworzyć aplikacji."
@@ -2219,28 +2270,28 @@ msgstr "Zarejestrowane aplikacje"
msgid "You have not registered any applications yet."
msgstr "Nie zarejestrowano jeszcze żadnych aplikacji."
-#: actions/oauthconnectionssettings.php:71
+#: actions/oauthconnectionssettings.php:72
msgid "Connected applications"
msgstr "Połączone aplikacje"
-#: actions/oauthconnectionssettings.php:87
+#: actions/oauthconnectionssettings.php:83
msgid "You have allowed the following applications to access you account."
msgstr "Zezwolono następującym aplikacjom na dostęp do konta."
-#: actions/oauthconnectionssettings.php:170
+#: actions/oauthconnectionssettings.php:175
msgid "You are not a user of that application."
msgstr "Nie jesteś użytkownikiem tej aplikacji."
-#: actions/oauthconnectionssettings.php:180
+#: actions/oauthconnectionssettings.php:186
msgid "Unable to revoke access for app: "
msgstr "Nie można unieważnić dostępu dla aplikacji: "
-#: actions/oauthconnectionssettings.php:192
+#: actions/oauthconnectionssettings.php:198
#, php-format
msgid "You have not authorized any applications to use your account."
msgstr "Nie upoważniono żadnych aplikacji do używania konta."
-#: actions/oauthconnectionssettings.php:205
+#: actions/oauthconnectionssettings.php:211
msgid "Developers can edit the registration settings for their applications "
msgstr "Programiści mogą zmodyfikować ustawienia rejestracji swoich aplikacji "
@@ -2407,7 +2458,7 @@ msgstr "Ścieżki"
#: actions/pathsadminpanel.php:70
msgid "Path and server settings for this StatusNet site."
-msgstr "Ustawienia ścieżki i serwera dla tej strony StatusNet."
+msgstr "Ustawienia ścieżki i serwera dla tej witryny StatusNet."
#: actions/pathsadminpanel.php:157
#, php-format
@@ -2436,7 +2487,7 @@ msgstr "Nieprawidłowy serwer SSL. Maksymalna długość to 255 znaków."
#: actions/pathsadminpanel.php:234 actions/siteadminpanel.php:58
#: lib/adminpanelaction.php:311
msgid "Site"
-msgstr "Strona"
+msgstr "Witryny"
#: actions/pathsadminpanel.php:238
msgid "Server"
@@ -2452,7 +2503,7 @@ msgstr "Ścieżka"
#: actions/pathsadminpanel.php:242
msgid "Site path"
-msgstr "Ścieżka do strony"
+msgstr "Ścieżka do witryny"
#: actions/pathsadminpanel.php:246
msgid "Path to locales"
@@ -2587,7 +2638,7 @@ msgstr "Nieprawidłowa zawartość wpisu"
#: actions/postnotice.php:90
#, php-format
msgid "Notice license ‘%1$s’ is not compatible with site license ‘%2$s’."
-msgstr "Licencja wpisu \"%1$s\" nie jest zgodna z licencją strony \"%2$s\"."
+msgstr "Licencja wpisu \"%1$s\" nie jest zgodna z licencją witryny \"%2$s\"."
#: actions/profilesettings.php:60
msgid "Profile settings"
@@ -2621,7 +2672,7 @@ msgstr "Strona domowa"
#: actions/profilesettings.php:117 actions/register.php:455
msgid "URL of your homepage, blog, or profile on another site"
-msgstr "Adres URL strony domowej, bloga lub profilu na innej stronie"
+msgstr "Adres URL strony domowej, bloga lub profilu na innej witrynie"
#: actions/profilesettings.php:122 actions/register.php:461
#, php-format
@@ -2742,19 +2793,19 @@ msgstr "Publiczna oś czasu, strona %d"
msgid "Public timeline"
msgstr "Publiczna oś czasu"
-#: actions/public.php:151
+#: actions/public.php:159
msgid "Public Stream Feed (RSS 1.0)"
msgstr "Kanał publicznego strumienia (RSS 1.0)"
-#: actions/public.php:155
+#: actions/public.php:163
msgid "Public Stream Feed (RSS 2.0)"
msgstr "Kanał publicznego strumienia (RSS 2.0)"
-#: actions/public.php:159
+#: actions/public.php:167
msgid "Public Stream Feed (Atom)"
msgstr "Kanał publicznego strumienia (Atom)"
-#: actions/public.php:179
+#: actions/public.php:187
#, php-format
msgid ""
"This is the public timeline for %%site.name%% but no one has posted anything "
@@ -2763,11 +2814,11 @@ msgstr ""
"To jest publiczna oś czasu dla %%site.name%%, ale nikt jeszcze nic nie "
"wysłał."
-#: actions/public.php:182
+#: actions/public.php:190
msgid "Be the first to post!"
msgstr "Zostań pierwszym, który coś wyśle."
-#: actions/public.php:186
+#: actions/public.php:194
#, php-format
msgid ""
"Why not [register an account](%%action.register%%) and be the first to post!"
@@ -2775,7 +2826,7 @@ msgstr ""
"Dlaczego nie [zarejestrujesz konta](%%action.register%%) i zostaniesz "
"pierwszym, który coś wyśle."
-#: actions/public.php:233
+#: actions/public.php:241
#, php-format
msgid ""
"This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2788,7 +2839,7 @@ msgstr ""
"[Dołącz teraz](%%action.register%%), aby dzielić się wpisami o sobie z "
"przyjaciółmi, rodziną i kolegami. ([Przeczytaj więcej](%%doc.help%%))"
-#: actions/public.php:238
+#: actions/public.php:246
#, php-format
msgid ""
"This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -3088,7 +3139,7 @@ msgid ""
msgstr ""
"Aby subskrybować, można [zalogować się](%%action.login%%) lub [zarejestrować]"
"(%%action.register%%) nowe konto. Jeśli już posiadasz konto na [zgodnej "
-"stronie mikroblogowania](%%doc.openmublog%%), podaj poniżej adres URL "
+"witrynie mikroblogowania](%%doc.openmublog%%), podaj poniżej adres URL "
"profilu."
#: actions/remotesubscribe.php:112
@@ -3154,7 +3205,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:626
+#: actions/repeat.php:114 lib/noticelist.php:642
msgid "Repeated"
msgstr "Powtórzono"
@@ -3220,9 +3271,13 @@ msgstr ""
msgid "Replies to %1$s on %2$s!"
msgstr "odpowiedzi dla użytkownika %1$s na %2$s."
+#: actions/rsd.php:146 actions/version.php:157
+msgid "StatusNet"
+msgstr "StatusNet"
+
#: actions/sandbox.php:65 actions/unsandbox.php:65
msgid "You cannot sandbox users on this site."
-msgstr "Nie można ograniczać użytkowników na tej stronie."
+msgstr "Nie można ograniczać użytkowników na tej witrynie."
#: actions/sandbox.php:72
msgid "User is already sandboxed."
@@ -3234,9 +3289,8 @@ msgid "Sessions"
msgstr "Sesje"
#: actions/sessionsadminpanel.php:65
-#, fuzzy
msgid "Session settings for this StatusNet site."
-msgstr "Ustawienia wyglądu tej strony StatusNet."
+msgstr "Ustawienia sesji tej witryny StatusNet."
#: actions/sessionsadminpanel.php:175
msgid "Handle sessions"
@@ -3257,77 +3311,77 @@ msgstr "Włącza wyjście debugowania dla sesji."
#: actions/sessionsadminpanel.php:199 actions/siteadminpanel.php:336
#: actions/useradminpanel.php:293
msgid "Save site settings"
-msgstr "Zapisz ustawienia strony"
+msgstr "Zapisz ustawienia witryny"
#: actions/showapplication.php:82
msgid "You must be logged in to view an application."
msgstr "Musisz być zalogowany, aby wyświetlić aplikację."
-#: actions/showapplication.php:158
+#: actions/showapplication.php:157
msgid "Application profile"
msgstr "Profil aplikacji"
-#: actions/showapplication.php:160 lib/applicationeditform.php:180
+#: actions/showapplication.php:159 lib/applicationeditform.php:180
msgid "Icon"
msgstr "Ikona"
-#: actions/showapplication.php:170 actions/version.php:195
+#: actions/showapplication.php:169 actions/version.php:195
#: lib/applicationeditform.php:195
msgid "Name"
msgstr "Nazwa"
-#: actions/showapplication.php:179 lib/applicationeditform.php:222
+#: actions/showapplication.php:178 lib/applicationeditform.php:222
msgid "Organization"
msgstr "Organizacja"
-#: actions/showapplication.php:188 actions/version.php:198
+#: actions/showapplication.php:187 actions/version.php:198
#: lib/applicationeditform.php:209 lib/groupeditform.php:172
msgid "Description"
msgstr "Opis"
-#: actions/showapplication.php:193 actions/showgroup.php:429
+#: actions/showapplication.php:192 actions/showgroup.php:429
#: lib/profileaction.php:174
msgid "Statistics"
msgstr "Statystyki"
-#: actions/showapplication.php:204
+#: actions/showapplication.php:203
#, php-format
-msgid "created by %1$s - %2$s access by default - %3$d users"
-msgstr "utworzona przez %1$s - domyślny dostęp: %2$s - %3$d użytkowników"
+msgid "Created by %1$s - %2$s access by default - %3$d users"
+msgstr "Utworzona przez %1$s - domyślny dostęp: %2$s - %3$d użytkowników"
-#: actions/showapplication.php:214
+#: actions/showapplication.php:213
msgid "Application actions"
msgstr "Czynności aplikacji"
-#: actions/showapplication.php:233
+#: actions/showapplication.php:236
msgid "Reset key & secret"
msgstr "Przywrócenie klucza i sekretu"
-#: actions/showapplication.php:241
+#: actions/showapplication.php:261
msgid "Application info"
msgstr "Informacje o aplikacji"
-#: actions/showapplication.php:243
+#: actions/showapplication.php:263
msgid "Consumer key"
msgstr "Klucz klienta"
-#: actions/showapplication.php:248
+#: actions/showapplication.php:268
msgid "Consumer secret"
msgstr "Sekret klienta"
-#: actions/showapplication.php:253
+#: actions/showapplication.php:273
msgid "Request token URL"
msgstr "Adres URL tokenu żądania"
-#: actions/showapplication.php:258
+#: actions/showapplication.php:278
msgid "Access token URL"
msgstr "Adres URL tokenu żądania"
-#: actions/showapplication.php:263
+#: actions/showapplication.php:283
msgid "Authorize URL"
msgstr "Adres URL upoważnienia"
-#: actions/showapplication.php:268
+#: actions/showapplication.php:288
msgid ""
"Note: We support HMAC-SHA1 signatures. We do not support the plaintext "
"signature method."
@@ -3335,6 +3389,11 @@ msgstr ""
"Uwaga: obsługiwane są podpisy HMAC-SHA1. Metoda podpisu w zwykłym tekście "
"nie jest obsługiwana."
+#: actions/showapplication.php:309
+#, fuzzy
+msgid "Are you sure you want to reset your consumer key and secret?"
+msgstr "Jesteś pewien, że chcesz usunąć ten wpis?"
+
#: actions/showfavorites.php:79
#, php-format
msgid "%1$s's favorite notices, page %2$d"
@@ -3552,13 +3611,13 @@ msgstr "Kanał wpisów dla %s (Atom)"
msgid "FOAF for %s"
msgstr "FOAF dla %s"
-#: actions/showstream.php:191
+#: actions/showstream.php:200
#, php-format
msgid "This is the timeline for %1$s but %2$s hasn't posted anything yet."
msgstr ""
"To jest oś czasu dla użytkownika %1$s, ale %2$s nie nic jeszcze nie wysłał."
-#: actions/showstream.php:196
+#: actions/showstream.php:205
msgid ""
"Seen anything interesting recently? You haven't posted any notices yet, now "
"would be a good time to start :)"
@@ -3566,7 +3625,7 @@ msgstr ""
"Widziałeś ostatnio coś interesującego? Nie wysłałeś jeszcze żadnych wpisów, "
"teraz jest dobry czas, aby zacząć. :)"
-#: actions/showstream.php:198
+#: actions/showstream.php:207
#, php-format
msgid ""
"You can try to nudge %1$s or [post something to his or her attention](%%%%"
@@ -3575,7 +3634,7 @@ msgstr ""
"Można spróbować szturchnąć użytkownika %1$s lub [wysłać coś, co wymaga jego "
"uwagi](%%%%action.newnotice%%%%?status_textarea=%2$s)."
-#: actions/showstream.php:234
+#: actions/showstream.php:243
#, php-format
msgid ""
"**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3589,7 +3648,7 @@ msgstr ""
"obserwować wpisy użytkownika **%s** i wiele więcej. ([Przeczytaj więcej](%%%%"
"doc.help%%%%))"
-#: actions/showstream.php:239
+#: actions/showstream.php:248
#, php-format
msgid ""
"**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3600,14 +3659,14 @@ msgstr ""
"pl.wikipedia.org/wiki/Mikroblog) opartej na wolnym narzędziu [StatusNet]"
"(http://status.net/). "
-#: actions/showstream.php:296
+#: actions/showstream.php:305
#, php-format
msgid "Repeat of %s"
msgstr "Powtórzenia %s"
#: actions/silence.php:65 actions/unsilence.php:65
msgid "You cannot silence users on this site."
-msgstr "Nie można wyciszać użytkowników na tej stronie."
+msgstr "Nie można wyciszać użytkowników na tej witrynie."
#: actions/silence.php:72
msgid "User is already silenced."
@@ -3615,11 +3674,11 @@ msgstr "Użytkownik jest już wyciszony."
#: actions/siteadminpanel.php:69
msgid "Basic settings for this StatusNet site."
-msgstr "Podstawowe ustawienia tej strony StatusNet."
+msgstr "Podstawowe ustawienia tej witryny StatusNet."
#: actions/siteadminpanel.php:132
msgid "Site name must have non-zero length."
-msgstr "Nazwa strony nie może mieć zerową długość."
+msgstr "Nazwa witryny nie może mieć zerową długość."
#: actions/siteadminpanel.php:140
msgid "You must have a valid contact email address."
@@ -3656,7 +3715,7 @@ msgstr "Ogólne"
#: actions/siteadminpanel.php:242
msgid "Site name"
-msgstr "Nazwa strony"
+msgstr "Nazwa witryny"
#: actions/siteadminpanel.php:243
msgid "The name of your site, like \"Yourcompany Microblog\""
@@ -3680,7 +3739,7 @@ msgstr "Adres URL używany do odnośnika do zasług w stopce każdej strony"
#: actions/siteadminpanel.php:257
msgid "Contact email address for your site"
-msgstr "Kontaktowy adres e-mail strony"
+msgstr "Kontaktowy adres e-mail witryny"
#: actions/siteadminpanel.php:263
msgid "Local"
@@ -3692,11 +3751,11 @@ msgstr "Domyślna strefa czasowa"
#: actions/siteadminpanel.php:275
msgid "Default timezone for the site; usually UTC."
-msgstr "Domyśla strefa czasowa strony, zwykle UTC."
+msgstr "Domyśla strefa czasowa witryny, zwykle UTC."
#: actions/siteadminpanel.php:281
msgid "Default site language"
-msgstr "Domyślny język strony"
+msgstr "Domyślny język witryny"
#: actions/siteadminpanel.php:289
msgid "Snapshots"
@@ -4059,7 +4118,7 @@ msgid ""
"Listenee stream license ‘%1$s’ is not compatible with site license ‘%2$s’."
msgstr ""
"Licencja nasłuchiwanego strumienia \"%1$s\" nie jest zgodna z licencją "
-"strony \"%2$s\"."
+"witryny \"%2$s\"."
#: actions/useradminpanel.php:58 lib/adminpanelaction.php:321
#: lib/personalgroupnav.php:115
@@ -4068,7 +4127,7 @@ msgstr "Użytkownik"
#: actions/useradminpanel.php:69
msgid "User settings for this StatusNet site."
-msgstr "Ustawienia użytkownika dla tej strony StatusNet."
+msgstr "Ustawienia użytkownika dla tej witryny StatusNet."
#: actions/useradminpanel.php:148
msgid "Invalid bio limit. Must be numeric."
@@ -4178,7 +4237,7 @@ msgid ""
"subscription. Your subscription token is:"
msgstr ""
"Subskrypcja została upoważniona, ale nie przekazano zwrotnego adresu URL. "
-"Sprawdź w instrukcjach strony, jak upoważnić subskrypcję. Token subskrypcji:"
+"Sprawdź w instrukcjach witryny, jak upoważnić subskrypcję. Token subskrypcji:"
#: actions/userauthorization.php:259
msgid "Subscription rejected"
@@ -4191,7 +4250,7 @@ msgid ""
"subscription."
msgstr ""
"Subskrypcja została odrzucona, ale nie przekazano zwrotnego adresu URL. "
-"Sprawdź w instrukcjach strony, jak w pełni odrzucić subskrypcję."
+"Sprawdź w instrukcjach witryny, jak w pełni odrzucić subskrypcję."
#: actions/userauthorization.php:296
#, php-format
@@ -4273,13 +4332,9 @@ msgid ""
"This site is powered by %1$s version %2$s, Copyright 2008-2010 StatusNet, "
"Inc. and contributors."
msgstr ""
-"Ta strona korzysta z oprogramowania %1$s w wersji %2$s, Copyright 2008-2010 "
+"Ta witryna korzysta z oprogramowania %1$s w wersji %2$s, Copyright 2008-2010 "
"StatusNet, Inc. i współtwórcy."
-#: actions/version.php:157
-msgid "StatusNet"
-msgstr "StatusNet"
-
#: actions/version.php:161
msgid "Contributors"
msgstr "Współtwórcy"
@@ -4412,27 +4467,27 @@ msgstr ""
#: classes/Notice.php:235
msgid "You are banned from posting notices on this site."
-msgstr "Zabroniono ci wysyłania wpisów na tej stronie."
+msgstr "Zabroniono ci wysyłania wpisów na tej witrynie."
#: classes/Notice.php:294 classes/Notice.php:319
msgid "Problem saving notice."
msgstr "Problem podczas zapisywania wpisu."
-#: classes/Notice.php:790
+#: classes/Notice.php:788
msgid "Problem saving group inbox."
msgstr "Problem podczas zapisywania skrzynki odbiorczej grupy."
-#: classes/Notice.php:850
+#: classes/Notice.php:848
#, php-format
msgid "DB error inserting reply: %s"
msgstr "Błąd bazy danych podczas wprowadzania odpowiedzi: %s"
-#: classes/Notice.php:1233
+#: classes/Notice.php:1231
#, php-format
msgid "RT @%1$s %2$s"
msgstr "RT @%1$s %2$s"
-#: classes/User.php:382
+#: classes/User.php:385
#, php-format
msgid "Welcome to %1$s, @%2$s!"
msgstr "Witaj w %1$s, @%2$s."
@@ -4484,7 +4539,7 @@ msgstr "Strona bez nazwy"
#: lib/action.php:433
msgid "Primary site navigation"
-msgstr "Główna nawigacja strony"
+msgstr "Główna nawigacja witryny"
#: lib/action.php:439
msgid "Home"
@@ -4508,7 +4563,7 @@ msgstr "Połącz z serwisami"
#: lib/action.php:448
msgid "Change site configuration"
-msgstr "Zmień konfigurację strony"
+msgstr "Zmień konfigurację witryny"
#: lib/action.php:452 lib/subgroupnav.php:105
msgid "Invite"
@@ -4525,7 +4580,7 @@ msgstr "Wyloguj się"
#: lib/action.php:458
msgid "Logout from the site"
-msgstr "Wyloguj się ze strony"
+msgstr "Wyloguj się z witryny"
#: lib/action.php:463
msgid "Create an account"
@@ -4533,7 +4588,7 @@ msgstr "Utwórz konto"
#: lib/action.php:466
msgid "Login to the site"
-msgstr "Zaloguj się na stronę"
+msgstr "Zaloguj się na witrynie"
#: lib/action.php:469 lib/action.php:732
msgid "Help"
@@ -4553,7 +4608,7 @@ msgstr "Wyszukaj osoby lub tekst"
#: lib/action.php:493
msgid "Site notice"
-msgstr "Wpis strony"
+msgstr "Wpis witryny"
#: lib/action.php:559
msgid "Local views"
@@ -4565,7 +4620,7 @@ msgstr "Wpis strony"
#: lib/action.php:727
msgid "Secondary site navigation"
-msgstr "Druga nawigacja strony"
+msgstr "Druga nawigacja witryny"
#: lib/action.php:734
msgid "About"
@@ -4626,7 +4681,7 @@ msgstr ""
#: lib/action.php:801
msgid "Site content license"
-msgstr "Licencja zawartości strony"
+msgstr "Licencja zawartości witryny"
#: lib/action.php:806
#, php-format
@@ -4668,7 +4723,7 @@ msgstr "Wcześniej"
#: lib/adminpanelaction.php:96
msgid "You cannot make changes to this site."
-msgstr "Nie można wprowadzić zmian strony."
+msgstr "Nie można wprowadzić zmian witryny."
#: lib/adminpanelaction.php:107
msgid "Changes to that panel are not allowed."
@@ -4688,7 +4743,7 @@ msgstr "Nie można usunąć ustawienia wyglądu."
#: lib/adminpanelaction.php:312
msgid "Basic site configuration"
-msgstr "Podstawowa konfiguracja strony"
+msgstr "Podstawowa konfiguracja witryny"
#: lib/adminpanelaction.php:317
msgid "Design configuration"
@@ -4707,17 +4762,16 @@ msgid "Paths configuration"
msgstr "Konfiguracja ścieżek"
#: lib/adminpanelaction.php:337
-#, fuzzy
msgid "Sessions configuration"
-msgstr "Konfiguracja wyglądu"
+msgstr "Konfiguracja sesji"
-#: lib/apiauth.php:99
+#: lib/apiauth.php:95
msgid "API resource requires read-write access, but you only have read access."
msgstr ""
"Zasób API wymaga dostępu do zapisu i do odczytu, ale powiadasz dostęp tylko "
"do odczytu."
-#: lib/apiauth.php:279
+#: lib/apiauth.php:273
#, php-format
msgid "Failed API auth attempt, nickname = %1$s, proxy = %2$s, ip = %3$s"
msgstr ""
@@ -5123,19 +5177,19 @@ msgstr ""
"tracks - jeszcze nie zaimplementowano\n"
"tracking - jeszcze nie zaimplementowano\n"
-#: lib/common.php:131
+#: lib/common.php:135
msgid "No configuration file found. "
msgstr "Nie odnaleziono pliku konfiguracji."
-#: lib/common.php:132
+#: lib/common.php:136
msgid "I looked for configuration files in the following places: "
msgstr "Szukano plików konfiguracji w następujących miejscach: "
-#: lib/common.php:134
+#: lib/common.php:138
msgid "You may wish to run the installer to fix this."
msgstr "Należy uruchomić instalator, aby to naprawić."
-#: lib/common.php:135
+#: lib/common.php:139
msgid "Go to the installer."
msgstr "Przejdź do instalatora."
@@ -5780,23 +5834,23 @@ msgstr "Zachód"
msgid "at"
msgstr "w"
-#: lib/noticelist.php:531
+#: lib/noticelist.php:547
msgid "in context"
msgstr "w rozmowie"
-#: lib/noticelist.php:556
+#: lib/noticelist.php:572
msgid "Repeated by"
msgstr "Powtórzone przez"
-#: lib/noticelist.php:582
+#: lib/noticelist.php:598
msgid "Reply to this notice"
msgstr "Odpowiedz na ten wpis"
-#: lib/noticelist.php:583
+#: lib/noticelist.php:599
msgid "Reply"
msgstr "Odpowiedz"
-#: lib/noticelist.php:625
+#: lib/noticelist.php:641
msgid "Notice repeated"
msgstr "Powtórzono wpis"
@@ -5937,6 +5991,11 @@ msgstr "Powtórzyć ten wpis?"
msgid "Repeat this notice"
msgstr "Powtórz ten wpis"
+#: lib/router.php:665
+msgid "No single user defined for single-user mode."
+msgstr ""
+"Nie określono pojedynczego użytkownika dla trybu pojedynczego użytkownika."
+
#: lib/sandboxform.php:67
msgid "Sandbox"
msgstr "Ogranicz"
@@ -5947,7 +6006,7 @@ msgstr "Ogranicz tego użytkownika"
#: lib/searchaction.php:120
msgid "Search site"
-msgstr "Przeszukaj stronę"
+msgstr "Przeszukaj witrynę"
#: lib/searchaction.php:126
msgid "Keyword(s)"
@@ -5963,7 +6022,7 @@ msgstr "Osoby"
#: lib/searchgroupnav.php:81
msgid "Find people on this site"
-msgstr "Znajdź osoby na tej stronie"
+msgstr "Znajdź osoby na tej witrynie"
#: lib/searchgroupnav.php:83
msgid "Find content of notices"
@@ -5971,7 +6030,7 @@ msgstr "Przeszukaj zawartość wpisów"
#: lib/searchgroupnav.php:85
msgid "Find groups on this site"
-msgstr "Znajdź grupy na tej stronie"
+msgstr "Znajdź grupy na tej witrynie"
#: lib/section.php:89
msgid "Untitled section"
@@ -6102,47 +6161,47 @@ msgstr "Wiadomość"
msgid "Moderate"
msgstr "Moderuj"
-#: lib/util.php:868
+#: lib/util.php:867
msgid "a few seconds ago"
msgstr "kilka sekund temu"
-#: lib/util.php:870
+#: lib/util.php:869
msgid "about a minute ago"
msgstr "około minutę temu"
-#: lib/util.php:872
+#: lib/util.php:871
#, php-format
msgid "about %d minutes ago"
msgstr "około %d minut temu"
-#: lib/util.php:874
+#: lib/util.php:873
msgid "about an hour ago"
msgstr "około godzinę temu"
-#: lib/util.php:876
+#: lib/util.php:875
#, php-format
msgid "about %d hours ago"
msgstr "około %d godzin temu"
-#: lib/util.php:878
+#: lib/util.php:877
msgid "about a day ago"
msgstr "blisko dzień temu"
-#: lib/util.php:880
+#: lib/util.php:879
#, php-format
msgid "about %d days ago"
msgstr "około %d dni temu"
-#: lib/util.php:882
+#: lib/util.php:881
msgid "about a month ago"
msgstr "około miesiąc temu"
-#: lib/util.php:884
+#: lib/util.php:883
#, php-format
msgid "about %d months ago"
msgstr "około %d miesięcy temu"
-#: lib/util.php:886
+#: lib/util.php:885
msgid "about a year ago"
msgstr "około rok temu"
diff --git a/locale/pt/LC_MESSAGES/statusnet.po b/locale/pt/LC_MESSAGES/statusnet.po
index 178f0c581..239414026 100644
--- a/locale/pt/LC_MESSAGES/statusnet.po
+++ b/locale/pt/LC_MESSAGES/statusnet.po
@@ -9,12 +9,12 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-01-30 23:41+0000\n"
-"PO-Revision-Date: 2010-01-30 23:42:34+0000\n"
+"POT-Creation-Date: 2010-02-04 10:31+0000\n"
+"PO-Revision-Date: 2010-02-04 10:33:23+0000\n"
"Language-Team: Portuguese\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.16alpha (r61734); Translate extension (2010-01-16)\n"
+"X-Generator: MediaWiki 1.16alpha (r61969); Translate extension (2010-01-16)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: pt\n"
"X-Message-Group: out-statusnet\n"
@@ -96,7 +96,7 @@ msgstr "Página não encontrada."
#: actions/favoritesrss.php:74 actions/foaf.php:40 actions/foaf.php:58
#: actions/microsummary.php:62 actions/newmessage.php:116 actions/otp.php:76
#: actions/remotesubscribe.php:145 actions/remotesubscribe.php:154
-#: actions/replies.php:73 actions/repliesrss.php:38
+#: actions/replies.php:73 actions/repliesrss.php:38 actions/rsd.php:116
#: actions/showfavorites.php:105 actions/userbyid.php:74
#: actions/usergroups.php:91 actions/userrss.php:38 actions/xrds.php:71
#: lib/command.php:163 lib/command.php:302 lib/command.php:355
@@ -158,7 +158,7 @@ msgstr ""
"Pode tentar [dar um toque em %1$s](../%2$s) a partir do perfil ou [publicar "
"qualquer coisa à sua atenção](%%%%action.newnotice%%%%?status_textarea=%3$s)."
-#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:202
+#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:211
#, php-format
msgid ""
"Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
@@ -387,8 +387,8 @@ msgstr "Utilizador já é usado. Tente outro."
msgid "Not a valid nickname."
msgstr "Utilizador não é válido."
-#: actions/apigroupcreate.php:196 actions/editapplication.php:212
-#: actions/editgroup.php:195 actions/newapplication.php:200
+#: actions/apigroupcreate.php:196 actions/editapplication.php:215
+#: actions/editgroup.php:195 actions/newapplication.php:203
#: actions/newgroup.php:139 actions/profilesettings.php:222
#: actions/register.php:217
msgid "Homepage is not a valid URL."
@@ -400,8 +400,8 @@ msgstr "Página de ínicio não é uma URL válida."
msgid "Full name is too long (max 255 chars)."
msgstr "Nome completo demasiado longo (máx. 255 caracteres)."
-#: actions/apigroupcreate.php:213 actions/editapplication.php:187
-#: actions/newapplication.php:169
+#: actions/apigroupcreate.php:213 actions/editapplication.php:190
+#: actions/newapplication.php:172
#, php-format
msgid "Description is too long (max %d chars)."
msgstr "Descrição demasiado longa (máx. 140 caracteres)."
@@ -478,18 +478,23 @@ msgstr "Grupos de %s"
msgid "groups on %s"
msgstr "Grupos em %s"
-#: actions/apioauthauthorize.php:108 actions/apioauthauthorize.php:114
-msgid "Bad request."
+#: actions/apioauthauthorize.php:101
+msgid "No oauth_token parameter provided."
msgstr ""
-#: actions/apioauthauthorize.php:134 actions/avatarsettings.php:268
+#: actions/apioauthauthorize.php:106
+#, fuzzy
+msgid "Invalid token."
+msgstr "Tamanho inválido."
+
+#: actions/apioauthauthorize.php:123 actions/avatarsettings.php:268
#: actions/deletenotice.php:157 actions/disfavor.php:74
-#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:50
+#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:54
#: actions/groupblock.php:66 actions/grouplogo.php:309
#: actions/groupunblock.php:66 actions/imsettings.php:206
#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
-#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:139
+#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:135
#: actions/othersettings.php:145 actions/passwordsettings.php:138
#: actions/profilesettings.php:194 actions/recoverpassword.php:337
#: actions/register.php:165 actions/remotesubscribe.php:77
@@ -500,77 +505,85 @@ msgstr ""
msgid "There was a problem with your session token. Try again, please."
msgstr "Ocorreu um problema com a sua sessão. Por favor, tente novamente."
-#: actions/apioauthauthorize.php:146
+#: actions/apioauthauthorize.php:135
#, fuzzy
msgid "Invalid nickname / password!"
msgstr "Nome de utilizador ou senha inválidos."
-#: actions/apioauthauthorize.php:170
+#: actions/apioauthauthorize.php:159
#, fuzzy
msgid "Database error deleting OAuth application user."
msgstr "Erro ao configurar utilizador."
-#: actions/apioauthauthorize.php:196
+#: actions/apioauthauthorize.php:185
#, fuzzy
msgid "Database error inserting OAuth application user."
msgstr "Erro na base de dados ao inserir a marca: %s"
-#: actions/apioauthauthorize.php:231
+#: actions/apioauthauthorize.php:214
#, php-format
msgid ""
"The request token %s has been authorized. Please exchange it for an access "
"token."
msgstr ""
-#: actions/apioauthauthorize.php:241
+#: actions/apioauthauthorize.php:227
#, php-format
-msgid "The request token %s has been denied."
+msgid "The request token %s has been denied and revoked."
msgstr ""
-#: actions/apioauthauthorize.php:246 actions/avatarsettings.php:281
+#: actions/apioauthauthorize.php:232 actions/avatarsettings.php:281
#: actions/designadminpanel.php:103 actions/editapplication.php:139
#: actions/emailsettings.php:256 actions/grouplogo.php:319
#: actions/imsettings.php:220 actions/newapplication.php:121
-#: actions/oauthconnectionssettings.php:151 actions/recoverpassword.php:44
+#: actions/oauthconnectionssettings.php:147 actions/recoverpassword.php:44
#: actions/smssettings.php:248 lib/designsettings.php:304
msgid "Unexpected form submission."
msgstr "Envio inesperado de formulário."
-#: actions/apioauthauthorize.php:273
+#: actions/apioauthauthorize.php:259
msgid "An application would like to connect to your account"
msgstr ""
-#: actions/apioauthauthorize.php:290
+#: actions/apioauthauthorize.php:276
msgid "Allow or deny access"
msgstr ""
-#: actions/apioauthauthorize.php:320 lib/action.php:441
+#: actions/apioauthauthorize.php:292
+#, php-format
+msgid ""
+"The application <strong>%1$s</strong> by <strong>%2$s</strong> would like "
+"the ability to <strong>%3$s</strong> your %4$s account data. You should only "
+"give access to your %4$s account to third parties you trust."
+msgstr ""
+
+#: actions/apioauthauthorize.php:310 lib/action.php:441
msgid "Account"
msgstr "Conta"
-#: actions/apioauthauthorize.php:323 actions/login.php:230
+#: actions/apioauthauthorize.php:313 actions/login.php:230
#: actions/profilesettings.php:106 actions/register.php:424
#: actions/showgroup.php:236 actions/tagother.php:94 lib/groupeditform.php:152
#: lib/userprofile.php:131
msgid "Nickname"
msgstr "Utilizador"
-#: actions/apioauthauthorize.php:326 actions/login.php:233
+#: actions/apioauthauthorize.php:316 actions/login.php:233
#: actions/register.php:429 lib/accountsettingsaction.php:116
msgid "Password"
msgstr "Senha"
-#: actions/apioauthauthorize.php:338
+#: actions/apioauthauthorize.php:328
#, fuzzy
msgid "Deny"
msgstr "Estilo"
-#: actions/apioauthauthorize.php:344
+#: actions/apioauthauthorize.php:334
#, fuzzy
msgid "Allow"
msgstr "Todas"
-#: actions/apioauthauthorize.php:361
+#: actions/apioauthauthorize.php:351
msgid "Allow or deny access to your account information."
msgstr ""
@@ -739,8 +752,8 @@ msgstr "Original"
msgid "Preview"
msgstr "Antevisão"
-#: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:608
+#: actions/avatarsettings.php:149 actions/showapplication.php:252
+#: lib/deleteuserform.php:66 lib/noticelist.php:624
msgid "Delete"
msgstr "Apagar"
@@ -790,8 +803,9 @@ msgstr ""
"subscrição por este utilizador será cancelada, ele não poderá subscrevê-lo "
"de futuro e você não receberá notificações das @-respostas dele."
-#: actions/block.php:143 actions/deletenotice.php:145
-#: actions/deleteuser.php:147 actions/groupblock.php:178
+#: actions/block.php:143 actions/deleteapplication.php:153
+#: actions/deletenotice.php:145 actions/deleteuser.php:147
+#: actions/groupblock.php:178
msgid "No"
msgstr "Não"
@@ -799,9 +813,9 @@ msgstr "Não"
msgid "Do not block this user"
msgstr "Não bloquear este utilizador"
-#: actions/block.php:144 actions/deletenotice.php:146
-#: actions/deleteuser.php:148 actions/groupblock.php:179
-#: lib/repeatform.php:132
+#: actions/block.php:144 actions/deleteapplication.php:158
+#: actions/deletenotice.php:146 actions/deleteuser.php:148
+#: actions/groupblock.php:179 lib/repeatform.php:132
msgid "Yes"
msgstr "Sim"
@@ -906,6 +920,53 @@ msgstr "Conversação"
msgid "Notices"
msgstr "Notas"
+#: actions/deleteapplication.php:63
+#, fuzzy
+msgid "You must be logged in to delete an application."
+msgstr "Precisa de iniciar sessão para editar um grupo."
+
+#: actions/deleteapplication.php:71
+#, fuzzy
+msgid "Application not found."
+msgstr "Nota não tem perfil"
+
+#: actions/deleteapplication.php:78 actions/editapplication.php:77
+#: actions/showapplication.php:94
+#, fuzzy
+msgid "You are not the owner of this application."
+msgstr "Não é membro deste grupo."
+
+#: actions/deleteapplication.php:102 actions/editapplication.php:127
+#: actions/newapplication.php:110 actions/showapplication.php:118
+#: lib/action.php:1195
+msgid "There was a problem with your session token."
+msgstr "Ocorreu um problema com a sua sessão."
+
+#: actions/deleteapplication.php:123 actions/deleteapplication.php:147
+#, fuzzy
+msgid "Delete application"
+msgstr "Nota não encontrada."
+
+#: actions/deleteapplication.php:149
+#, fuzzy
+msgid ""
+"Are you sure you want to delete this application? This will clear all data "
+"about the application from the database, including all existing user "
+"connections."
+msgstr ""
+"Tem a certeza de que quer apagar este utilizador? Todos os dados do "
+"utilizador serão eliminados da base de dados, sem haver cópias."
+
+#: actions/deleteapplication.php:156
+#, fuzzy
+msgid "Do not delete this application"
+msgstr "Não apagar esta nota"
+
+#: actions/deleteapplication.php:160
+#, fuzzy
+msgid "Delete this application"
+msgstr "Apagar esta nota"
+
#: actions/deletenotice.php:67 actions/disfavor.php:61 actions/favor.php:62
#: actions/groupblock.php:61 actions/groupunblock.php:61 actions/logout.php:69
#: actions/makeadmin.php:61 actions/newmessage.php:87 actions/newnotice.php:89
@@ -940,7 +1001,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:608
+#: actions/deletenotice.php:146 lib/noticelist.php:624
msgid "Delete this notice"
msgstr "Apagar esta nota"
@@ -1084,7 +1145,7 @@ msgstr "Esta nota não é uma favorita!"
msgid "Add to favorites"
msgstr "Adicionar às favoritas"
-#: actions/doc.php:155
+#: actions/doc.php:158
#, fuzzy, php-format
msgid "No such document \"%s\""
msgstr "Documento não encontrado."
@@ -1099,22 +1160,12 @@ msgstr "Outras opções"
msgid "You must be logged in to edit an application."
msgstr "Precisa de iniciar sessão para editar um grupo."
-#: actions/editapplication.php:77 actions/showapplication.php:94
-#, fuzzy
-msgid "You are not the owner of this application."
-msgstr "Não é membro deste grupo."
-
-#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:163
+#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:166
#: actions/showapplication.php:87
#, fuzzy
msgid "No such application."
msgstr "Nota não encontrada."
-#: actions/editapplication.php:127 actions/newapplication.php:110
-#: actions/showapplication.php:118 lib/action.php:1195
-msgid "There was a problem with your session token."
-msgstr "Ocorreu um problema com a sua sessão."
-
#: actions/editapplication.php:161
#, fuzzy
msgid "Use this form to edit your application."
@@ -1125,48 +1176,53 @@ msgstr "Use este formulário para editar o grupo."
msgid "Name is required."
msgstr "Repita a senha acima. Obrigatório."
-#: actions/editapplication.php:180 actions/newapplication.php:162
+#: actions/editapplication.php:180 actions/newapplication.php:165
#, fuzzy
msgid "Name is too long (max 255 chars)."
msgstr "Nome completo demasiado longo (máx. 255 caracteres)."
-#: actions/editapplication.php:183 actions/newapplication.php:165
+#: actions/editapplication.php:183 actions/newapplication.php:162
+#, fuzzy
+msgid "Name already in use. Try another one."
+msgstr "Utilizador já é usado. Tente outro."
+
+#: actions/editapplication.php:186 actions/newapplication.php:168
#, fuzzy
msgid "Description is required."
msgstr "Descrição"
-#: actions/editapplication.php:191
+#: actions/editapplication.php:194
msgid "Source URL is too long."
msgstr ""
-#: actions/editapplication.php:197 actions/newapplication.php:182
+#: actions/editapplication.php:200 actions/newapplication.php:185
#, fuzzy
msgid "Source URL is not valid."
msgstr "A URL ‘%s’ do avatar é inválida."
-#: actions/editapplication.php:200 actions/newapplication.php:185
+#: actions/editapplication.php:203 actions/newapplication.php:188
msgid "Organization is required."
msgstr ""
-#: actions/editapplication.php:203 actions/newapplication.php:188
+#: actions/editapplication.php:206 actions/newapplication.php:191
#, fuzzy
msgid "Organization is too long (max 255 chars)."
msgstr "Localidade demasiado longa (máx. 255 caracteres)."
-#: actions/editapplication.php:206 actions/newapplication.php:191
+#: actions/editapplication.php:209 actions/newapplication.php:194
msgid "Organization homepage is required."
msgstr ""
-#: actions/editapplication.php:215 actions/newapplication.php:203
+#: actions/editapplication.php:218 actions/newapplication.php:206
msgid "Callback is too long."
msgstr ""
-#: actions/editapplication.php:222 actions/newapplication.php:212
+#: actions/editapplication.php:225 actions/newapplication.php:215
#, fuzzy
msgid "Callback URL is not valid."
msgstr "A URL ‘%s’ do avatar é inválida."
-#: actions/editapplication.php:255
+#: actions/editapplication.php:258
#, fuzzy
msgid "Could not update application."
msgstr "Não foi possível actualizar o grupo."
@@ -2106,11 +2162,11 @@ msgstr "Tem de iniciar uma sessão para criar o grupo."
msgid "Use this form to register a new application."
msgstr "Use este formulário para criar um grupo novo."
-#: actions/newapplication.php:173
+#: actions/newapplication.php:176
msgid "Source URL is required."
msgstr ""
-#: actions/newapplication.php:255 actions/newapplication.php:264
+#: actions/newapplication.php:258 actions/newapplication.php:267
#, fuzzy
msgid "Could not create application."
msgstr "Não foi possível criar sinónimos."
@@ -2246,29 +2302,29 @@ msgstr ""
msgid "You have not registered any applications yet."
msgstr ""
-#: actions/oauthconnectionssettings.php:71
+#: actions/oauthconnectionssettings.php:72
msgid "Connected applications"
msgstr ""
-#: actions/oauthconnectionssettings.php:87
+#: actions/oauthconnectionssettings.php:83
msgid "You have allowed the following applications to access you account."
msgstr ""
-#: actions/oauthconnectionssettings.php:170
+#: actions/oauthconnectionssettings.php:175
#, fuzzy
msgid "You are not a user of that application."
msgstr "Não é um membro desse grupo."
-#: actions/oauthconnectionssettings.php:180
+#: actions/oauthconnectionssettings.php:186
msgid "Unable to revoke access for app: "
msgstr ""
-#: actions/oauthconnectionssettings.php:192
+#: actions/oauthconnectionssettings.php:198
#, php-format
msgid "You have not authorized any applications to use your account."
msgstr ""
-#: actions/oauthconnectionssettings.php:205
+#: actions/oauthconnectionssettings.php:211
msgid "Developers can edit the registration settings for their applications "
msgstr ""
@@ -2775,19 +2831,19 @@ msgstr "Notas públicas, página %d"
msgid "Public timeline"
msgstr "Notas públicas"
-#: actions/public.php:151
+#: actions/public.php:159
msgid "Public Stream Feed (RSS 1.0)"
msgstr "Fonte de Notas Públicas (RSS 1.0)"
-#: actions/public.php:155
+#: actions/public.php:163
msgid "Public Stream Feed (RSS 2.0)"
msgstr "Fonte de Notas Públicas (RSS 2.0)"
-#: actions/public.php:159
+#: actions/public.php:167
msgid "Public Stream Feed (Atom)"
msgstr "Fonte de Notas Públicas (Atom)"
-#: actions/public.php:179
+#: actions/public.php:187
#, php-format
msgid ""
"This is the public timeline for %%site.name%% but no one has posted anything "
@@ -2796,11 +2852,11 @@ msgstr ""
"Estas são as notas públicas do site %%site.name%% mas ninguém publicou nada "
"ainda."
-#: actions/public.php:182
+#: actions/public.php:190
msgid "Be the first to post!"
msgstr "Seja a primeira pessoa a publicar!"
-#: actions/public.php:186
+#: actions/public.php:194
#, php-format
msgid ""
"Why not [register an account](%%action.register%%) and be the first to post!"
@@ -2808,7 +2864,7 @@ msgstr ""
"Podia [registar uma conta](%%action.register%%) e ser a primeira pessoa a "
"publicar!"
-#: actions/public.php:233
+#: actions/public.php:241
#, php-format
msgid ""
"This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2821,7 +2877,7 @@ msgstr ""
"[StatusNet](http://status.net/). [Registe-se agora](%%action.register%%) "
"para partilhar notas sobre si, família e amigos! ([Saber mais](%%doc.help%%))"
-#: actions/public.php:238
+#: actions/public.php:246
#, php-format
msgid ""
"This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -3190,7 +3246,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:626
+#: actions/repeat.php:114 lib/noticelist.php:642
msgid "Repeated"
msgstr "Repetida"
@@ -3256,6 +3312,10 @@ msgstr ""
msgid "Replies to %1$s on %2$s!"
msgstr "Respostas a %1$s em %2$s!"
+#: actions/rsd.php:146 actions/version.php:157
+msgid "StatusNet"
+msgstr "StatusNet"
+
#: actions/sandbox.php:65 actions/unsandbox.php:65
msgid "You cannot sandbox users on this site."
msgstr "Não pode impedir notas públicas neste site."
@@ -3300,79 +3360,84 @@ msgstr "Gravar configurações do site"
msgid "You must be logged in to view an application."
msgstr "Precisa de iniciar uma sessão para deixar um grupo."
-#: actions/showapplication.php:158
+#: actions/showapplication.php:157
#, fuzzy
msgid "Application profile"
msgstr "Nota não tem perfil"
-#: actions/showapplication.php:160 lib/applicationeditform.php:180
+#: actions/showapplication.php:159 lib/applicationeditform.php:180
msgid "Icon"
msgstr ""
-#: actions/showapplication.php:170 actions/version.php:195
+#: actions/showapplication.php:169 actions/version.php:195
#: lib/applicationeditform.php:195
msgid "Name"
msgstr "Nome"
-#: actions/showapplication.php:179 lib/applicationeditform.php:222
+#: actions/showapplication.php:178 lib/applicationeditform.php:222
#, fuzzy
msgid "Organization"
msgstr "Paginação"
-#: actions/showapplication.php:188 actions/version.php:198
+#: actions/showapplication.php:187 actions/version.php:198
#: lib/applicationeditform.php:209 lib/groupeditform.php:172
msgid "Description"
msgstr "Descrição"
-#: actions/showapplication.php:193 actions/showgroup.php:429
+#: actions/showapplication.php:192 actions/showgroup.php:429
#: lib/profileaction.php:174
msgid "Statistics"
msgstr "Estatísticas"
-#: actions/showapplication.php:204
+#: actions/showapplication.php:203
#, php-format
-msgid "created by %1$s - %2$s access by default - %3$d users"
+msgid "Created by %1$s - %2$s access by default - %3$d users"
msgstr ""
-#: actions/showapplication.php:214
+#: actions/showapplication.php:213
msgid "Application actions"
msgstr ""
-#: actions/showapplication.php:233
+#: actions/showapplication.php:236
msgid "Reset key & secret"
msgstr ""
-#: actions/showapplication.php:241
+#: actions/showapplication.php:261
msgid "Application info"
msgstr ""
-#: actions/showapplication.php:243
+#: actions/showapplication.php:263
msgid "Consumer key"
msgstr ""
-#: actions/showapplication.php:248
+#: actions/showapplication.php:268
msgid "Consumer secret"
msgstr ""
-#: actions/showapplication.php:253
+#: actions/showapplication.php:273
msgid "Request token URL"
msgstr ""
-#: actions/showapplication.php:258
+#: actions/showapplication.php:278
msgid "Access token URL"
msgstr ""
-#: actions/showapplication.php:263
+#: actions/showapplication.php:283
#, fuzzy
msgid "Authorize URL"
msgstr "Autor"
-#: actions/showapplication.php:268
+#: actions/showapplication.php:288
msgid ""
"Note: We support HMAC-SHA1 signatures. We do not support the plaintext "
"signature method."
msgstr ""
+#: actions/showapplication.php:309
+#, fuzzy
+msgid "Are you sure you want to reset your consumer key and secret?"
+msgstr "Tem a certeza de que quer apagar esta nota?"
+
#: actions/showfavorites.php:79
#, fuzzy, php-format
msgid "%1$s's favorite notices, page %2$d"
@@ -3590,12 +3655,12 @@ msgstr "Fonte de notas para %s (Atom)"
msgid "FOAF for %s"
msgstr "FOAF para %s"
-#: actions/showstream.php:191
+#: actions/showstream.php:200
#, php-format
msgid "This is the timeline for %1$s but %2$s hasn't posted anything yet."
msgstr "Estas são as notas de %1$s, mas %2$s ainda não publicou nenhuma."
-#: actions/showstream.php:196
+#: actions/showstream.php:205
msgid ""
"Seen anything interesting recently? You haven't posted any notices yet, now "
"would be a good time to start :)"
@@ -3603,7 +3668,7 @@ msgstr ""
"Viu algo de interessante ultimamente? Como ainda não publicou nenhuma nota, "
"esta seria uma óptima altura para começar :)"
-#: actions/showstream.php:198
+#: actions/showstream.php:207
#, php-format
msgid ""
"You can try to nudge %1$s or [post something to his or her attention](%%%%"
@@ -3612,7 +3677,7 @@ msgstr ""
"Pode tentar dar um toque em %1$s ou [publicar algo à sua atenção](%%%%action."
"newnotice%%%%?status_textarea=%2$s)."
-#: actions/showstream.php:234
+#: actions/showstream.php:243
#, php-format
msgid ""
"**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3626,7 +3691,7 @@ msgstr ""
"register%%) para seguir as notas de **%s** e de muitos mais! ([Saber mais](%%"
"doc.help%%))"
-#: actions/showstream.php:239
+#: actions/showstream.php:248
#, php-format
msgid ""
"**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3637,7 +3702,7 @@ msgstr ""
"(http://en.wikipedia.org/wiki/Micro-blogging) baseado no programa de "
"Software Livre [StatusNet](http://status.net/). "
-#: actions/showstream.php:296
+#: actions/showstream.php:305
#, php-format
msgid "Repeat of %s"
msgstr "Repetência de %s"
@@ -4316,10 +4381,6 @@ msgstr ""
"Este site utiliza o %1$s versão %2$s, (c) 2008-2010 StatusNet, Inc. e "
"colaboradores."
-#: actions/version.php:157
-msgid "StatusNet"
-msgstr "StatusNet"
-
#: actions/version.php:161
msgid "Contributors"
msgstr "Colaboradores"
@@ -4456,22 +4517,22 @@ msgstr "Está proibido de publicar notas neste site."
msgid "Problem saving notice."
msgstr "Problema na gravação da nota."
-#: classes/Notice.php:790
+#: classes/Notice.php:788
#, fuzzy
msgid "Problem saving group inbox."
msgstr "Problema na gravação da nota."
-#: classes/Notice.php:850
+#: classes/Notice.php:848
#, php-format
msgid "DB error inserting reply: %s"
msgstr "Ocorreu um erro na base de dados ao inserir a resposta: %s"
-#: classes/Notice.php:1233
+#: classes/Notice.php:1231
#, php-format
msgid "RT @%1$s %2$s"
msgstr "RT @%1$s %2$s"
-#: classes/User.php:382
+#: classes/User.php:385
#, php-format
msgid "Welcome to %1$s, @%2$s!"
msgstr "%1$s dá-lhe as boas-vindas, @%2$s!"
@@ -4748,11 +4809,11 @@ msgstr "Configuração das localizações"
msgid "Sessions configuration"
msgstr "Configuração do estilo"
-#: lib/apiauth.php:99
+#: lib/apiauth.php:95
msgid "API resource requires read-write access, but you only have read access."
msgstr ""
-#: lib/apiauth.php:279
+#: lib/apiauth.php:273
#, php-format
msgid "Failed API auth attempt, nickname = %1$s, proxy = %2$s, ip = %3$s"
msgstr ""
@@ -5155,19 +5216,19 @@ msgstr ""
"tracks - ainda não implementado.\n"
"tracking - ainda não implementado.\n"
-#: lib/common.php:131
+#: lib/common.php:135
msgid "No configuration file found. "
msgstr "Ficheiro de configuração não encontrado. "
-#: lib/common.php:132
+#: lib/common.php:136
msgid "I looked for configuration files in the following places: "
msgstr "Procurei ficheiros de configuração nos seguintes sítios: "
-#: lib/common.php:134
+#: lib/common.php:138
msgid "You may wish to run the installer to fix this."
msgstr "Talvez queira correr o instalador para resolver esta questão."
-#: lib/common.php:135
+#: lib/common.php:139
msgid "Go to the installer."
msgstr "Ir para o instalador."
@@ -5813,23 +5874,23 @@ msgstr "O"
msgid "at"
msgstr "coords."
-#: lib/noticelist.php:531
+#: lib/noticelist.php:547
msgid "in context"
msgstr "no contexto"
-#: lib/noticelist.php:556
+#: lib/noticelist.php:572
msgid "Repeated by"
msgstr "Repetida por"
-#: lib/noticelist.php:582
+#: lib/noticelist.php:598
msgid "Reply to this notice"
msgstr "Responder a esta nota"
-#: lib/noticelist.php:583
+#: lib/noticelist.php:599
msgid "Reply"
msgstr "Responder"
-#: lib/noticelist.php:625
+#: lib/noticelist.php:641
msgid "Notice repeated"
msgstr "Nota repetida"
@@ -5970,6 +6031,10 @@ msgstr "Repetir esta nota?"
msgid "Repeat this notice"
msgstr "Repetir esta nota"
+#: lib/router.php:665
+msgid "No single user defined for single-user mode."
+msgstr ""
+
#: lib/sandboxform.php:67
msgid "Sandbox"
msgstr "Bloquear notas públicas"
@@ -6135,47 +6200,47 @@ msgstr "Mensagem"
msgid "Moderate"
msgstr "Moderar"
-#: lib/util.php:868
+#: lib/util.php:867
msgid "a few seconds ago"
msgstr "há alguns segundos"
-#: lib/util.php:870
+#: lib/util.php:869
msgid "about a minute ago"
msgstr "há cerca de um minuto"
-#: lib/util.php:872
+#: lib/util.php:871
#, php-format
msgid "about %d minutes ago"
msgstr "há cerca de %d minutos"
-#: lib/util.php:874
+#: lib/util.php:873
msgid "about an hour ago"
msgstr "há cerca de uma hora"
-#: lib/util.php:876
+#: lib/util.php:875
#, php-format
msgid "about %d hours ago"
msgstr "há cerca de %d horas"
-#: lib/util.php:878
+#: lib/util.php:877
msgid "about a day ago"
msgstr "há cerca de um dia"
-#: lib/util.php:880
+#: lib/util.php:879
#, php-format
msgid "about %d days ago"
msgstr "há cerca de %d dias"
-#: lib/util.php:882
+#: lib/util.php:881
msgid "about a month ago"
msgstr "há cerca de um mês"
-#: lib/util.php:884
+#: lib/util.php:883
#, php-format
msgid "about %d months ago"
msgstr "há cerca de %d meses"
-#: lib/util.php:886
+#: lib/util.php:885
msgid "about a year ago"
msgstr "há cerca de um ano"
diff --git a/locale/pt_BR/LC_MESSAGES/statusnet.po b/locale/pt_BR/LC_MESSAGES/statusnet.po
index 6d8a577e7..88b46d663 100644
--- a/locale/pt_BR/LC_MESSAGES/statusnet.po
+++ b/locale/pt_BR/LC_MESSAGES/statusnet.po
@@ -10,12 +10,12 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-01-30 23:41+0000\n"
-"PO-Revision-Date: 2010-01-30 23:42:37+0000\n"
+"POT-Creation-Date: 2010-02-04 10:31+0000\n"
+"PO-Revision-Date: 2010-02-04 10:33:27+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 (r61734); Translate extension (2010-01-16)\n"
+"X-Generator: MediaWiki 1.16alpha (r61969); Translate extension (2010-01-16)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: pt-br\n"
"X-Message-Group: out-statusnet\n"
@@ -97,7 +97,7 @@ msgstr "Esta página não existe."
#: actions/favoritesrss.php:74 actions/foaf.php:40 actions/foaf.php:58
#: actions/microsummary.php:62 actions/newmessage.php:116 actions/otp.php:76
#: actions/remotesubscribe.php:145 actions/remotesubscribe.php:154
-#: actions/replies.php:73 actions/repliesrss.php:38
+#: actions/replies.php:73 actions/repliesrss.php:38 actions/rsd.php:116
#: actions/showfavorites.php:105 actions/userbyid.php:74
#: actions/usergroups.php:91 actions/userrss.php:38 actions/xrds.php:71
#: lib/command.php:163 lib/command.php:302 lib/command.php:355
@@ -161,7 +161,7 @@ msgstr ""
"[publicar alguma coisa que desperte seu interesse](%%%%action.newnotice%%%%?"
"status_textarea=%3$s)."
-#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:202
+#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:211
#, php-format
msgid ""
"Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
@@ -393,8 +393,8 @@ msgstr "Esta identificação já está em uso. Tente outro."
msgid "Not a valid nickname."
msgstr "Não é uma identificação válida."
-#: actions/apigroupcreate.php:196 actions/editapplication.php:212
-#: actions/editgroup.php:195 actions/newapplication.php:200
+#: actions/apigroupcreate.php:196 actions/editapplication.php:215
+#: actions/editgroup.php:195 actions/newapplication.php:203
#: actions/newgroup.php:139 actions/profilesettings.php:222
#: actions/register.php:217
msgid "Homepage is not a valid URL."
@@ -406,8 +406,8 @@ msgstr "A URL informada não é válida."
msgid "Full name is too long (max 255 chars)."
msgstr "Nome completo muito extenso (máx. 255 caracteres)"
-#: actions/apigroupcreate.php:213 actions/editapplication.php:187
-#: actions/newapplication.php:169
+#: actions/apigroupcreate.php:213 actions/editapplication.php:190
+#: actions/newapplication.php:172
#, php-format
msgid "Description is too long (max %d chars)."
msgstr "Descrição muito extensa (máximo %d caracteres)."
@@ -484,18 +484,23 @@ msgstr "Grupos de %s"
msgid "groups on %s"
msgstr "grupos no %s"
-#: actions/apioauthauthorize.php:108 actions/apioauthauthorize.php:114
-msgid "Bad request."
-msgstr "Requisição errada."
+#: actions/apioauthauthorize.php:101
+msgid "No oauth_token parameter provided."
+msgstr ""
-#: actions/apioauthauthorize.php:134 actions/avatarsettings.php:268
+#: actions/apioauthauthorize.php:106
+#, fuzzy
+msgid "Invalid token."
+msgstr "Tamanho inválido."
+
+#: actions/apioauthauthorize.php:123 actions/avatarsettings.php:268
#: actions/deletenotice.php:157 actions/disfavor.php:74
-#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:50
+#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:54
#: actions/groupblock.php:66 actions/grouplogo.php:309
#: actions/groupunblock.php:66 actions/imsettings.php:206
#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
-#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:139
+#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:135
#: actions/othersettings.php:145 actions/passwordsettings.php:138
#: actions/profilesettings.php:194 actions/recoverpassword.php:337
#: actions/register.php:165 actions/remotesubscribe.php:77
@@ -507,23 +512,23 @@ msgid "There was a problem with your session token. Try again, please."
msgstr ""
"Ocorreu um problema com o seu token de sessão. Tente novamente, por favor."
-#: actions/apioauthauthorize.php:146
+#: actions/apioauthauthorize.php:135
msgid "Invalid nickname / password!"
msgstr "Nome de usuário e/ou senha inválido(s)!"
-#: actions/apioauthauthorize.php:170
+#: actions/apioauthauthorize.php:159
#, fuzzy
msgid "Database error deleting OAuth application user."
msgstr ""
"Erro no banco de dados durante a exclusão do aplicativo OAuth do usuário."
-#: actions/apioauthauthorize.php:196
+#: actions/apioauthauthorize.php:185
#, fuzzy
msgid "Database error inserting OAuth application user."
msgstr ""
"Erro no banco de dados durante a inserção do aplicativo OAuth do usuário."
-#: actions/apioauthauthorize.php:231
+#: actions/apioauthauthorize.php:214
#, php-format
msgid ""
"The request token %s has been authorized. Please exchange it for an access "
@@ -532,53 +537,61 @@ msgstr ""
"O token de requisição %s foi autorizado. Por favor, troque-o por um token de "
"acesso."
-#: actions/apioauthauthorize.php:241
-#, php-format
-msgid "The request token %s has been denied."
+#: actions/apioauthauthorize.php:227
+#, fuzzy, php-format
+msgid "The request token %s has been denied and revoked."
msgstr "O token de requisição %s foi negado."
-#: actions/apioauthauthorize.php:246 actions/avatarsettings.php:281
+#: actions/apioauthauthorize.php:232 actions/avatarsettings.php:281
#: actions/designadminpanel.php:103 actions/editapplication.php:139
#: actions/emailsettings.php:256 actions/grouplogo.php:319
#: actions/imsettings.php:220 actions/newapplication.php:121
-#: actions/oauthconnectionssettings.php:151 actions/recoverpassword.php:44
+#: actions/oauthconnectionssettings.php:147 actions/recoverpassword.php:44
#: actions/smssettings.php:248 lib/designsettings.php:304
msgid "Unexpected form submission."
msgstr "Submissão inesperada de formulário."
-#: actions/apioauthauthorize.php:273
+#: actions/apioauthauthorize.php:259
msgid "An application would like to connect to your account"
msgstr "Uma aplicação gostaria de se conectar à sua conta"
-#: actions/apioauthauthorize.php:290
+#: actions/apioauthauthorize.php:276
msgid "Allow or deny access"
msgstr "Permitir ou negar o acesso"
-#: actions/apioauthauthorize.php:320 lib/action.php:441
+#: actions/apioauthauthorize.php:292
+#, php-format
+msgid ""
+"The application <strong>%1$s</strong> by <strong>%2$s</strong> would like "
+"the ability to <strong>%3$s</strong> your %4$s account data. You should only "
+"give access to your %4$s account to third parties you trust."
+msgstr ""
+
+#: actions/apioauthauthorize.php:310 lib/action.php:441
msgid "Account"
msgstr "Conta"
-#: actions/apioauthauthorize.php:323 actions/login.php:230
+#: actions/apioauthauthorize.php:313 actions/login.php:230
#: actions/profilesettings.php:106 actions/register.php:424
#: actions/showgroup.php:236 actions/tagother.php:94 lib/groupeditform.php:152
#: lib/userprofile.php:131
msgid "Nickname"
msgstr "Usuário"
-#: actions/apioauthauthorize.php:326 actions/login.php:233
+#: actions/apioauthauthorize.php:316 actions/login.php:233
#: actions/register.php:429 lib/accountsettingsaction.php:116
msgid "Password"
msgstr "Senha"
-#: actions/apioauthauthorize.php:338
+#: actions/apioauthauthorize.php:328
msgid "Deny"
msgstr "Negar"
-#: actions/apioauthauthorize.php:344
+#: actions/apioauthauthorize.php:334
msgid "Allow"
msgstr "Permitir"
-#: actions/apioauthauthorize.php:361
+#: actions/apioauthauthorize.php:351
msgid "Allow or deny access to your account information."
msgstr "Permitir ou negar o acesso às informações da sua conta."
@@ -748,8 +761,8 @@ msgstr "Original"
msgid "Preview"
msgstr "Visualização"
-#: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:608
+#: actions/avatarsettings.php:149 actions/showapplication.php:252
+#: lib/deleteuserform.php:66 lib/noticelist.php:624
msgid "Delete"
msgstr "Excluir"
@@ -800,8 +813,9 @@ msgstr ""
"nenhuma notificação acerca de qualquer citação (@usuário) que ele fizer de "
"você."
-#: actions/block.php:143 actions/deletenotice.php:145
-#: actions/deleteuser.php:147 actions/groupblock.php:178
+#: actions/block.php:143 actions/deleteapplication.php:153
+#: actions/deletenotice.php:145 actions/deleteuser.php:147
+#: actions/groupblock.php:178
msgid "No"
msgstr "Não"
@@ -809,9 +823,9 @@ msgstr "Não"
msgid "Do not block this user"
msgstr "Não bloquear este usuário"
-#: actions/block.php:144 actions/deletenotice.php:146
-#: actions/deleteuser.php:148 actions/groupblock.php:179
-#: lib/repeatform.php:132
+#: actions/block.php:144 actions/deleteapplication.php:158
+#: actions/deletenotice.php:146 actions/deleteuser.php:148
+#: actions/groupblock.php:179 lib/repeatform.php:132
msgid "Yes"
msgstr "Sim"
@@ -915,6 +929,52 @@ msgstr "Conversa"
msgid "Notices"
msgstr "Mensagens"
+#: actions/deleteapplication.php:63
+#, fuzzy
+msgid "You must be logged in to delete an application."
+msgstr "Você precisa estar autenticado para editar uma aplicação."
+
+#: actions/deleteapplication.php:71
+#, fuzzy
+msgid "Application not found."
+msgstr "Informação da aplicação"
+
+#: actions/deleteapplication.php:78 actions/editapplication.php:77
+#: actions/showapplication.php:94
+msgid "You are not the owner of this application."
+msgstr "Você não é o dono desta aplicação."
+
+#: actions/deleteapplication.php:102 actions/editapplication.php:127
+#: actions/newapplication.php:110 actions/showapplication.php:118
+#: lib/action.php:1195
+msgid "There was a problem with your session token."
+msgstr "Ocorreu um problema com o seu token de sessão."
+
+#: actions/deleteapplication.php:123 actions/deleteapplication.php:147
+#, fuzzy
+msgid "Delete application"
+msgstr "Editar a aplicação"
+
+#: actions/deleteapplication.php:149
+#, fuzzy
+msgid ""
+"Are you sure you want to delete this application? This will clear all data "
+"about the application from the database, including all existing user "
+"connections."
+msgstr ""
+"Tem certeza que deseja excluir este usuário? Isso irá eliminar todos os "
+"dados deste usuário do banco de dados, sem cópia de segurança."
+
+#: actions/deleteapplication.php:156
+#, fuzzy
+msgid "Do not delete this application"
+msgstr "Não excluir esta mensagem."
+
+#: actions/deleteapplication.php:160
+#, fuzzy
+msgid "Delete this application"
+msgstr "Ícone para esta aplicação"
+
#: actions/deletenotice.php:67 actions/disfavor.php:61 actions/favor.php:62
#: actions/groupblock.php:61 actions/groupunblock.php:61 actions/logout.php:69
#: actions/makeadmin.php:61 actions/newmessage.php:87 actions/newnotice.php:89
@@ -949,7 +1009,7 @@ msgstr "Tem certeza que deseja excluir esta mensagem?"
msgid "Do not delete this notice"
msgstr "Não excluir esta mensagem."
-#: actions/deletenotice.php:146 lib/noticelist.php:608
+#: actions/deletenotice.php:146 lib/noticelist.php:624
msgid "Delete this notice"
msgstr "Excluir esta mensagem"
@@ -1093,7 +1153,7 @@ msgstr "Esta mensagem não é uma favorita!"
msgid "Add to favorites"
msgstr "Adicionar às favoritas"
-#: actions/doc.php:155
+#: actions/doc.php:158
#, fuzzy, php-format
msgid "No such document \"%s\""
msgstr "Esse documento não existe."
@@ -1107,20 +1167,11 @@ msgstr "Editar a aplicação"
msgid "You must be logged in to edit an application."
msgstr "Você precisa estar autenticado para editar uma aplicação."
-#: actions/editapplication.php:77 actions/showapplication.php:94
-msgid "You are not the owner of this application."
-msgstr "Você não é o dono desta aplicação."
-
-#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:163
+#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:166
#: actions/showapplication.php:87
msgid "No such application."
msgstr "Essa aplicação não existe."
-#: actions/editapplication.php:127 actions/newapplication.php:110
-#: actions/showapplication.php:118 lib/action.php:1195
-msgid "There was a problem with your session token."
-msgstr "Ocorreu um problema com o seu token de sessão."
-
#: actions/editapplication.php:161
msgid "Use this form to edit your application."
msgstr "Use este formulário para editar a sua aplicação."
@@ -1129,43 +1180,48 @@ msgstr "Use este formulário para editar a sua aplicação."
msgid "Name is required."
msgstr "O nome é obrigatório."
-#: actions/editapplication.php:180 actions/newapplication.php:162
+#: actions/editapplication.php:180 actions/newapplication.php:165
msgid "Name is too long (max 255 chars)."
msgstr "O nome é muito extenso (máx. 255 caracteres)."
-#: actions/editapplication.php:183 actions/newapplication.php:165
+#: actions/editapplication.php:183 actions/newapplication.php:162
+#, fuzzy
+msgid "Name already in use. Try another one."
+msgstr "Esta identificação já está em uso. Tente outro."
+
+#: actions/editapplication.php:186 actions/newapplication.php:168
msgid "Description is required."
msgstr "A descrição é obrigatória."
-#: actions/editapplication.php:191
+#: actions/editapplication.php:194
msgid "Source URL is too long."
msgstr "A URL da fonte é muito extensa."
-#: actions/editapplication.php:197 actions/newapplication.php:182
+#: actions/editapplication.php:200 actions/newapplication.php:185
msgid "Source URL is not valid."
msgstr "A URL da fonte não é válida."
-#: actions/editapplication.php:200 actions/newapplication.php:185
+#: actions/editapplication.php:203 actions/newapplication.php:188
msgid "Organization is required."
msgstr "A organização é obrigatória."
-#: actions/editapplication.php:203 actions/newapplication.php:188
+#: actions/editapplication.php:206 actions/newapplication.php:191
msgid "Organization is too long (max 255 chars)."
msgstr "A organização é muito extensa (máx. 255 caracteres)."
-#: actions/editapplication.php:206 actions/newapplication.php:191
+#: actions/editapplication.php:209 actions/newapplication.php:194
msgid "Organization homepage is required."
msgstr "O site da organização é obrigatório."
-#: actions/editapplication.php:215 actions/newapplication.php:203
+#: actions/editapplication.php:218 actions/newapplication.php:206
msgid "Callback is too long."
msgstr "O retorno é muito extenso."
-#: actions/editapplication.php:222 actions/newapplication.php:212
+#: actions/editapplication.php:225 actions/newapplication.php:215
msgid "Callback URL is not valid."
msgstr "A URL de retorno não é válida."
-#: actions/editapplication.php:255
+#: actions/editapplication.php:258
msgid "Could not update application."
msgstr "Não foi possível atualizar a aplicação."
@@ -2109,11 +2165,11 @@ msgstr "Você deve estar autenticado para registrar uma aplicação."
msgid "Use this form to register a new application."
msgstr "Utilize este formulário para registrar uma nova aplicação."
-#: actions/newapplication.php:173
+#: actions/newapplication.php:176
msgid "Source URL is required."
msgstr "A URL da fonte é obrigatória."
-#: actions/newapplication.php:255 actions/newapplication.php:264
+#: actions/newapplication.php:258 actions/newapplication.php:267
msgid "Could not create application."
msgstr "Não foi possível criar a aplicação."
@@ -2249,28 +2305,28 @@ msgstr "Aplicações que você registrou"
msgid "You have not registered any applications yet."
msgstr "Você ainda não registrou nenhuma aplicação."
-#: actions/oauthconnectionssettings.php:71
+#: actions/oauthconnectionssettings.php:72
msgid "Connected applications"
msgstr "Aplicações conectadas"
-#: actions/oauthconnectionssettings.php:87
+#: actions/oauthconnectionssettings.php:83
msgid "You have allowed the following applications to access you account."
msgstr "Você permitiu que as seguintes aplicações acessem a sua conta."
-#: actions/oauthconnectionssettings.php:170
+#: actions/oauthconnectionssettings.php:175
msgid "You are not a user of that application."
msgstr "Você não é um usuário dessa aplicação."
-#: actions/oauthconnectionssettings.php:180
+#: actions/oauthconnectionssettings.php:186
msgid "Unable to revoke access for app: "
msgstr "Não foi possível revogar o acesso para a aplicação: "
-#: actions/oauthconnectionssettings.php:192
+#: actions/oauthconnectionssettings.php:198
#, php-format
msgid "You have not authorized any applications to use your account."
msgstr "Você não autorizou nenhuma aplicação a usar a sua conta."
-#: actions/oauthconnectionssettings.php:205
+#: actions/oauthconnectionssettings.php:211
msgid "Developers can edit the registration settings for their applications "
msgstr ""
"Os desenvolvedores podem editar as configurações de registro para suas "
@@ -2775,19 +2831,19 @@ msgstr "Mensagens públicas, pág. %d"
msgid "Public timeline"
msgstr "Mensagens públicas"
-#: actions/public.php:151
+#: actions/public.php:159
msgid "Public Stream Feed (RSS 1.0)"
msgstr "Fonte de mensagens públicas (RSS 1.0)"
-#: actions/public.php:155
+#: actions/public.php:163
msgid "Public Stream Feed (RSS 2.0)"
msgstr "Fonte de mensagens públicas (RSS 2.0)"
-#: actions/public.php:159
+#: actions/public.php:167
msgid "Public Stream Feed (Atom)"
msgstr "Fonte de mensagens públicas (Atom)"
-#: actions/public.php:179
+#: actions/public.php:187
#, php-format
msgid ""
"This is the public timeline for %%site.name%% but no one has posted anything "
@@ -2796,11 +2852,11 @@ msgstr ""
"Esse é o fluxo de mensagens públicas de %%site.name%%, mas ninguém publicou "
"nada ainda."
-#: actions/public.php:182
+#: actions/public.php:190
msgid "Be the first to post!"
msgstr "Seja o primeiro a publicar!"
-#: actions/public.php:186
+#: actions/public.php:194
#, php-format
msgid ""
"Why not [register an account](%%action.register%%) and be the first to post!"
@@ -2808,7 +2864,7 @@ msgstr ""
"Por que você não [registra uma conta](%%action.register%%) pra ser o "
"primeiro a publicar?"
-#: actions/public.php:233
+#: actions/public.php:241
#, php-format
msgid ""
"This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2821,7 +2877,7 @@ msgstr ""
"[Cadastre-se agora](%%action.register%%) para compartilhar notícias sobre "
"você com seus amigos, família e colegas! ([Saiba mais](%%doc.help%%))"
-#: actions/public.php:238
+#: actions/public.php:246
#, php-format
msgid ""
"This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -3190,7 +3246,7 @@ msgstr "Você não pode repetir sua própria mensagem."
msgid "You already repeated that notice."
msgstr "Você já repetiu essa mensagem."
-#: actions/repeat.php:114 lib/noticelist.php:626
+#: actions/repeat.php:114 lib/noticelist.php:642
msgid "Repeated"
msgstr "Repetida"
@@ -3257,6 +3313,10 @@ msgstr ""
msgid "Replies to %1$s on %2$s!"
msgstr "Respostas para %1$s no %2$s"
+#: actions/rsd.php:146 actions/version.php:157
+msgid "StatusNet"
+msgstr "StatusNet"
+
#: actions/sandbox.php:65 actions/unsandbox.php:65
msgid "You cannot sandbox users on this site."
msgstr "Você não pode colocar usuários deste site em isolamento."
@@ -3300,71 +3360,71 @@ msgstr "Salvar as configurações do site"
msgid "You must be logged in to view an application."
msgstr "Você deve estar autenticado para visualizar uma aplicação."
-#: actions/showapplication.php:158
+#: actions/showapplication.php:157
msgid "Application profile"
msgstr "Perfil da aplicação"
-#: actions/showapplication.php:160 lib/applicationeditform.php:180
+#: actions/showapplication.php:159 lib/applicationeditform.php:180
msgid "Icon"
msgstr "Ícone"
-#: actions/showapplication.php:170 actions/version.php:195
+#: actions/showapplication.php:169 actions/version.php:195
#: lib/applicationeditform.php:195
msgid "Name"
msgstr "Nome"
-#: actions/showapplication.php:179 lib/applicationeditform.php:222
+#: actions/showapplication.php:178 lib/applicationeditform.php:222
msgid "Organization"
msgstr "Organização"
-#: actions/showapplication.php:188 actions/version.php:198
+#: actions/showapplication.php:187 actions/version.php:198
#: lib/applicationeditform.php:209 lib/groupeditform.php:172
msgid "Description"
msgstr "Descrição"
-#: actions/showapplication.php:193 actions/showgroup.php:429
+#: actions/showapplication.php:192 actions/showgroup.php:429
#: lib/profileaction.php:174
msgid "Statistics"
msgstr "Estatísticas"
-#: actions/showapplication.php:204
-#, php-format
-msgid "created by %1$s - %2$s access by default - %3$d users"
+#: actions/showapplication.php:203
+#, fuzzy, php-format
+msgid "Created by %1$s - %2$s access by default - %3$d users"
msgstr "criado por %1$s - %2$s acessa por padrão - %3$d usuários"
-#: actions/showapplication.php:214
+#: actions/showapplication.php:213
msgid "Application actions"
msgstr "Ações da aplicação"
-#: actions/showapplication.php:233
+#: actions/showapplication.php:236
msgid "Reset key & secret"
msgstr "Restaurar a chave e o segredo"
-#: actions/showapplication.php:241
+#: actions/showapplication.php:261
msgid "Application info"
msgstr "Informação da aplicação"
-#: actions/showapplication.php:243
+#: actions/showapplication.php:263
msgid "Consumer key"
msgstr "Chave do consumidor"
-#: actions/showapplication.php:248
+#: actions/showapplication.php:268
msgid "Consumer secret"
msgstr "Segredo do consumidor"
-#: actions/showapplication.php:253
+#: actions/showapplication.php:273
msgid "Request token URL"
msgstr "URL do token de requisição"
-#: actions/showapplication.php:258
+#: actions/showapplication.php:278
msgid "Access token URL"
msgstr "URL do token de acesso"
-#: actions/showapplication.php:263
+#: actions/showapplication.php:283
msgid "Authorize URL"
msgstr "Autorizar a URL"
-#: actions/showapplication.php:268
+#: actions/showapplication.php:288
msgid ""
"Note: We support HMAC-SHA1 signatures. We do not support the plaintext "
"signature method."
@@ -3372,6 +3432,11 @@ msgstr ""
"Nota: Nós suportamos assinaturas HMAC-SHA1. Nós não suportamos o método de "
"assinatura em texto plano."
+#: actions/showapplication.php:309
+#, fuzzy
+msgid "Are you sure you want to reset your consumer key and secret?"
+msgstr "Tem certeza que deseja excluir esta mensagem?"
+
#: actions/showfavorites.php:79
#, fuzzy, php-format
msgid "%1$s's favorite notices, page %2$d"
@@ -3589,14 +3654,14 @@ msgstr "Fonte de mensagens de %s (Atom)"
msgid "FOAF for %s"
msgstr "FOAF de %s"
-#: actions/showstream.php:191
+#: actions/showstream.php:200
#, php-format
msgid "This is the timeline for %1$s but %2$s hasn't posted anything yet."
msgstr ""
"Este é o fluxo público de mensagens de %1$s, mas %2$s não publicou nada "
"ainda."
-#: actions/showstream.php:196
+#: actions/showstream.php:205
msgid ""
"Seen anything interesting recently? You haven't posted any notices yet, now "
"would be a good time to start :)"
@@ -3604,7 +3669,7 @@ msgstr ""
"Viu alguma coisa interessante recentemente? Você ainda não publicou nenhuma "
"mensagem. Que tal começar agora? :)"
-#: actions/showstream.php:198
+#: actions/showstream.php:207
#, php-format
msgid ""
"You can try to nudge %1$s or [post something to his or her attention](%%%%"
@@ -3613,7 +3678,7 @@ msgstr ""
"Você pode tentar chamar a atenção de %1$s ou [publicar alguma coisa que "
"desperte seu interesse](%%%%action.newnotice%%%%?status_textarea=%2$s)."
-#: actions/showstream.php:234
+#: actions/showstream.php:243
#, php-format
msgid ""
"**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3627,7 +3692,7 @@ msgstr ""
"acompanhar as mensagens de **%s** e muito mais! ([Saiba mais](%%%%doc.help%%%"
"%))"
-#: actions/showstream.php:239
+#: actions/showstream.php:248
#, php-format
msgid ""
"**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3638,7 +3703,7 @@ msgstr ""
"pt.wikipedia.org/wiki/Micro-blogging) baseado no software livre [StatusNet]"
"(http://status.net/). "
-#: actions/showstream.php:296
+#: actions/showstream.php:305
#, php-format
msgid "Repeat of %s"
msgstr "Repetição de %s"
@@ -4318,10 +4383,6 @@ msgstr ""
"Este site funciona sobre %1$s versão %2$s, Copyright 2008-2010 StatusNet, "
"Inc. e colaboradores."
-#: actions/version.php:157
-msgid "StatusNet"
-msgstr "StatusNet"
-
#: actions/version.php:161
msgid "Contributors"
msgstr "Colaboradores"
@@ -4455,22 +4516,22 @@ msgstr "Você está proibido de publicar mensagens neste site."
msgid "Problem saving notice."
msgstr "Problema no salvamento da mensagem."
-#: classes/Notice.php:790
+#: classes/Notice.php:788
#, fuzzy
msgid "Problem saving group inbox."
msgstr "Problema no salvamento da mensagem."
-#: classes/Notice.php:850
+#: classes/Notice.php:848
#, php-format
msgid "DB error inserting reply: %s"
msgstr "Erro no banco de dados na inserção da reposta: %s"
-#: classes/Notice.php:1233
+#: classes/Notice.php:1231
#, php-format
msgid "RT @%1$s %2$s"
msgstr "RT @%1$s %2$s"
-#: classes/User.php:382
+#: classes/User.php:385
#, php-format
msgid "Welcome to %1$s, @%2$s!"
msgstr "Bem vindo(a) a %1$s, @%2$s!"
@@ -4749,11 +4810,11 @@ msgstr "Configuração dos caminhos"
msgid "Sessions configuration"
msgstr "Configuração da aparência"
-#: lib/apiauth.php:99
+#: lib/apiauth.php:95
msgid "API resource requires read-write access, but you only have read access."
msgstr ""
-#: lib/apiauth.php:279
+#: lib/apiauth.php:273
#, php-format
msgid "Failed API auth attempt, nickname = %1$s, proxy = %2$s, ip = %3$s"
msgstr ""
@@ -5155,19 +5216,19 @@ msgstr ""
"tracks - não implementado ainda\n"
"tracking - não implementado ainda\n"
-#: lib/common.php:131
+#: lib/common.php:135
msgid "No configuration file found. "
msgstr "Não foi encontrado nenhum arquivo de configuração. "
-#: lib/common.php:132
+#: lib/common.php:136
msgid "I looked for configuration files in the following places: "
msgstr "Eu procurei pelos arquivos de configuração nos seguintes lugares: "
-#: lib/common.php:134
+#: lib/common.php:138
msgid "You may wish to run the installer to fix this."
msgstr "Você pode querer executar o instalador para corrigir isto."
-#: lib/common.php:135
+#: lib/common.php:139
msgid "Go to the installer."
msgstr "Ir para o instalador."
@@ -5815,23 +5876,23 @@ msgstr "O"
msgid "at"
msgstr "em"
-#: lib/noticelist.php:531
+#: lib/noticelist.php:547
msgid "in context"
msgstr "no contexto"
-#: lib/noticelist.php:556
+#: lib/noticelist.php:572
msgid "Repeated by"
msgstr "Repetida por"
-#: lib/noticelist.php:582
+#: lib/noticelist.php:598
msgid "Reply to this notice"
msgstr "Responder a esta mensagem"
-#: lib/noticelist.php:583
+#: lib/noticelist.php:599
msgid "Reply"
msgstr "Responder"
-#: lib/noticelist.php:625
+#: lib/noticelist.php:641
msgid "Notice repeated"
msgstr "Mensagem repetida"
@@ -5972,6 +6033,10 @@ msgstr "Repetir esta mensagem?"
msgid "Repeat this notice"
msgstr "Repetir esta mensagem"
+#: lib/router.php:665
+msgid "No single user defined for single-user mode."
+msgstr ""
+
#: lib/sandboxform.php:67
msgid "Sandbox"
msgstr "Isolamento"
@@ -6137,47 +6202,47 @@ msgstr "Mensagem"
msgid "Moderate"
msgstr "Moderar"
-#: lib/util.php:868
+#: lib/util.php:867
msgid "a few seconds ago"
msgstr "alguns segundos atrás"
-#: lib/util.php:870
+#: lib/util.php:869
msgid "about a minute ago"
msgstr "cerca de 1 minuto atrás"
-#: lib/util.php:872
+#: lib/util.php:871
#, php-format
msgid "about %d minutes ago"
msgstr "cerca de %d minutos atrás"
-#: lib/util.php:874
+#: lib/util.php:873
msgid "about an hour ago"
msgstr "cerca de 1 hora atrás"
-#: lib/util.php:876
+#: lib/util.php:875
#, php-format
msgid "about %d hours ago"
msgstr "cerca de %d horas atrás"
-#: lib/util.php:878
+#: lib/util.php:877
msgid "about a day ago"
msgstr "cerca de 1 dia atrás"
-#: lib/util.php:880
+#: lib/util.php:879
#, php-format
msgid "about %d days ago"
msgstr "cerca de %d dias atrás"
-#: lib/util.php:882
+#: lib/util.php:881
msgid "about a month ago"
msgstr "cerca de 1 mês atrás"
-#: lib/util.php:884
+#: lib/util.php:883
#, php-format
msgid "about %d months ago"
msgstr "cerca de %d meses atrás"
-#: lib/util.php:886
+#: lib/util.php:885
msgid "about a year ago"
msgstr "cerca de 1 ano atrás"
diff --git a/locale/ru/LC_MESSAGES/statusnet.po b/locale/ru/LC_MESSAGES/statusnet.po
index 8e501c51c..48e7d28aa 100644
--- a/locale/ru/LC_MESSAGES/statusnet.po
+++ b/locale/ru/LC_MESSAGES/statusnet.po
@@ -1,6 +1,7 @@
# Translation of StatusNet to Russian
#
# Author@translatewiki.net: Brion
+# Author@translatewiki.net: Kirill
# Author@translatewiki.net: Lockal
# Author@translatewiki.net: Rubin
# Author@translatewiki.net: Александр Сигачёв
@@ -11,12 +12,12 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-01-30 23:41+0000\n"
-"PO-Revision-Date: 2010-01-30 23:42:40+0000\n"
+"POT-Creation-Date: 2010-02-04 10:31+0000\n"
+"PO-Revision-Date: 2010-02-04 10:33:30+0000\n"
"Language-Team: Russian\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.16alpha (r61734); Translate extension (2010-01-16)\n"
+"X-Generator: MediaWiki 1.16alpha (r61969); Translate extension (2010-01-16)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: ru\n"
"X-Message-Group: out-statusnet\n"
@@ -97,7 +98,7 @@ msgstr "Нет такой страницы"
#: actions/favoritesrss.php:74 actions/foaf.php:40 actions/foaf.php:58
#: actions/microsummary.php:62 actions/newmessage.php:116 actions/otp.php:76
#: actions/remotesubscribe.php:145 actions/remotesubscribe.php:154
-#: actions/replies.php:73 actions/repliesrss.php:38
+#: actions/replies.php:73 actions/repliesrss.php:38 actions/rsd.php:116
#: actions/showfavorites.php:105 actions/userbyid.php:74
#: actions/usergroups.php:91 actions/userrss.php:38 actions/xrds.php:71
#: lib/command.php:163 lib/command.php:302 lib/command.php:355
@@ -159,7 +160,7 @@ msgstr ""
"что-нибудь для привлечения его или её внимания](%%%%action.newnotice%%%%?"
"status_textarea=%3$s)."
-#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:202
+#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:211
#, php-format
msgid ""
"Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
@@ -392,8 +393,8 @@ msgstr "Такое имя уже используется. Попробуйте
msgid "Not a valid nickname."
msgstr "Неверное имя."
-#: actions/apigroupcreate.php:196 actions/editapplication.php:212
-#: actions/editgroup.php:195 actions/newapplication.php:200
+#: actions/apigroupcreate.php:196 actions/editapplication.php:215
+#: actions/editgroup.php:195 actions/newapplication.php:203
#: actions/newgroup.php:139 actions/profilesettings.php:222
#: actions/register.php:217
msgid "Homepage is not a valid URL."
@@ -405,8 +406,8 @@ msgstr "URL Главной страницы неверен."
msgid "Full name is too long (max 255 chars)."
msgstr "Полное имя слишком длинное (не больше 255 знаков)."
-#: actions/apigroupcreate.php:213 actions/editapplication.php:187
-#: actions/newapplication.php:169
+#: actions/apigroupcreate.php:213 actions/editapplication.php:190
+#: actions/newapplication.php:172
#, php-format
msgid "Description is too long (max %d chars)."
msgstr "Слишком длинное описание (максимум %d символов)"
@@ -483,18 +484,22 @@ msgstr "Группы %s"
msgid "groups on %s"
msgstr "группы на %s"
-#: actions/apioauthauthorize.php:108 actions/apioauthauthorize.php:114
-msgid "Bad request."
-msgstr "Неверный запрос."
+#: actions/apioauthauthorize.php:101
+msgid "No oauth_token parameter provided."
+msgstr "Не задан параметр oauth_token."
-#: actions/apioauthauthorize.php:134 actions/avatarsettings.php:268
+#: actions/apioauthauthorize.php:106
+msgid "Invalid token."
+msgstr "Неправильный токен"
+
+#: actions/apioauthauthorize.php:123 actions/avatarsettings.php:268
#: actions/deletenotice.php:157 actions/disfavor.php:74
-#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:50
+#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:54
#: actions/groupblock.php:66 actions/grouplogo.php:309
#: actions/groupunblock.php:66 actions/imsettings.php:206
#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
-#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:139
+#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:135
#: actions/othersettings.php:145 actions/passwordsettings.php:138
#: actions/profilesettings.php:194 actions/recoverpassword.php:337
#: actions/register.php:165 actions/remotesubscribe.php:77
@@ -505,19 +510,19 @@ msgstr "Неверный запрос."
msgid "There was a problem with your session token. Try again, please."
msgstr "Проблема с Вашей сессией. Попробуйте ещё раз, пожалуйста."
-#: actions/apioauthauthorize.php:146
+#: actions/apioauthauthorize.php:135
msgid "Invalid nickname / password!"
msgstr "Неверное имя или пароль."
-#: actions/apioauthauthorize.php:170
+#: actions/apioauthauthorize.php:159
msgid "Database error deleting OAuth application user."
msgstr "Ошибка базы данных при удалении пользователя приложения OAuth."
-#: actions/apioauthauthorize.php:196
+#: actions/apioauthauthorize.php:185
msgid "Database error inserting OAuth application user."
msgstr "Ошибка базы данных при добавлении пользователя приложения OAuth."
-#: actions/apioauthauthorize.php:231
+#: actions/apioauthauthorize.php:214
#, php-format
msgid ""
"The request token %s has been authorized. Please exchange it for an access "
@@ -525,53 +530,65 @@ msgid ""
msgstr ""
"Ключ запроса %s авторизован. Пожалуйста, обменяйте его на ключ доступа."
-#: actions/apioauthauthorize.php:241
+#: actions/apioauthauthorize.php:227
#, php-format
-msgid "The request token %s has been denied."
-msgstr "Ключ запроса %s отклонён."
+msgid "The request token %s has been denied and revoked."
+msgstr "Запрос токена %s был запрещен и аннулирован."
-#: actions/apioauthauthorize.php:246 actions/avatarsettings.php:281
+#: actions/apioauthauthorize.php:232 actions/avatarsettings.php:281
#: actions/designadminpanel.php:103 actions/editapplication.php:139
#: actions/emailsettings.php:256 actions/grouplogo.php:319
#: actions/imsettings.php:220 actions/newapplication.php:121
-#: actions/oauthconnectionssettings.php:151 actions/recoverpassword.php:44
+#: actions/oauthconnectionssettings.php:147 actions/recoverpassword.php:44
#: actions/smssettings.php:248 lib/designsettings.php:304
msgid "Unexpected form submission."
msgstr "Нетиповое подтверждение формы."
-#: actions/apioauthauthorize.php:273
+#: actions/apioauthauthorize.php:259
msgid "An application would like to connect to your account"
msgstr "Приложение хочет соединиться с вашей учётной записью"
-#: actions/apioauthauthorize.php:290
+#: actions/apioauthauthorize.php:276
msgid "Allow or deny access"
msgstr "Разрешить или запретить доступ"
-#: actions/apioauthauthorize.php:320 lib/action.php:441
+#: actions/apioauthauthorize.php:292
+#, php-format
+msgid ""
+"The application <strong>%1$s</strong> by <strong>%2$s</strong> would like "
+"the ability to <strong>%3$s</strong> your %4$s account data. You should only "
+"give access to your %4$s account to third parties you trust."
+msgstr ""
+"Приложение <strong>%1$s</strong> от <strong>%2$s</strong> просит разрешение "
+"на<strong>%3$s</strong> данных вашей учётной записи%4$s . Вы должны "
+"предоставлять разрешение на доступ к вашей учётной записи %4$s только тем "
+"сторонним приложениям, которым вы доверяете."
+
+#: actions/apioauthauthorize.php:310 lib/action.php:441
msgid "Account"
msgstr "Настройки"
-#: actions/apioauthauthorize.php:323 actions/login.php:230
+#: actions/apioauthauthorize.php:313 actions/login.php:230
#: actions/profilesettings.php:106 actions/register.php:424
#: actions/showgroup.php:236 actions/tagother.php:94 lib/groupeditform.php:152
#: lib/userprofile.php:131
msgid "Nickname"
msgstr "Имя"
-#: actions/apioauthauthorize.php:326 actions/login.php:233
+#: actions/apioauthauthorize.php:316 actions/login.php:233
#: actions/register.php:429 lib/accountsettingsaction.php:116
msgid "Password"
msgstr "Пароль"
-#: actions/apioauthauthorize.php:338
+#: actions/apioauthauthorize.php:328
msgid "Deny"
msgstr "Запретить"
-#: actions/apioauthauthorize.php:344
+#: actions/apioauthauthorize.php:334
msgid "Allow"
msgstr "Разрешить"
-#: actions/apioauthauthorize.php:361
+#: actions/apioauthauthorize.php:351
msgid "Allow or deny access to your account information."
msgstr "Разрешить или запретить доступ к информации вашей учётной записи."
@@ -741,8 +758,8 @@ msgstr "Оригинал"
msgid "Preview"
msgstr "Просмотр"
-#: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:608
+#: actions/avatarsettings.php:149 actions/showapplication.php:252
+#: lib/deleteuserform.php:66 lib/noticelist.php:624
msgid "Delete"
msgstr "Удалить"
@@ -792,8 +809,9 @@ msgstr ""
"будет отписан от вас без возможности подписаться в будущем, а вам не будут "
"приходить уведомления об @-ответах от него."
-#: actions/block.php:143 actions/deletenotice.php:145
-#: actions/deleteuser.php:147 actions/groupblock.php:178
+#: actions/block.php:143 actions/deleteapplication.php:153
+#: actions/deletenotice.php:145 actions/deleteuser.php:147
+#: actions/groupblock.php:178
msgid "No"
msgstr "Нет"
@@ -801,9 +819,9 @@ msgstr "Нет"
msgid "Do not block this user"
msgstr "Не блокировать этого пользователя"
-#: actions/block.php:144 actions/deletenotice.php:146
-#: actions/deleteuser.php:148 actions/groupblock.php:179
-#: lib/repeatform.php:132
+#: actions/block.php:144 actions/deleteapplication.php:158
+#: actions/deletenotice.php:146 actions/deleteuser.php:148
+#: actions/groupblock.php:179 lib/repeatform.php:132
msgid "Yes"
msgstr "Да"
@@ -907,6 +925,47 @@ msgstr "Дискуссия"
msgid "Notices"
msgstr "Записи"
+#: actions/deleteapplication.php:63
+msgid "You must be logged in to delete an application."
+msgstr "Вы должны войти в систему, чтобы удалить приложение."
+
+#: actions/deleteapplication.php:71
+msgid "Application not found."
+msgstr "Приложение не найдено."
+
+#: actions/deleteapplication.php:78 actions/editapplication.php:77
+#: actions/showapplication.php:94
+msgid "You are not the owner of this application."
+msgstr "Вы не являетесь владельцем этого приложения."
+
+#: actions/deleteapplication.php:102 actions/editapplication.php:127
+#: actions/newapplication.php:110 actions/showapplication.php:118
+#: lib/action.php:1195
+msgid "There was a problem with your session token."
+msgstr "Проблема с Вашей сессией. Попробуйте ещё раз, пожалуйста."
+
+#: actions/deleteapplication.php:123 actions/deleteapplication.php:147
+msgid "Delete application"
+msgstr "Удалить приложение"
+
+#: actions/deleteapplication.php:149
+msgid ""
+"Are you sure you want to delete this application? This will clear all data "
+"about the application from the database, including all existing user "
+"connections."
+msgstr ""
+"Вы уверены, что хотите удалить это приложение? Это очистит все данные о "
+"применении из базы данных, включая все существующие подключения "
+"пользователей."
+
+#: actions/deleteapplication.php:156
+msgid "Do not delete this application"
+msgstr "Не удаляйте это приложение"
+
+#: actions/deleteapplication.php:160
+msgid "Delete this application"
+msgstr "Удалить это приложение"
+
#: actions/deletenotice.php:67 actions/disfavor.php:61 actions/favor.php:62
#: actions/groupblock.php:61 actions/groupunblock.php:61 actions/logout.php:69
#: actions/makeadmin.php:61 actions/newmessage.php:87 actions/newnotice.php:89
@@ -941,7 +1000,7 @@ msgstr "Вы уверены, что хотите удалить эту запи
msgid "Do not delete this notice"
msgstr "Не удалять эту запись"
-#: actions/deletenotice.php:146 lib/noticelist.php:608
+#: actions/deletenotice.php:146 lib/noticelist.php:624
msgid "Delete this notice"
msgstr "Удалить эту запись"
@@ -1085,7 +1144,7 @@ msgstr "Эта запись не входит в число ваших люби
msgid "Add to favorites"
msgstr "Добавить в любимые"
-#: actions/doc.php:155
+#: actions/doc.php:158
#, php-format
msgid "No such document \"%s\""
msgstr "Нет такого документа «%s»"
@@ -1098,20 +1157,11 @@ msgstr "Изменить приложение"
msgid "You must be logged in to edit an application."
msgstr "Вы должны авторизоваться, чтобы изменить приложение."
-#: actions/editapplication.php:77 actions/showapplication.php:94
-msgid "You are not the owner of this application."
-msgstr "Вы не являетесь владельцем этого приложения."
-
-#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:163
+#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:166
#: actions/showapplication.php:87
msgid "No such application."
msgstr "Нет такого приложения."
-#: actions/editapplication.php:127 actions/newapplication.php:110
-#: actions/showapplication.php:118 lib/action.php:1195
-msgid "There was a problem with your session token."
-msgstr "Проблема с Вашей сессией. Попробуйте ещё раз, пожалуйста."
-
#: actions/editapplication.php:161
msgid "Use this form to edit your application."
msgstr "Воспользуйтесь этой формой, чтобы изменить приложение."
@@ -1120,43 +1170,47 @@ msgstr "Воспользуйтесь этой формой, чтобы изме
msgid "Name is required."
msgstr "Имя обязательно."
-#: actions/editapplication.php:180 actions/newapplication.php:162
+#: actions/editapplication.php:180 actions/newapplication.php:165
msgid "Name is too long (max 255 chars)."
msgstr "Имя слишком длинное (не больше 255 знаков)."
-#: actions/editapplication.php:183 actions/newapplication.php:165
+#: actions/editapplication.php:183 actions/newapplication.php:162
+msgid "Name already in use. Try another one."
+msgstr "Такое имя уже используется. Попробуйте какое-нибудь другое."
+
+#: actions/editapplication.php:186 actions/newapplication.php:168
msgid "Description is required."
msgstr "Описание обязательно."
-#: actions/editapplication.php:191
+#: actions/editapplication.php:194
msgid "Source URL is too long."
msgstr "URL источника слишком длинный."
-#: actions/editapplication.php:197 actions/newapplication.php:182
+#: actions/editapplication.php:200 actions/newapplication.php:185
msgid "Source URL is not valid."
msgstr "URL источника недействителен."
-#: actions/editapplication.php:200 actions/newapplication.php:185
+#: actions/editapplication.php:203 actions/newapplication.php:188
msgid "Organization is required."
msgstr "Организация обязательна."
-#: actions/editapplication.php:203 actions/newapplication.php:188
+#: actions/editapplication.php:206 actions/newapplication.php:191
msgid "Organization is too long (max 255 chars)."
msgstr "Слишком длинное название организации (максимум 255 знаков)."
-#: actions/editapplication.php:206 actions/newapplication.php:191
+#: actions/editapplication.php:209 actions/newapplication.php:194
msgid "Organization homepage is required."
msgstr "Домашняя страница организации обязательна."
-#: actions/editapplication.php:215 actions/newapplication.php:203
+#: actions/editapplication.php:218 actions/newapplication.php:206
msgid "Callback is too long."
msgstr "Обратный вызов слишком длинный."
-#: actions/editapplication.php:222 actions/newapplication.php:212
+#: actions/editapplication.php:225 actions/newapplication.php:215
msgid "Callback URL is not valid."
msgstr "URL-адрес обратного вызова недействителен."
-#: actions/editapplication.php:255
+#: actions/editapplication.php:258
msgid "Could not update application."
msgstr "Не удаётся обновить приложение."
@@ -2099,11 +2153,11 @@ msgstr "Вы должны авторизоваться, чтобы зареги
msgid "Use this form to register a new application."
msgstr "Используйте эту форму для создания нового приложения."
-#: actions/newapplication.php:173
+#: actions/newapplication.php:176
msgid "Source URL is required."
msgstr "URL источника обязателен."
-#: actions/newapplication.php:255 actions/newapplication.php:264
+#: actions/newapplication.php:258 actions/newapplication.php:267
msgid "Could not create application."
msgstr "Не удаётся создать приложение."
@@ -2236,28 +2290,28 @@ msgstr "Приложения, которые вы зарегистрировал
msgid "You have not registered any applications yet."
msgstr "Вы пока не зарегистрировали ни одного приложения."
-#: actions/oauthconnectionssettings.php:71
+#: actions/oauthconnectionssettings.php:72
msgid "Connected applications"
msgstr "Подключённые приложения"
-#: actions/oauthconnectionssettings.php:87
+#: actions/oauthconnectionssettings.php:83
msgid "You have allowed the following applications to access you account."
msgstr "Вы разрешили доступ к учётной записи следующим приложениям."
-#: actions/oauthconnectionssettings.php:170
+#: actions/oauthconnectionssettings.php:175
msgid "You are not a user of that application."
msgstr "Вы не являетесь пользователем этого приложения."
-#: actions/oauthconnectionssettings.php:180
+#: actions/oauthconnectionssettings.php:186
msgid "Unable to revoke access for app: "
msgstr "Не удаётся отозвать права для приложения: "
-#: actions/oauthconnectionssettings.php:192
+#: actions/oauthconnectionssettings.php:198
#, php-format
msgid "You have not authorized any applications to use your account."
msgstr "Вы не разрешили приложениям использовать вашу учётную запись."
-#: actions/oauthconnectionssettings.php:205
+#: actions/oauthconnectionssettings.php:211
msgid "Developers can edit the registration settings for their applications "
msgstr "Разработчики могут изменять настройки регистрации своих приложений "
@@ -2757,30 +2811,30 @@ msgstr "Общая лента, страница %d"
msgid "Public timeline"
msgstr "Общая лента"
-#: actions/public.php:151
+#: actions/public.php:159
msgid "Public Stream Feed (RSS 1.0)"
msgstr "Лента публичного потока (RSS 1.0)"
-#: actions/public.php:155
+#: actions/public.php:163
msgid "Public Stream Feed (RSS 2.0)"
msgstr "Лента публичного потока (RSS 2.0)"
-#: actions/public.php:159
+#: actions/public.php:167
msgid "Public Stream Feed (Atom)"
msgstr "Лента публичного потока (Atom)"
-#: actions/public.php:179
+#: actions/public.php:187
#, php-format
msgid ""
"This is the public timeline for %%site.name%% but no one has posted anything "
"yet."
msgstr "Это общая лента %%site.name%%, однако пока никто ничего не отправил."
-#: actions/public.php:182
+#: actions/public.php:190
msgid "Be the first to post!"
msgstr "Создайте первую запись!"
-#: actions/public.php:186
+#: actions/public.php:194
#, php-format
msgid ""
"Why not [register an account](%%action.register%%) and be the first to post!"
@@ -2788,7 +2842,7 @@ msgstr ""
"Почему бы не [зарегистрироваться](%%action.register%%), чтобы стать первым "
"отправителем?"
-#: actions/public.php:233
+#: actions/public.php:241
#, php-format
msgid ""
"This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2802,7 +2856,7 @@ msgstr ""
"register%%), чтобы держать в курсе своих событий поклонников, друзей, "
"родственников и коллег! ([Читать далее](%%doc.help%%))"
-#: actions/public.php:238
+#: actions/public.php:246
#, php-format
msgid ""
"This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -3168,7 +3222,7 @@ msgstr "Вы не можете повторить собственную зап
msgid "You already repeated that notice."
msgstr "Вы уже повторили эту запись."
-#: actions/repeat.php:114 lib/noticelist.php:626
+#: actions/repeat.php:114 lib/noticelist.php:642
msgid "Repeated"
msgstr "Повторено"
@@ -3234,6 +3288,10 @@ msgstr ""
msgid "Replies to %1$s on %2$s!"
msgstr "Ответы на записи %1$s на %2$s!"
+#: actions/rsd.php:146 actions/version.php:157
+msgid "StatusNet"
+msgstr "StatusNet"
+
#: actions/sandbox.php:65 actions/unsandbox.php:65
msgid "You cannot sandbox users on this site."
msgstr ""
@@ -3249,9 +3307,8 @@ msgid "Sessions"
msgstr "Сессии"
#: actions/sessionsadminpanel.php:65
-#, fuzzy
msgid "Session settings for this StatusNet site."
-msgstr "Настройки оформления для этого сайта StatusNet."
+msgstr "Настройки сессии для этого сайта StatusNet."
#: actions/sessionsadminpanel.php:175
msgid "Handle sessions"
@@ -3278,71 +3335,71 @@ msgstr "Сохранить настройки сайта"
msgid "You must be logged in to view an application."
msgstr "Вы должны авторизоваться, чтобы просматривать приложения."
-#: actions/showapplication.php:158
+#: actions/showapplication.php:157
msgid "Application profile"
msgstr "Профиль приложения"
-#: actions/showapplication.php:160 lib/applicationeditform.php:180
+#: actions/showapplication.php:159 lib/applicationeditform.php:180
msgid "Icon"
msgstr "Иконка"
-#: actions/showapplication.php:170 actions/version.php:195
+#: actions/showapplication.php:169 actions/version.php:195
#: lib/applicationeditform.php:195
msgid "Name"
msgstr "Имя"
-#: actions/showapplication.php:179 lib/applicationeditform.php:222
+#: actions/showapplication.php:178 lib/applicationeditform.php:222
msgid "Organization"
msgstr "Организация"
-#: actions/showapplication.php:188 actions/version.php:198
+#: actions/showapplication.php:187 actions/version.php:198
#: lib/applicationeditform.php:209 lib/groupeditform.php:172
msgid "Description"
msgstr "Описание"
-#: actions/showapplication.php:193 actions/showgroup.php:429
+#: actions/showapplication.php:192 actions/showgroup.php:429
#: lib/profileaction.php:174
msgid "Statistics"
msgstr "Статистика"
-#: actions/showapplication.php:204
+#: actions/showapplication.php:203
#, php-format
-msgid "created by %1$s - %2$s access by default - %3$d users"
-msgstr "создано %1$s — %2$s доступ по умолчанию — %3$d польз."
+msgid "Created by %1$s - %2$s access by default - %3$d users"
+msgstr "Создано %1$s — доступ по умолчанию: %2$s — %3$d польз."
-#: actions/showapplication.php:214
+#: actions/showapplication.php:213
msgid "Application actions"
msgstr "Действия приложения"
-#: actions/showapplication.php:233
+#: actions/showapplication.php:236
msgid "Reset key & secret"
msgstr "Сбросить ключ и секретную фразу"
-#: actions/showapplication.php:241
+#: actions/showapplication.php:261
msgid "Application info"
msgstr "Информация о приложении"
-#: actions/showapplication.php:243
+#: actions/showapplication.php:263
msgid "Consumer key"
msgstr "Потребительский ключ"
-#: actions/showapplication.php:248
+#: actions/showapplication.php:268
msgid "Consumer secret"
msgstr "Секретная фраза потребителя"
-#: actions/showapplication.php:253
+#: actions/showapplication.php:273
msgid "Request token URL"
msgstr "URL ключа запроса"
-#: actions/showapplication.php:258
+#: actions/showapplication.php:278
msgid "Access token URL"
msgstr "URL ключа доступа"
-#: actions/showapplication.php:263
+#: actions/showapplication.php:283
msgid "Authorize URL"
msgstr "URL авторизации"
-#: actions/showapplication.php:268
+#: actions/showapplication.php:288
msgid ""
"Note: We support HMAC-SHA1 signatures. We do not support the plaintext "
"signature method."
@@ -3350,6 +3407,11 @@ msgstr ""
"Примечание: Мы поддерживаем подписи HMAC-SHA1. Мы не поддерживаем метод "
"подписи открытым текстом."
+#: actions/showapplication.php:309
+#, fuzzy
+msgid "Are you sure you want to reset your consumer key and secret?"
+msgstr "Вы уверены, что хотите удалить эту запись?"
+
#: actions/showfavorites.php:79
#, php-format
msgid "%1$s's favorite notices, page %2$d"
@@ -3566,12 +3628,12 @@ msgstr "Лента записей для %s (Atom)"
msgid "FOAF for %s"
msgstr "FOAF для %s"
-#: actions/showstream.php:191
+#: actions/showstream.php:200
#, php-format
msgid "This is the timeline for %1$s but %2$s hasn't posted anything yet."
msgstr "Это лента %1$s, однако %2$s пока ничего не отправил."
-#: actions/showstream.php:196
+#: actions/showstream.php:205
msgid ""
"Seen anything interesting recently? You haven't posted any notices yet, now "
"would be a good time to start :)"
@@ -3579,7 +3641,7 @@ msgstr ""
"Видели недавно что-нибудь интересное? Вы ещё не отправили ни одной записи, "
"сейчас хорошее время для начала :)"
-#: actions/showstream.php:198
+#: actions/showstream.php:207
#, php-format
msgid ""
"You can try to nudge %1$s or [post something to his or her attention](%%%%"
@@ -3589,7 +3651,7 @@ msgstr ""
"привлечения его или её внимания](%%%%action.newnotice%%%%?status_textarea=%2"
"$s)."
-#: actions/showstream.php:234
+#: actions/showstream.php:243
#, php-format
msgid ""
"**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3604,7 +3666,7 @@ msgstr ""
"сообщения участника **%s** и иметь доступ ко множеству других возможностей! "
"([Читать далее](%%%%doc.help%%%%))"
-#: actions/showstream.php:239
+#: actions/showstream.php:248
#, php-format
msgid ""
"**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3616,7 +3678,7 @@ msgstr ""
"использованием свободного программного обеспечения [StatusNet](http://status."
"net/)."
-#: actions/showstream.php:296
+#: actions/showstream.php:305
#, php-format
msgid "Repeat of %s"
msgstr "Повтор за %s"
@@ -4297,10 +4359,6 @@ msgstr ""
"Этот сайт создан на основе %1$s версии %2$s, Copyright 2008-2010 StatusNet, "
"Inc. и участники."
-#: actions/version.php:157
-msgid "StatusNet"
-msgstr "StatusNet"
-
#: actions/version.php:161
msgid "Contributors"
msgstr "Разработчики"
@@ -4434,21 +4492,21 @@ msgstr "Вам запрещено поститься на этом сайте (
msgid "Problem saving notice."
msgstr "Проблемы с сохранением записи."
-#: classes/Notice.php:790
+#: classes/Notice.php:788
msgid "Problem saving group inbox."
msgstr "Проблемы с сохранением входящих сообщений группы."
-#: classes/Notice.php:850
+#: classes/Notice.php:848
#, php-format
msgid "DB error inserting reply: %s"
msgstr "Ошибка баз данных при вставке ответа для %s"
-#: classes/Notice.php:1233
+#: classes/Notice.php:1231
#, php-format
msgid "RT @%1$s %2$s"
msgstr "RT @%1$s %2$s"
-#: classes/User.php:382
+#: classes/User.php:385
#, php-format
msgid "Welcome to %1$s, @%2$s!"
msgstr "Добро пожаловать на %1$s, @%2$s!"
@@ -4636,8 +4694,8 @@ msgid ""
"s, available under the [GNU Affero General Public License](http://www.fsf."
"org/licensing/licenses/agpl-3.0.html)."
msgstr ""
-"Этот сервис работает при помощи [StatusNet](http://status.net/) - "
-"программного обеспечения для микроблогинга, версии %s, доступного под "
+"Этот сервис работает при помощи [StatusNet](http://status.net/) — "
+"программного обеспечения для микроблоггинга, версии %s, доступного под "
"лицензией [GNU Affero General Public License](http://www.fsf.org/licensing/"
"licenses/agpl-3.0.html)."
@@ -4723,17 +4781,16 @@ msgid "Paths configuration"
msgstr "Конфигурация путей"
#: lib/adminpanelaction.php:337
-#, fuzzy
msgid "Sessions configuration"
-msgstr "Конфигурация оформления"
+msgstr "Конфигурация сессий"
-#: lib/apiauth.php:99
+#: lib/apiauth.php:95
msgid "API resource requires read-write access, but you only have read access."
msgstr ""
"API ресурса требует доступ для чтения и записи, но у вас есть только доступ "
"для чтения."
-#: lib/apiauth.php:279
+#: lib/apiauth.php:273
#, php-format
msgid "Failed API auth attempt, nickname = %1$s, proxy = %2$s, ip = %3$s"
msgstr ""
@@ -5135,19 +5192,19 @@ msgstr ""
"tracks — пока не реализовано.\n"
"tracking — пока не реализовано.\n"
-#: lib/common.php:131
+#: lib/common.php:135
msgid "No configuration file found. "
msgstr "Конфигурационный файл не найден. "
-#: lib/common.php:132
+#: lib/common.php:136
msgid "I looked for configuration files in the following places: "
msgstr "Конфигурационные файлы искались в следующих местах: "
-#: lib/common.php:134
+#: lib/common.php:138
msgid "You may wish to run the installer to fix this."
msgstr "Возможно, вы решите запустить установщик для исправления этого."
-#: lib/common.php:135
+#: lib/common.php:139
msgid "Go to the installer."
msgstr "Перейти к установщику"
@@ -5793,23 +5850,23 @@ msgstr "з. д."
msgid "at"
msgstr "на"
-#: lib/noticelist.php:531
+#: lib/noticelist.php:547
msgid "in context"
msgstr "в контексте"
-#: lib/noticelist.php:556
+#: lib/noticelist.php:572
msgid "Repeated by"
msgstr "Повторено"
-#: lib/noticelist.php:582
+#: lib/noticelist.php:598
msgid "Reply to this notice"
msgstr "Ответить на эту запись"
-#: lib/noticelist.php:583
+#: lib/noticelist.php:599
msgid "Reply"
msgstr "Ответить"
-#: lib/noticelist.php:625
+#: lib/noticelist.php:641
msgid "Notice repeated"
msgstr "Запись повторена"
@@ -5950,6 +6007,10 @@ msgstr "Повторить эту запись?"
msgid "Repeat this notice"
msgstr "Повторить эту запись"
+#: lib/router.php:665
+msgid "No single user defined for single-user mode."
+msgstr "Ни задан пользователь для однопользовательского режима."
+
#: lib/sandboxform.php:67
msgid "Sandbox"
msgstr "Песочница"
@@ -6115,47 +6176,47 @@ msgstr "Сообщение"
msgid "Moderate"
msgstr "Модерировать"
-#: lib/util.php:868
+#: lib/util.php:867
msgid "a few seconds ago"
msgstr "пару секунд назад"
-#: lib/util.php:870
+#: lib/util.php:869
msgid "about a minute ago"
msgstr "около минуты назад"
-#: lib/util.php:872
+#: lib/util.php:871
#, php-format
msgid "about %d minutes ago"
msgstr "около %d минут(ы) назад"
-#: lib/util.php:874
+#: lib/util.php:873
msgid "about an hour ago"
msgstr "около часа назад"
-#: lib/util.php:876
+#: lib/util.php:875
#, php-format
msgid "about %d hours ago"
msgstr "около %d часа(ов) назад"
-#: lib/util.php:878
+#: lib/util.php:877
msgid "about a day ago"
msgstr "около дня назад"
-#: lib/util.php:880
+#: lib/util.php:879
#, php-format
msgid "about %d days ago"
msgstr "около %d дня(ей) назад"
-#: lib/util.php:882
+#: lib/util.php:881
msgid "about a month ago"
msgstr "около месяца назад"
-#: lib/util.php:884
+#: lib/util.php:883
#, php-format
msgid "about %d months ago"
msgstr "около %d месяца(ев) назад"
-#: lib/util.php:886
+#: lib/util.php:885
msgid "about a year ago"
msgstr "около года назад"
diff --git a/locale/statusnet.po b/locale/statusnet.po
index 6f6f1e58b..6275acc2c 100644
--- a/locale/statusnet.po
+++ b/locale/statusnet.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-01-30 23:41+0000\n"
+"POT-Creation-Date: 2010-02-04 10:31+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"
@@ -90,7 +90,7 @@ msgstr ""
#: actions/favoritesrss.php:74 actions/foaf.php:40 actions/foaf.php:58
#: actions/microsummary.php:62 actions/newmessage.php:116 actions/otp.php:76
#: actions/remotesubscribe.php:145 actions/remotesubscribe.php:154
-#: actions/replies.php:73 actions/repliesrss.php:38
+#: actions/replies.php:73 actions/repliesrss.php:38 actions/rsd.php:116
#: actions/showfavorites.php:105 actions/userbyid.php:74
#: actions/usergroups.php:91 actions/userrss.php:38 actions/xrds.php:71
#: lib/command.php:163 lib/command.php:302 lib/command.php:355
@@ -147,7 +147,7 @@ msgid ""
"his or her attention](%%%%action.newnotice%%%%?status_textarea=%3$s)."
msgstr ""
-#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:202
+#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:211
#, php-format
msgid ""
"Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
@@ -369,8 +369,8 @@ msgstr ""
msgid "Not a valid nickname."
msgstr ""
-#: actions/apigroupcreate.php:196 actions/editapplication.php:212
-#: actions/editgroup.php:195 actions/newapplication.php:200
+#: actions/apigroupcreate.php:196 actions/editapplication.php:215
+#: actions/editgroup.php:195 actions/newapplication.php:203
#: actions/newgroup.php:139 actions/profilesettings.php:222
#: actions/register.php:217
msgid "Homepage is not a valid URL."
@@ -382,8 +382,8 @@ msgstr ""
msgid "Full name is too long (max 255 chars)."
msgstr ""
-#: actions/apigroupcreate.php:213 actions/editapplication.php:187
-#: actions/newapplication.php:169
+#: actions/apigroupcreate.php:213 actions/editapplication.php:190
+#: actions/newapplication.php:172
#, php-format
msgid "Description is too long (max %d chars)."
msgstr ""
@@ -460,18 +460,22 @@ msgstr ""
msgid "groups on %s"
msgstr ""
-#: actions/apioauthauthorize.php:108 actions/apioauthauthorize.php:114
-msgid "Bad request."
+#: actions/apioauthauthorize.php:101
+msgid "No oauth_token parameter provided."
msgstr ""
-#: actions/apioauthauthorize.php:134 actions/avatarsettings.php:268
+#: actions/apioauthauthorize.php:106
+msgid "Invalid token."
+msgstr ""
+
+#: actions/apioauthauthorize.php:123 actions/avatarsettings.php:268
#: actions/deletenotice.php:157 actions/disfavor.php:74
-#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:50
+#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:54
#: actions/groupblock.php:66 actions/grouplogo.php:309
#: actions/groupunblock.php:66 actions/imsettings.php:206
#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
-#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:139
+#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:135
#: actions/othersettings.php:145 actions/passwordsettings.php:138
#: actions/profilesettings.php:194 actions/recoverpassword.php:337
#: actions/register.php:165 actions/remotesubscribe.php:77
@@ -482,72 +486,80 @@ msgstr ""
msgid "There was a problem with your session token. Try again, please."
msgstr ""
-#: actions/apioauthauthorize.php:146
+#: actions/apioauthauthorize.php:135
msgid "Invalid nickname / password!"
msgstr ""
-#: actions/apioauthauthorize.php:170
+#: actions/apioauthauthorize.php:159
msgid "Database error deleting OAuth application user."
msgstr ""
-#: actions/apioauthauthorize.php:196
+#: actions/apioauthauthorize.php:185
msgid "Database error inserting OAuth application user."
msgstr ""
-#: actions/apioauthauthorize.php:231
+#: actions/apioauthauthorize.php:214
#, php-format
msgid ""
"The request token %s has been authorized. Please exchange it for an access "
"token."
msgstr ""
-#: actions/apioauthauthorize.php:241
+#: actions/apioauthauthorize.php:227
#, php-format
-msgid "The request token %s has been denied."
+msgid "The request token %s has been denied and revoked."
msgstr ""
-#: actions/apioauthauthorize.php:246 actions/avatarsettings.php:281
+#: actions/apioauthauthorize.php:232 actions/avatarsettings.php:281
#: actions/designadminpanel.php:103 actions/editapplication.php:139
#: actions/emailsettings.php:256 actions/grouplogo.php:319
#: actions/imsettings.php:220 actions/newapplication.php:121
-#: actions/oauthconnectionssettings.php:151 actions/recoverpassword.php:44
+#: actions/oauthconnectionssettings.php:147 actions/recoverpassword.php:44
#: actions/smssettings.php:248 lib/designsettings.php:304
msgid "Unexpected form submission."
msgstr ""
-#: actions/apioauthauthorize.php:273
+#: actions/apioauthauthorize.php:259
msgid "An application would like to connect to your account"
msgstr ""
-#: actions/apioauthauthorize.php:290
+#: actions/apioauthauthorize.php:276
msgid "Allow or deny access"
msgstr ""
-#: actions/apioauthauthorize.php:320 lib/action.php:441
+#: actions/apioauthauthorize.php:292
+#, php-format
+msgid ""
+"The application <strong>%1$s</strong> by <strong>%2$s</strong> would like "
+"the ability to <strong>%3$s</strong> your %4$s account data. You should only "
+"give access to your %4$s account to third parties you trust."
+msgstr ""
+
+#: actions/apioauthauthorize.php:310 lib/action.php:441
msgid "Account"
msgstr ""
-#: actions/apioauthauthorize.php:323 actions/login.php:230
+#: actions/apioauthauthorize.php:313 actions/login.php:230
#: actions/profilesettings.php:106 actions/register.php:424
#: actions/showgroup.php:236 actions/tagother.php:94 lib/groupeditform.php:152
#: lib/userprofile.php:131
msgid "Nickname"
msgstr ""
-#: actions/apioauthauthorize.php:326 actions/login.php:233
+#: actions/apioauthauthorize.php:316 actions/login.php:233
#: actions/register.php:429 lib/accountsettingsaction.php:116
msgid "Password"
msgstr ""
-#: actions/apioauthauthorize.php:338
+#: actions/apioauthauthorize.php:328
msgid "Deny"
msgstr ""
-#: actions/apioauthauthorize.php:344
+#: actions/apioauthauthorize.php:334
msgid "Allow"
msgstr ""
-#: actions/apioauthauthorize.php:361
+#: actions/apioauthauthorize.php:351
msgid "Allow or deny access to your account information."
msgstr ""
@@ -716,8 +728,8 @@ msgstr ""
msgid "Preview"
msgstr ""
-#: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:608
+#: actions/avatarsettings.php:149 actions/showapplication.php:252
+#: lib/deleteuserform.php:66 lib/noticelist.php:624
msgid "Delete"
msgstr ""
@@ -764,8 +776,9 @@ msgid ""
"will not be notified of any @-replies from them."
msgstr ""
-#: actions/block.php:143 actions/deletenotice.php:145
-#: actions/deleteuser.php:147 actions/groupblock.php:178
+#: actions/block.php:143 actions/deleteapplication.php:153
+#: actions/deletenotice.php:145 actions/deleteuser.php:147
+#: actions/groupblock.php:178
msgid "No"
msgstr ""
@@ -773,9 +786,9 @@ msgstr ""
msgid "Do not block this user"
msgstr ""
-#: actions/block.php:144 actions/deletenotice.php:146
-#: actions/deleteuser.php:148 actions/groupblock.php:179
-#: lib/repeatform.php:132
+#: actions/block.php:144 actions/deleteapplication.php:158
+#: actions/deletenotice.php:146 actions/deleteuser.php:148
+#: actions/groupblock.php:179 lib/repeatform.php:132
msgid "Yes"
msgstr ""
@@ -879,6 +892,44 @@ msgstr ""
msgid "Notices"
msgstr ""
+#: actions/deleteapplication.php:63
+msgid "You must be logged in to delete an application."
+msgstr ""
+
+#: actions/deleteapplication.php:71
+msgid "Application not found."
+msgstr ""
+
+#: actions/deleteapplication.php:78 actions/editapplication.php:77
+#: actions/showapplication.php:94
+msgid "You are not the owner of this application."
+msgstr ""
+
+#: actions/deleteapplication.php:102 actions/editapplication.php:127
+#: actions/newapplication.php:110 actions/showapplication.php:118
+#: lib/action.php:1195
+msgid "There was a problem with your session token."
+msgstr ""
+
+#: actions/deleteapplication.php:123 actions/deleteapplication.php:147
+msgid "Delete application"
+msgstr ""
+
+#: actions/deleteapplication.php:149
+msgid ""
+"Are you sure you want to delete this application? This will clear all data "
+"about the application from the database, including all existing user "
+"connections."
+msgstr ""
+
+#: actions/deleteapplication.php:156
+msgid "Do not delete this application"
+msgstr ""
+
+#: actions/deleteapplication.php:160
+msgid "Delete this application"
+msgstr ""
+
#: actions/deletenotice.php:67 actions/disfavor.php:61 actions/favor.php:62
#: actions/groupblock.php:61 actions/groupunblock.php:61 actions/logout.php:69
#: actions/makeadmin.php:61 actions/newmessage.php:87 actions/newnotice.php:89
@@ -911,7 +962,7 @@ msgstr ""
msgid "Do not delete this notice"
msgstr ""
-#: actions/deletenotice.php:146 lib/noticelist.php:608
+#: actions/deletenotice.php:146 lib/noticelist.php:624
msgid "Delete this notice"
msgstr ""
@@ -1051,7 +1102,7 @@ msgstr ""
msgid "Add to favorites"
msgstr ""
-#: actions/doc.php:155
+#: actions/doc.php:158
#, php-format
msgid "No such document \"%s\""
msgstr ""
@@ -1064,20 +1115,11 @@ msgstr ""
msgid "You must be logged in to edit an application."
msgstr ""
-#: actions/editapplication.php:77 actions/showapplication.php:94
-msgid "You are not the owner of this application."
-msgstr ""
-
-#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:163
+#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:166
#: actions/showapplication.php:87
msgid "No such application."
msgstr ""
-#: actions/editapplication.php:127 actions/newapplication.php:110
-#: actions/showapplication.php:118 lib/action.php:1195
-msgid "There was a problem with your session token."
-msgstr ""
-
#: actions/editapplication.php:161
msgid "Use this form to edit your application."
msgstr ""
@@ -1086,43 +1128,47 @@ msgstr ""
msgid "Name is required."
msgstr ""
-#: actions/editapplication.php:180 actions/newapplication.php:162
+#: actions/editapplication.php:180 actions/newapplication.php:165
msgid "Name is too long (max 255 chars)."
msgstr ""
-#: actions/editapplication.php:183 actions/newapplication.php:165
+#: actions/editapplication.php:183 actions/newapplication.php:162
+msgid "Name already in use. Try another one."
+msgstr ""
+
+#: actions/editapplication.php:186 actions/newapplication.php:168
msgid "Description is required."
msgstr ""
-#: actions/editapplication.php:191
+#: actions/editapplication.php:194
msgid "Source URL is too long."
msgstr ""
-#: actions/editapplication.php:197 actions/newapplication.php:182
+#: actions/editapplication.php:200 actions/newapplication.php:185
msgid "Source URL is not valid."
msgstr ""
-#: actions/editapplication.php:200 actions/newapplication.php:185
+#: actions/editapplication.php:203 actions/newapplication.php:188
msgid "Organization is required."
msgstr ""
-#: actions/editapplication.php:203 actions/newapplication.php:188
+#: actions/editapplication.php:206 actions/newapplication.php:191
msgid "Organization is too long (max 255 chars)."
msgstr ""
-#: actions/editapplication.php:206 actions/newapplication.php:191
+#: actions/editapplication.php:209 actions/newapplication.php:194
msgid "Organization homepage is required."
msgstr ""
-#: actions/editapplication.php:215 actions/newapplication.php:203
+#: actions/editapplication.php:218 actions/newapplication.php:206
msgid "Callback is too long."
msgstr ""
-#: actions/editapplication.php:222 actions/newapplication.php:212
+#: actions/editapplication.php:225 actions/newapplication.php:215
msgid "Callback URL is not valid."
msgstr ""
-#: actions/editapplication.php:255
+#: actions/editapplication.php:258
msgid "Could not update application."
msgstr ""
@@ -1976,11 +2022,11 @@ msgstr ""
msgid "Use this form to register a new application."
msgstr ""
-#: actions/newapplication.php:173
+#: actions/newapplication.php:176
msgid "Source URL is required."
msgstr ""
-#: actions/newapplication.php:255 actions/newapplication.php:264
+#: actions/newapplication.php:258 actions/newapplication.php:267
msgid "Could not create application."
msgstr ""
@@ -2105,28 +2151,28 @@ msgstr ""
msgid "You have not registered any applications yet."
msgstr ""
-#: actions/oauthconnectionssettings.php:71
+#: actions/oauthconnectionssettings.php:72
msgid "Connected applications"
msgstr ""
-#: actions/oauthconnectionssettings.php:87
+#: actions/oauthconnectionssettings.php:83
msgid "You have allowed the following applications to access you account."
msgstr ""
-#: actions/oauthconnectionssettings.php:170
+#: actions/oauthconnectionssettings.php:175
msgid "You are not a user of that application."
msgstr ""
-#: actions/oauthconnectionssettings.php:180
+#: actions/oauthconnectionssettings.php:186
msgid "Unable to revoke access for app: "
msgstr ""
-#: actions/oauthconnectionssettings.php:192
+#: actions/oauthconnectionssettings.php:198
#, php-format
msgid "You have not authorized any applications to use your account."
msgstr ""
-#: actions/oauthconnectionssettings.php:205
+#: actions/oauthconnectionssettings.php:211
msgid "Developers can edit the registration settings for their applications "
msgstr ""
@@ -2618,36 +2664,36 @@ msgstr ""
msgid "Public timeline"
msgstr ""
-#: actions/public.php:151
+#: actions/public.php:159
msgid "Public Stream Feed (RSS 1.0)"
msgstr ""
-#: actions/public.php:155
+#: actions/public.php:163
msgid "Public Stream Feed (RSS 2.0)"
msgstr ""
-#: actions/public.php:159
+#: actions/public.php:167
msgid "Public Stream Feed (Atom)"
msgstr ""
-#: actions/public.php:179
+#: actions/public.php:187
#, php-format
msgid ""
"This is the public timeline for %%site.name%% but no one has posted anything "
"yet."
msgstr ""
-#: actions/public.php:182
+#: actions/public.php:190
msgid "Be the first to post!"
msgstr ""
-#: actions/public.php:186
+#: actions/public.php:194
#, php-format
msgid ""
"Why not [register an account](%%action.register%%) and be the first to post!"
msgstr ""
-#: actions/public.php:233
+#: actions/public.php:241
#, php-format
msgid ""
"This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2656,7 +2702,7 @@ msgid ""
"friends, family, and colleagues! ([Read more](%%doc.help%%))"
msgstr ""
-#: actions/public.php:238
+#: actions/public.php:246
#, php-format
msgid ""
"This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2985,7 +3031,7 @@ msgstr ""
msgid "You already repeated that notice."
msgstr ""
-#: actions/repeat.php:114 lib/noticelist.php:626
+#: actions/repeat.php:114 lib/noticelist.php:642
msgid "Repeated"
msgstr ""
@@ -3045,6 +3091,10 @@ msgstr ""
msgid "Replies to %1$s on %2$s!"
msgstr ""
+#: actions/rsd.php:146 actions/version.php:157
+msgid "StatusNet"
+msgstr ""
+
#: actions/sandbox.php:65 actions/unsandbox.php:65
msgid "You cannot sandbox users on this site."
msgstr ""
@@ -3087,76 +3137,80 @@ msgstr ""
msgid "You must be logged in to view an application."
msgstr ""
-#: actions/showapplication.php:158
+#: actions/showapplication.php:157
msgid "Application profile"
msgstr ""
-#: actions/showapplication.php:160 lib/applicationeditform.php:180
+#: actions/showapplication.php:159 lib/applicationeditform.php:180
msgid "Icon"
msgstr ""
-#: actions/showapplication.php:170 actions/version.php:195
+#: actions/showapplication.php:169 actions/version.php:195
#: lib/applicationeditform.php:195
msgid "Name"
msgstr ""
-#: actions/showapplication.php:179 lib/applicationeditform.php:222
+#: actions/showapplication.php:178 lib/applicationeditform.php:222
msgid "Organization"
msgstr ""
-#: actions/showapplication.php:188 actions/version.php:198
+#: actions/showapplication.php:187 actions/version.php:198
#: lib/applicationeditform.php:209 lib/groupeditform.php:172
msgid "Description"
msgstr ""
-#: actions/showapplication.php:193 actions/showgroup.php:429
+#: actions/showapplication.php:192 actions/showgroup.php:429
#: lib/profileaction.php:174
msgid "Statistics"
msgstr ""
-#: actions/showapplication.php:204
+#: actions/showapplication.php:203
#, php-format
-msgid "created by %1$s - %2$s access by default - %3$d users"
+msgid "Created by %1$s - %2$s access by default - %3$d users"
msgstr ""
-#: actions/showapplication.php:214
+#: actions/showapplication.php:213
msgid "Application actions"
msgstr ""
-#: actions/showapplication.php:233
+#: actions/showapplication.php:236
msgid "Reset key & secret"
msgstr ""
-#: actions/showapplication.php:241
+#: actions/showapplication.php:261
msgid "Application info"
msgstr ""
-#: actions/showapplication.php:243
+#: actions/showapplication.php:263
msgid "Consumer key"
msgstr ""
-#: actions/showapplication.php:248
+#: actions/showapplication.php:268
msgid "Consumer secret"
msgstr ""
-#: actions/showapplication.php:253
+#: actions/showapplication.php:273
msgid "Request token URL"
msgstr ""
-#: actions/showapplication.php:258
+#: actions/showapplication.php:278
msgid "Access token URL"
msgstr ""
-#: actions/showapplication.php:263
+#: actions/showapplication.php:283
msgid "Authorize URL"
msgstr ""
-#: actions/showapplication.php:268
+#: actions/showapplication.php:288
msgid ""
"Note: We support HMAC-SHA1 signatures. We do not support the plaintext "
"signature method."
msgstr ""
+#: actions/showapplication.php:309
+msgid "Are you sure you want to reset your consumer key and secret?"
+msgstr ""
+
#: actions/showfavorites.php:79
#, php-format
msgid "%1$s's favorite notices, page %2$d"
@@ -3356,25 +3410,25 @@ msgstr ""
msgid "FOAF for %s"
msgstr ""
-#: actions/showstream.php:191
+#: actions/showstream.php:200
#, php-format
msgid "This is the timeline for %1$s but %2$s hasn't posted anything yet."
msgstr ""
-#: actions/showstream.php:196
+#: actions/showstream.php:205
msgid ""
"Seen anything interesting recently? You haven't posted any notices yet, now "
"would be a good time to start :)"
msgstr ""
-#: actions/showstream.php:198
+#: actions/showstream.php:207
#, php-format
msgid ""
"You can try to nudge %1$s or [post something to his or her attention](%%%%"
"action.newnotice%%%%?status_textarea=%2$s)."
msgstr ""
-#: actions/showstream.php:234
+#: actions/showstream.php:243
#, php-format
msgid ""
"**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3383,7 +3437,7 @@ msgid ""
"follow **%s**'s notices and many more! ([Read more](%%%%doc.help%%%%))"
msgstr ""
-#: actions/showstream.php:239
+#: actions/showstream.php:248
#, php-format
msgid ""
"**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3391,7 +3445,7 @@ msgid ""
"[StatusNet](http://status.net/) tool. "
msgstr ""
-#: actions/showstream.php:296
+#: actions/showstream.php:305
#, php-format
msgid "Repeat of %s"
msgstr ""
@@ -4031,10 +4085,6 @@ msgid ""
"Inc. and contributors."
msgstr ""
-#: actions/version.php:157
-msgid "StatusNet"
-msgstr ""
-
#: actions/version.php:161
msgid "Contributors"
msgstr ""
@@ -4152,21 +4202,21 @@ msgstr ""
msgid "Problem saving notice."
msgstr ""
-#: classes/Notice.php:790
+#: classes/Notice.php:788
msgid "Problem saving group inbox."
msgstr ""
-#: classes/Notice.php:850
+#: classes/Notice.php:848
#, php-format
msgid "DB error inserting reply: %s"
msgstr ""
-#: classes/Notice.php:1233
+#: classes/Notice.php:1231
#, php-format
msgid "RT @%1$s %2$s"
msgstr ""
-#: classes/User.php:382
+#: classes/User.php:385
#, php-format
msgid "Welcome to %1$s, @%2$s!"
msgstr ""
@@ -4435,11 +4485,11 @@ msgstr ""
msgid "Sessions configuration"
msgstr ""
-#: lib/apiauth.php:99
+#: lib/apiauth.php:95
msgid "API resource requires read-write access, but you only have read access."
msgstr ""
-#: lib/apiauth.php:279
+#: lib/apiauth.php:273
#, php-format
msgid "Failed API auth attempt, nickname = %1$s, proxy = %2$s, ip = %3$s"
msgstr ""
@@ -4795,19 +4845,19 @@ msgid ""
"tracking - not yet implemented.\n"
msgstr ""
-#: lib/common.php:131
+#: lib/common.php:135
msgid "No configuration file found. "
msgstr ""
-#: lib/common.php:132
+#: lib/common.php:136
msgid "I looked for configuration files in the following places: "
msgstr ""
-#: lib/common.php:134
+#: lib/common.php:138
msgid "You may wish to run the installer to fix this."
msgstr ""
-#: lib/common.php:135
+#: lib/common.php:139
msgid "Go to the installer."
msgstr ""
@@ -5358,23 +5408,23 @@ msgstr ""
msgid "at"
msgstr ""
-#: lib/noticelist.php:531
+#: lib/noticelist.php:547
msgid "in context"
msgstr ""
-#: lib/noticelist.php:556
+#: lib/noticelist.php:572
msgid "Repeated by"
msgstr ""
-#: lib/noticelist.php:582
+#: lib/noticelist.php:598
msgid "Reply to this notice"
msgstr ""
-#: lib/noticelist.php:583
+#: lib/noticelist.php:599
msgid "Reply"
msgstr ""
-#: lib/noticelist.php:625
+#: lib/noticelist.php:641
msgid "Notice repeated"
msgstr ""
@@ -5515,6 +5565,10 @@ msgstr ""
msgid "Repeat this notice"
msgstr ""
+#: lib/router.php:665
+msgid "No single user defined for single-user mode."
+msgstr ""
+
#: lib/sandboxform.php:67
msgid "Sandbox"
msgstr ""
@@ -5680,47 +5734,47 @@ msgstr ""
msgid "Moderate"
msgstr ""
-#: lib/util.php:868
+#: lib/util.php:867
msgid "a few seconds ago"
msgstr ""
-#: lib/util.php:870
+#: lib/util.php:869
msgid "about a minute ago"
msgstr ""
-#: lib/util.php:872
+#: lib/util.php:871
#, php-format
msgid "about %d minutes ago"
msgstr ""
-#: lib/util.php:874
+#: lib/util.php:873
msgid "about an hour ago"
msgstr ""
-#: lib/util.php:876
+#: lib/util.php:875
#, php-format
msgid "about %d hours ago"
msgstr ""
-#: lib/util.php:878
+#: lib/util.php:877
msgid "about a day ago"
msgstr ""
-#: lib/util.php:880
+#: lib/util.php:879
#, php-format
msgid "about %d days ago"
msgstr ""
-#: lib/util.php:882
+#: lib/util.php:881
msgid "about a month ago"
msgstr ""
-#: lib/util.php:884
+#: lib/util.php:883
#, php-format
msgid "about %d months ago"
msgstr ""
-#: lib/util.php:886
+#: lib/util.php:885
msgid "about a year ago"
msgstr ""
diff --git a/locale/sv/LC_MESSAGES/statusnet.po b/locale/sv/LC_MESSAGES/statusnet.po
index de78d46d8..aaf7206cc 100644
--- a/locale/sv/LC_MESSAGES/statusnet.po
+++ b/locale/sv/LC_MESSAGES/statusnet.po
@@ -9,12 +9,12 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-01-30 23:41+0000\n"
-"PO-Revision-Date: 2010-01-30 23:42:45+0000\n"
+"POT-Creation-Date: 2010-02-04 10:31+0000\n"
+"PO-Revision-Date: 2010-02-04 10:33:34+0000\n"
"Language-Team: Swedish\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.16alpha (r61734); Translate extension (2010-01-16)\n"
+"X-Generator: MediaWiki 1.16alpha (r61969); Translate extension (2010-01-16)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: sv\n"
"X-Message-Group: out-statusnet\n"
@@ -94,7 +94,7 @@ msgstr "Ingen sådan sida"
#: actions/favoritesrss.php:74 actions/foaf.php:40 actions/foaf.php:58
#: actions/microsummary.php:62 actions/newmessage.php:116 actions/otp.php:76
#: actions/remotesubscribe.php:145 actions/remotesubscribe.php:154
-#: actions/replies.php:73 actions/repliesrss.php:38
+#: actions/replies.php:73 actions/repliesrss.php:38 actions/rsd.php:116
#: actions/showfavorites.php:105 actions/userbyid.php:74
#: actions/usergroups.php:91 actions/userrss.php:38 actions/xrds.php:71
#: lib/command.php:163 lib/command.php:302 lib/command.php:355
@@ -107,7 +107,7 @@ msgstr "Ingen sådan användare."
#: actions/all.php:84
#, php-format
msgid "%1$s and friends, page %2$d"
-msgstr "%1$s blockerade profiler, sida %2$d"
+msgstr "%1$s och vänner, sida %2$d"
#: actions/all.php:86 actions/all.php:167 actions/allrss.php:115
#: actions/apitimelinefriends.php:114 actions/apitimelinehome.php:115
@@ -156,7 +156,7 @@ msgstr ""
"någonting för hans eller hennes uppmärksamhet](%%%%action.newnotice%%%%?"
"status_textarea=%3$s)."
-#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:202
+#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:211
#, php-format
msgid ""
"Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
@@ -280,7 +280,7 @@ msgstr "Hävning av blockering av användare misslyckades."
#: actions/apidirectmessage.php:89
#, php-format
msgid "Direct messages from %s"
-msgstr "Direktmeddelande från %s"
+msgstr "Direktmeddelanden från %s"
#: actions/apidirectmessage.php:93
#, php-format
@@ -383,8 +383,8 @@ msgstr "Smeknamnet används redan. Försök med ett annat."
msgid "Not a valid nickname."
msgstr "Inte ett giltigt smeknamn."
-#: actions/apigroupcreate.php:196 actions/editapplication.php:212
-#: actions/editgroup.php:195 actions/newapplication.php:200
+#: actions/apigroupcreate.php:196 actions/editapplication.php:215
+#: actions/editgroup.php:195 actions/newapplication.php:203
#: actions/newgroup.php:139 actions/profilesettings.php:222
#: actions/register.php:217
msgid "Homepage is not a valid URL."
@@ -396,8 +396,8 @@ msgstr "Hemsida är inte en giltig URL."
msgid "Full name is too long (max 255 chars)."
msgstr "Fullständigt namn är för långt (max 255 tecken)."
-#: actions/apigroupcreate.php:213 actions/editapplication.php:187
-#: actions/newapplication.php:169
+#: actions/apigroupcreate.php:213 actions/editapplication.php:190
+#: actions/newapplication.php:172
#, php-format
msgid "Description is too long (max %d chars)."
msgstr "Beskrivning är för lång (max 140 tecken)."
@@ -474,18 +474,22 @@ msgstr "%s grupper"
msgid "groups on %s"
msgstr "grupper på %s"
-#: actions/apioauthauthorize.php:108 actions/apioauthauthorize.php:114
-msgid "Bad request."
-msgstr "Dålig förfrågan."
+#: actions/apioauthauthorize.php:101
+msgid "No oauth_token parameter provided."
+msgstr "Ingen oauth_token-parameter angiven."
+
+#: actions/apioauthauthorize.php:106
+msgid "Invalid token."
+msgstr "Ogiltig token."
-#: actions/apioauthauthorize.php:134 actions/avatarsettings.php:268
+#: actions/apioauthauthorize.php:123 actions/avatarsettings.php:268
#: actions/deletenotice.php:157 actions/disfavor.php:74
-#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:50
+#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:54
#: actions/groupblock.php:66 actions/grouplogo.php:309
#: actions/groupunblock.php:66 actions/imsettings.php:206
#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
-#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:139
+#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:135
#: actions/othersettings.php:145 actions/passwordsettings.php:138
#: actions/profilesettings.php:194 actions/recoverpassword.php:337
#: actions/register.php:165 actions/remotesubscribe.php:77
@@ -496,72 +500,83 @@ msgstr "Dålig förfrågan."
msgid "There was a problem with your session token. Try again, please."
msgstr "Det var ett problem med din sessions-token. Var vänlig försök igen."
-#: actions/apioauthauthorize.php:146
+#: actions/apioauthauthorize.php:135
msgid "Invalid nickname / password!"
msgstr "Ogiltigt smeknamn / lösenord!"
-#: actions/apioauthauthorize.php:170
+#: actions/apioauthauthorize.php:159
msgid "Database error deleting OAuth application user."
msgstr "Databasfel vid borttagning av OAuth-applikationsanvändare."
-#: actions/apioauthauthorize.php:196
+#: actions/apioauthauthorize.php:185
msgid "Database error inserting OAuth application user."
msgstr "Databasfel vid infogning av OAuth-applikationsanvändare."
-#: actions/apioauthauthorize.php:231
+#: actions/apioauthauthorize.php:214
#, php-format
msgid ""
"The request token %s has been authorized. Please exchange it for an access "
"token."
msgstr "Begäran-token %s har godkänts. Byt ut den mot en åtkomst-token."
-#: actions/apioauthauthorize.php:241
+#: actions/apioauthauthorize.php:227
#, php-format
-msgid "The request token %s has been denied."
-msgstr "Begäran-token %s har nekats."
+msgid "The request token %s has been denied and revoked."
+msgstr "Begäran-token %s har nekats och återkallats."
-#: actions/apioauthauthorize.php:246 actions/avatarsettings.php:281
+#: actions/apioauthauthorize.php:232 actions/avatarsettings.php:281
#: actions/designadminpanel.php:103 actions/editapplication.php:139
#: actions/emailsettings.php:256 actions/grouplogo.php:319
#: actions/imsettings.php:220 actions/newapplication.php:121
-#: actions/oauthconnectionssettings.php:151 actions/recoverpassword.php:44
+#: actions/oauthconnectionssettings.php:147 actions/recoverpassword.php:44
#: actions/smssettings.php:248 lib/designsettings.php:304
msgid "Unexpected form submission."
msgstr "Oväntat inskick av formulär."
-#: actions/apioauthauthorize.php:273
+#: actions/apioauthauthorize.php:259
msgid "An application would like to connect to your account"
msgstr "En applikation skulle vilja ansluta till ditt konto"
-#: actions/apioauthauthorize.php:290
+#: actions/apioauthauthorize.php:276
msgid "Allow or deny access"
msgstr "Tillåt eller neka åtkomst"
-#: actions/apioauthauthorize.php:320 lib/action.php:441
+#: actions/apioauthauthorize.php:292
+#, php-format
+msgid ""
+"The application <strong>%1$s</strong> by <strong>%2$s</strong> would like "
+"the ability to <strong>%3$s</strong> your %4$s account data. You should only "
+"give access to your %4$s account to third parties you trust."
+msgstr ""
+"Applikationen <strong>%1$s</strong> av <strong>%2$s</strong> vill att "
+"möjligheten att <strong>%3$s</strong> din %4$s kontoinformation. Du bör bara "
+"ge tillgång till ditt %4$s-konto till tredje-parter du litar på."
+
+#: actions/apioauthauthorize.php:310 lib/action.php:441
msgid "Account"
msgstr "Konto"
-#: actions/apioauthauthorize.php:323 actions/login.php:230
+#: actions/apioauthauthorize.php:313 actions/login.php:230
#: actions/profilesettings.php:106 actions/register.php:424
#: actions/showgroup.php:236 actions/tagother.php:94 lib/groupeditform.php:152
#: lib/userprofile.php:131
msgid "Nickname"
msgstr "Smeknamn"
-#: actions/apioauthauthorize.php:326 actions/login.php:233
+#: actions/apioauthauthorize.php:316 actions/login.php:233
#: actions/register.php:429 lib/accountsettingsaction.php:116
msgid "Password"
msgstr "Lösenord"
-#: actions/apioauthauthorize.php:338
+#: actions/apioauthauthorize.php:328
msgid "Deny"
msgstr "Neka"
-#: actions/apioauthauthorize.php:344
+#: actions/apioauthauthorize.php:334
msgid "Allow"
msgstr "Tillåt"
-#: actions/apioauthauthorize.php:361
+#: actions/apioauthauthorize.php:351
msgid "Allow or deny access to your account information."
msgstr "Tillåt eller neka åtkomst till din kontoinformation."
@@ -731,8 +746,8 @@ msgstr "Orginal"
msgid "Preview"
msgstr "Förhandsgranska"
-#: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:608
+#: actions/avatarsettings.php:149 actions/showapplication.php:252
+#: lib/deleteuserform.php:66 lib/noticelist.php:624
msgid "Delete"
msgstr "Ta bort"
@@ -782,8 +797,9 @@ msgstr ""
"prenumeration på dig tas bort, de kommer inte kunna prenumerera på dig i "
"framtiden och du kommer inte bli underrättad om några @-svar från dem."
-#: actions/block.php:143 actions/deletenotice.php:145
-#: actions/deleteuser.php:147 actions/groupblock.php:178
+#: actions/block.php:143 actions/deleteapplication.php:153
+#: actions/deletenotice.php:145 actions/deleteuser.php:147
+#: actions/groupblock.php:178
msgid "No"
msgstr "Nej"
@@ -791,9 +807,9 @@ msgstr "Nej"
msgid "Do not block this user"
msgstr "Blockera inte denna användare"
-#: actions/block.php:144 actions/deletenotice.php:146
-#: actions/deleteuser.php:148 actions/groupblock.php:179
-#: lib/repeatform.php:132
+#: actions/block.php:144 actions/deleteapplication.php:158
+#: actions/deletenotice.php:146 actions/deleteuser.php:148
+#: actions/groupblock.php:179 lib/repeatform.php:132
msgid "Yes"
msgstr "Ja"
@@ -898,6 +914,47 @@ msgstr "Konversationer"
msgid "Notices"
msgstr "Notiser"
+#: actions/deleteapplication.php:63
+msgid "You must be logged in to delete an application."
+msgstr "Du måste vara inloggad för att ta bort en applikation."
+
+#: actions/deleteapplication.php:71
+msgid "Application not found."
+msgstr "Applikation hittades inte."
+
+#: actions/deleteapplication.php:78 actions/editapplication.php:77
+#: actions/showapplication.php:94
+msgid "You are not the owner of this application."
+msgstr "Du är inte ägaren av denna applikation."
+
+#: actions/deleteapplication.php:102 actions/editapplication.php:127
+#: actions/newapplication.php:110 actions/showapplication.php:118
+#: lib/action.php:1195
+msgid "There was a problem with your session token."
+msgstr "Det var ett problem med din sessions-token."
+
+#: actions/deleteapplication.php:123 actions/deleteapplication.php:147
+msgid "Delete application"
+msgstr "Ta bort applikation"
+
+#: actions/deleteapplication.php:149
+msgid ""
+"Are you sure you want to delete this application? This will clear all data "
+"about the application from the database, including all existing user "
+"connections."
+msgstr ""
+"Är du säker på att du vill ta bort denna applikation? Detta kommer rensa "
+"bort all data om applikationen från databasen, inklusive alla befintliga "
+"användaranslutningar."
+
+#: actions/deleteapplication.php:156
+msgid "Do not delete this application"
+msgstr "Ta inte bort denna applikation"
+
+#: actions/deleteapplication.php:160
+msgid "Delete this application"
+msgstr "Ta bort denna applikation"
+
#: actions/deletenotice.php:67 actions/disfavor.php:61 actions/favor.php:62
#: actions/groupblock.php:61 actions/groupunblock.php:61 actions/logout.php:69
#: actions/makeadmin.php:61 actions/newmessage.php:87 actions/newnotice.php:89
@@ -932,7 +989,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:608
+#: actions/deletenotice.php:146 lib/noticelist.php:624
msgid "Delete this notice"
msgstr "Ta bort denna notis"
@@ -1076,7 +1133,7 @@ msgstr "Denna notis är inte en favorit!"
msgid "Add to favorites"
msgstr "Lägg till i favoriter"
-#: actions/doc.php:155
+#: actions/doc.php:158
#, php-format
msgid "No such document \"%s\""
msgstr "Inget sådant dokument \"%s\""
@@ -1089,20 +1146,11 @@ msgstr "Redigera applikation"
msgid "You must be logged in to edit an application."
msgstr "Du måste vara inloggad för att redigera en applikation."
-#: actions/editapplication.php:77 actions/showapplication.php:94
-msgid "You are not the owner of this application."
-msgstr "Du är inte ägaren av denna applikation."
-
-#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:163
+#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:166
#: actions/showapplication.php:87
msgid "No such application."
msgstr "Ingen sådan applikation."
-#: actions/editapplication.php:127 actions/newapplication.php:110
-#: actions/showapplication.php:118 lib/action.php:1195
-msgid "There was a problem with your session token."
-msgstr "Det var ett problem med din sessions-token."
-
#: actions/editapplication.php:161
msgid "Use this form to edit your application."
msgstr "Använd detta formulär för att redigera din applikation."
@@ -1111,43 +1159,47 @@ msgstr "Använd detta formulär för att redigera din applikation."
msgid "Name is required."
msgstr "Namn krävs."
-#: actions/editapplication.php:180 actions/newapplication.php:162
+#: actions/editapplication.php:180 actions/newapplication.php:165
msgid "Name is too long (max 255 chars)."
msgstr "Namnet är för långt (max 255 tecken)."
-#: actions/editapplication.php:183 actions/newapplication.php:165
+#: actions/editapplication.php:183 actions/newapplication.php:162
+msgid "Name already in use. Try another one."
+msgstr "Namnet används redan. Prova ett annat."
+
+#: actions/editapplication.php:186 actions/newapplication.php:168
msgid "Description is required."
msgstr "Beskrivning krävs."
-#: actions/editapplication.php:191
+#: actions/editapplication.php:194
msgid "Source URL is too long."
msgstr "URL till källa är för lång."
-#: actions/editapplication.php:197 actions/newapplication.php:182
+#: actions/editapplication.php:200 actions/newapplication.php:185
msgid "Source URL is not valid."
msgstr "URL till källa är inte giltig."
-#: actions/editapplication.php:200 actions/newapplication.php:185
+#: actions/editapplication.php:203 actions/newapplication.php:188
msgid "Organization is required."
msgstr "Organisation krävs."
-#: actions/editapplication.php:203 actions/newapplication.php:188
+#: actions/editapplication.php:206 actions/newapplication.php:191
msgid "Organization is too long (max 255 chars)."
msgstr "Organisation är för lång (max 255 tecken)."
-#: actions/editapplication.php:206 actions/newapplication.php:191
+#: actions/editapplication.php:209 actions/newapplication.php:194
msgid "Organization homepage is required."
msgstr "Hemsida för organisation krävs."
-#: actions/editapplication.php:215 actions/newapplication.php:203
+#: actions/editapplication.php:218 actions/newapplication.php:206
msgid "Callback is too long."
msgstr "Anrop är för lång."
-#: actions/editapplication.php:222 actions/newapplication.php:212
+#: actions/editapplication.php:225 actions/newapplication.php:215
msgid "Callback URL is not valid."
msgstr "URL för anrop är inte giltig."
-#: actions/editapplication.php:255
+#: actions/editapplication.php:258
msgid "Could not update application."
msgstr "Kunde inte uppdatera applikation."
@@ -2078,11 +2130,11 @@ msgstr "Du måste vara inloggad för att registrera en applikation."
msgid "Use this form to register a new application."
msgstr "Använd detta formulär för att registrera en ny applikation."
-#: actions/newapplication.php:173
+#: actions/newapplication.php:176
msgid "Source URL is required."
msgstr "URL till källa krävs."
-#: actions/newapplication.php:255 actions/newapplication.php:264
+#: actions/newapplication.php:258 actions/newapplication.php:267
msgid "Could not create application."
msgstr "Kunde inte skapa applikation."
@@ -2217,28 +2269,28 @@ msgstr "Applikationer du har registrerat"
msgid "You have not registered any applications yet."
msgstr "Du har inte registrerat några applikationer än."
-#: actions/oauthconnectionssettings.php:71
+#: actions/oauthconnectionssettings.php:72
msgid "Connected applications"
msgstr "Anslutna applikationer"
-#: actions/oauthconnectionssettings.php:87
+#: actions/oauthconnectionssettings.php:83
msgid "You have allowed the following applications to access you account."
msgstr "Du har tillåtit följande applikationer att komma åt ditt konto."
-#: actions/oauthconnectionssettings.php:170
+#: actions/oauthconnectionssettings.php:175
msgid "You are not a user of that application."
msgstr "Du är inte en användare av den applikationen."
-#: actions/oauthconnectionssettings.php:180
+#: actions/oauthconnectionssettings.php:186
msgid "Unable to revoke access for app: "
msgstr "Kunde inte återkalla åtkomst för applikation: "
-#: actions/oauthconnectionssettings.php:192
+#: actions/oauthconnectionssettings.php:198
#, php-format
msgid "You have not authorized any applications to use your account."
msgstr "Du har inte tillåtit några applikationer att använda ditt konto."
-#: actions/oauthconnectionssettings.php:205
+#: actions/oauthconnectionssettings.php:211
msgid "Developers can edit the registration settings for their applications "
msgstr ""
"Utvecklare kan redigera registreringsinställningarna för sina applikationer "
@@ -2740,19 +2792,19 @@ msgstr "Publik tidslinje, sida %d"
msgid "Public timeline"
msgstr "Publik tidslinje"
-#: actions/public.php:151
+#: actions/public.php:159
msgid "Public Stream Feed (RSS 1.0)"
msgstr "Publikt flöde av ström (RSS 1.0)"
-#: actions/public.php:155
+#: actions/public.php:163
msgid "Public Stream Feed (RSS 2.0)"
msgstr "Publikt flöde av ström (RSS 2.0)"
-#: actions/public.php:159
+#: actions/public.php:167
msgid "Public Stream Feed (Atom)"
msgstr "Publikt flöde av ström (Atom)"
-#: actions/public.php:179
+#: actions/public.php:187
#, php-format
msgid ""
"This is the public timeline for %%site.name%% but no one has posted anything "
@@ -2761,11 +2813,11 @@ msgstr ""
"Detta är den publika tidslinjen för %%site.name%% men ingen har postat något "
"än."
-#: actions/public.php:182
+#: actions/public.php:190
msgid "Be the first to post!"
msgstr "Bli först att posta!"
-#: actions/public.php:186
+#: actions/public.php:194
#, php-format
msgid ""
"Why not [register an account](%%action.register%%) and be the first to post!"
@@ -2773,7 +2825,7 @@ msgstr ""
"Varför inte [registrera ett konto](%%action.register%%) och bli först att "
"posta!"
-#: actions/public.php:233
+#: actions/public.php:241
#, php-format
msgid ""
"This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2786,7 +2838,7 @@ msgstr ""
"net/). [Gå med nu](%%action.register%%) för att dela notiser om dig själv "
"med vänner, familj och kollegor! ([Läs mer](%%doc.help%%))"
-#: actions/public.php:238
+#: actions/public.php:246
#, php-format
msgid ""
"This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -3155,7 +3207,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:626
+#: actions/repeat.php:114 lib/noticelist.php:642
msgid "Repeated"
msgstr "Upprepad"
@@ -3221,6 +3273,10 @@ msgstr ""
msgid "Replies to %1$s on %2$s!"
msgstr "Svar till %1$s på %2$s"
+#: actions/rsd.php:146 actions/version.php:157
+msgid "StatusNet"
+msgstr "StatusNet"
+
#: actions/sandbox.php:65 actions/unsandbox.php:65
msgid "You cannot sandbox users on this site."
msgstr "Du kan inte flytta användare till sandlådan på denna webbplats."
@@ -3235,9 +3291,8 @@ msgid "Sessions"
msgstr "Sessioner"
#: actions/sessionsadminpanel.php:65
-#, fuzzy
msgid "Session settings for this StatusNet site."
-msgstr "Utseendeinställningar för denna StatusNet-webbplats."
+msgstr "Sessionsinställningar för denna StatusNet-webbplats."
#: actions/sessionsadminpanel.php:175
msgid "Handle sessions"
@@ -3264,71 +3319,71 @@ msgstr "Spara webbplatsinställningar"
msgid "You must be logged in to view an application."
msgstr "Du måste vara inloggad för att se en applikation."
-#: actions/showapplication.php:158
+#: actions/showapplication.php:157
msgid "Application profile"
msgstr "Applikationsprofil"
-#: actions/showapplication.php:160 lib/applicationeditform.php:180
+#: actions/showapplication.php:159 lib/applicationeditform.php:180
msgid "Icon"
msgstr "Ikon"
-#: actions/showapplication.php:170 actions/version.php:195
+#: actions/showapplication.php:169 actions/version.php:195
#: lib/applicationeditform.php:195
msgid "Name"
msgstr "Namn"
-#: actions/showapplication.php:179 lib/applicationeditform.php:222
+#: actions/showapplication.php:178 lib/applicationeditform.php:222
msgid "Organization"
msgstr "Organisation"
-#: actions/showapplication.php:188 actions/version.php:198
+#: actions/showapplication.php:187 actions/version.php:198
#: lib/applicationeditform.php:209 lib/groupeditform.php:172
msgid "Description"
msgstr "Beskrivning"
-#: actions/showapplication.php:193 actions/showgroup.php:429
+#: actions/showapplication.php:192 actions/showgroup.php:429
#: lib/profileaction.php:174
msgid "Statistics"
msgstr "Statistik"
-#: actions/showapplication.php:204
+#: actions/showapplication.php:203
#, php-format
-msgid "created by %1$s - %2$s access by default - %3$d users"
-msgstr "skapad av %1$s - %2$s standardåtkomst - %3$d användare"
+msgid "Created by %1$s - %2$s access by default - %3$d users"
+msgstr "Skapad av %1$s - %2$s standardåtkomst - %3$d användare"
-#: actions/showapplication.php:214
+#: actions/showapplication.php:213
msgid "Application actions"
msgstr "Åtgärder för applikation"
-#: actions/showapplication.php:233
+#: actions/showapplication.php:236
msgid "Reset key & secret"
msgstr "Återställ nyckel & hemlighet"
-#: actions/showapplication.php:241
+#: actions/showapplication.php:261
msgid "Application info"
msgstr "Information om applikation"
-#: actions/showapplication.php:243
+#: actions/showapplication.php:263
msgid "Consumer key"
msgstr "Nyckel för konsument"
-#: actions/showapplication.php:248
+#: actions/showapplication.php:268
msgid "Consumer secret"
msgstr "Hemlighet för konsument"
-#: actions/showapplication.php:253
+#: actions/showapplication.php:273
msgid "Request token URL"
msgstr "URL för begäran-token"
-#: actions/showapplication.php:258
+#: actions/showapplication.php:278
msgid "Access token URL"
msgstr "URL för åtkomst-token"
-#: actions/showapplication.php:263
+#: actions/showapplication.php:283
msgid "Authorize URL"
msgstr "Tillåt URL"
-#: actions/showapplication.php:268
+#: actions/showapplication.php:288
msgid ""
"Note: We support HMAC-SHA1 signatures. We do not support the plaintext "
"signature method."
@@ -3336,6 +3391,11 @@ msgstr ""
"Notera: Vi stöjder HMAC-SHA1-signaturer. Vi stödjer inte metoden med "
"klartextsignatur."
+#: actions/showapplication.php:309
+#, fuzzy
+msgid "Are you sure you want to reset your consumer key and secret?"
+msgstr "Är du säker på att du vill ta bort denna notis?"
+
#: actions/showfavorites.php:79
#, php-format
msgid "%1$s's favorite notices, page %2$d"
@@ -3552,12 +3612,12 @@ msgstr "Flöde av notiser för %s (Atom)"
msgid "FOAF for %s"
msgstr "FOAF för %s"
-#: actions/showstream.php:191
+#: actions/showstream.php:200
#, php-format
msgid "This is the timeline for %1$s but %2$s hasn't posted anything yet."
msgstr "Detta är tidslinjen för %1$s men %2$s har inte postat något än."
-#: actions/showstream.php:196
+#: actions/showstream.php:205
msgid ""
"Seen anything interesting recently? You haven't posted any notices yet, now "
"would be a good time to start :)"
@@ -3565,7 +3625,7 @@ msgstr ""
"Sett något intressant nyligen? Du har inte postat några notiser än. Varför "
"inte börja nu?"
-#: actions/showstream.php:198
+#: actions/showstream.php:207
#, php-format
msgid ""
"You can try to nudge %1$s or [post something to his or her attention](%%%%"
@@ -3574,7 +3634,7 @@ msgstr ""
"Du kan prova att knuffa %1$s eller [posta något för hans eller hennes "
"uppmärksamhet](%%%%action.newnotice%%%%?status_textarea=%2$s)."
-#: actions/showstream.php:234
+#: actions/showstream.php:243
#, php-format
msgid ""
"**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3587,7 +3647,7 @@ msgstr ""
"[StatusNet](http://status.net/). [Gå med nu](%%%%action.register%%%%) för "
"att följa **%s**s notiser och många fler! ([Läs mer](%%%%doc.help%%%%))"
-#: actions/showstream.php:239
+#: actions/showstream.php:248
#, php-format
msgid ""
"**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3598,7 +3658,7 @@ msgstr ""
"wikipedia.org/wiki/Micro-blogging)tjänst baserad på den fria programvaran "
"[StatusNet](http://status.net/). "
-#: actions/showstream.php:296
+#: actions/showstream.php:305
#, php-format
msgid "Repeat of %s"
msgstr "Upprepning av %s"
@@ -4278,10 +4338,6 @@ msgstr ""
"Denna webbplats drivs med %1$s version %2$s, Copyright 2008-2010 StatusNet, "
"Inc. och medarbetare."
-#: actions/version.php:157
-msgid "StatusNet"
-msgstr "StatusNet"
-
#: actions/version.php:161
msgid "Contributors"
msgstr "Medarbetare"
@@ -4415,21 +4471,21 @@ msgstr "Du är utestängd från att posta notiser på denna webbplats."
msgid "Problem saving notice."
msgstr "Problem med att spara notis."
-#: classes/Notice.php:790
+#: classes/Notice.php:788
msgid "Problem saving group inbox."
msgstr "Problem med att spara gruppinkorg."
-#: classes/Notice.php:850
+#: classes/Notice.php:848
#, php-format
msgid "DB error inserting reply: %s"
msgstr "Databasfel vid infogning av svar: %s"
-#: classes/Notice.php:1233
+#: classes/Notice.php:1231
#, php-format
msgid "RT @%1$s %2$s"
msgstr "RT @%1$s %2$s"
-#: classes/User.php:382
+#: classes/User.php:385
#, php-format
msgid "Welcome to %1$s, @%2$s!"
msgstr "Välkommen till %1$s, @%2$s!"
@@ -4701,16 +4757,15 @@ msgid "Paths configuration"
msgstr "Konfiguration av sökvägar"
#: lib/adminpanelaction.php:337
-#, fuzzy
msgid "Sessions configuration"
-msgstr "Konfiguration av utseende"
+msgstr "Konfiguration av sessioner"
-#: lib/apiauth.php:99
+#: lib/apiauth.php:95
msgid "API resource requires read-write access, but you only have read access."
msgstr ""
"API-resursen kräver läs- och skrivrättigheter, men du har bara läsrättighet."
-#: lib/apiauth.php:279
+#: lib/apiauth.php:273
#, php-format
msgid "Failed API auth attempt, nickname = %1$s, proxy = %2$s, ip = %3$s"
msgstr ""
@@ -5110,19 +5165,19 @@ msgstr ""
"tracks - inte implementerat än.\n"
"tracking - inte implementerat än.\n"
-#: lib/common.php:131
+#: lib/common.php:135
msgid "No configuration file found. "
msgstr "Ingen konfigurationsfil hittades. "
-#: lib/common.php:132
+#: lib/common.php:136
msgid "I looked for configuration files in the following places: "
msgstr "Jag letade efter konfigurationsfiler på följande platser: "
-#: lib/common.php:134
+#: lib/common.php:138
msgid "You may wish to run the installer to fix this."
msgstr "Du kanske vill köra installeraren för att åtgärda detta."
-#: lib/common.php:135
+#: lib/common.php:139
msgid "Go to the installer."
msgstr "Gå till installeraren."
@@ -5766,23 +5821,23 @@ msgstr "V"
msgid "at"
msgstr "på"
-#: lib/noticelist.php:531
+#: lib/noticelist.php:547
msgid "in context"
msgstr "i sammanhang"
-#: lib/noticelist.php:556
+#: lib/noticelist.php:572
msgid "Repeated by"
msgstr "Upprepad av"
-#: lib/noticelist.php:582
+#: lib/noticelist.php:598
msgid "Reply to this notice"
msgstr "Svara på denna notis"
-#: lib/noticelist.php:583
+#: lib/noticelist.php:599
msgid "Reply"
msgstr "Svara"
-#: lib/noticelist.php:625
+#: lib/noticelist.php:641
msgid "Notice repeated"
msgstr "Notis upprepad"
@@ -5923,6 +5978,10 @@ msgstr "Upprepa denna notis?"
msgid "Repeat this notice"
msgstr "Upprepa denna notis"
+#: lib/router.php:665
+msgid "No single user defined for single-user mode."
+msgstr "Ingen enskild användare definierad för enanvändarläge."
+
#: lib/sandboxform.php:67
msgid "Sandbox"
msgstr "Flytta till sandlådan"
@@ -6088,47 +6147,47 @@ msgstr "Meddelande"
msgid "Moderate"
msgstr "Moderera"
-#: lib/util.php:868
+#: lib/util.php:867
msgid "a few seconds ago"
msgstr "ett par sekunder sedan"
-#: lib/util.php:870
+#: lib/util.php:869
msgid "about a minute ago"
msgstr "för nån minut sedan"
-#: lib/util.php:872
+#: lib/util.php:871
#, php-format
msgid "about %d minutes ago"
msgstr "för %d minuter sedan"
-#: lib/util.php:874
+#: lib/util.php:873
msgid "about an hour ago"
msgstr "för en timma sedan"
-#: lib/util.php:876
+#: lib/util.php:875
#, php-format
msgid "about %d hours ago"
msgstr "för %d timmar sedan"
-#: lib/util.php:878
+#: lib/util.php:877
msgid "about a day ago"
msgstr "för en dag sedan"
-#: lib/util.php:880
+#: lib/util.php:879
#, php-format
msgid "about %d days ago"
msgstr "för %d dagar sedan"
-#: lib/util.php:882
+#: lib/util.php:881
msgid "about a month ago"
msgstr "för en månad sedan"
-#: lib/util.php:884
+#: lib/util.php:883
#, php-format
msgid "about %d months ago"
msgstr "för %d månader sedan"
-#: lib/util.php:886
+#: lib/util.php:885
msgid "about a year ago"
msgstr "för ett år sedan"
diff --git a/locale/te/LC_MESSAGES/statusnet.po b/locale/te/LC_MESSAGES/statusnet.po
index 59757cc82..40cf0b5d6 100644
--- a/locale/te/LC_MESSAGES/statusnet.po
+++ b/locale/te/LC_MESSAGES/statusnet.po
@@ -8,12 +8,12 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-01-30 23:41+0000\n"
-"PO-Revision-Date: 2010-01-30 23:42:48+0000\n"
+"POT-Creation-Date: 2010-02-04 10:31+0000\n"
+"PO-Revision-Date: 2010-02-04 10:33:37+0000\n"
"Language-Team: Telugu\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.16alpha (r61734); Translate extension (2010-01-16)\n"
+"X-Generator: MediaWiki 1.16alpha (r61969); Translate extension (2010-01-16)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: te\n"
"X-Message-Group: out-statusnet\n"
@@ -95,7 +95,7 @@ msgstr "అటువంటి పేజీ లేదు"
#: actions/favoritesrss.php:74 actions/foaf.php:40 actions/foaf.php:58
#: actions/microsummary.php:62 actions/newmessage.php:116 actions/otp.php:76
#: actions/remotesubscribe.php:145 actions/remotesubscribe.php:154
-#: actions/replies.php:73 actions/repliesrss.php:38
+#: actions/replies.php:73 actions/repliesrss.php:38 actions/rsd.php:116
#: actions/showfavorites.php:105 actions/userbyid.php:74
#: actions/usergroups.php:91 actions/userrss.php:38 actions/xrds.php:71
#: lib/command.php:163 lib/command.php:302 lib/command.php:355
@@ -152,7 +152,7 @@ msgid ""
"his or her attention](%%%%action.newnotice%%%%?status_textarea=%3$s)."
msgstr ""
-#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:202
+#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:211
#, php-format
msgid ""
"Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
@@ -381,8 +381,8 @@ msgstr "ఆ పేరుని ఇప్పటికే వాడుతున్
msgid "Not a valid nickname."
msgstr "సరైన పేరు కాదు."
-#: actions/apigroupcreate.php:196 actions/editapplication.php:212
-#: actions/editgroup.php:195 actions/newapplication.php:200
+#: actions/apigroupcreate.php:196 actions/editapplication.php:215
+#: actions/editgroup.php:195 actions/newapplication.php:203
#: actions/newgroup.php:139 actions/profilesettings.php:222
#: actions/register.php:217
msgid "Homepage is not a valid URL."
@@ -394,8 +394,8 @@ msgstr "హోమ్ పేజీ URL సరైనది కాదు."
msgid "Full name is too long (max 255 chars)."
msgstr "పూర్తి పేరు చాలా పెద్దగా ఉంది (గరిష్ఠంగా 255 అక్షరాలు)."
-#: actions/apigroupcreate.php:213 actions/editapplication.php:187
-#: actions/newapplication.php:169
+#: actions/apigroupcreate.php:213 actions/editapplication.php:190
+#: actions/newapplication.php:172
#, php-format
msgid "Description is too long (max %d chars)."
msgstr "వివరణ చాలా పెద్దగా ఉంది (%d అక్షరాలు గరిష్ఠం)."
@@ -472,18 +472,23 @@ msgstr "%s గుంపులు"
msgid "groups on %s"
msgstr "%s పై గుంపులు"
-#: actions/apioauthauthorize.php:108 actions/apioauthauthorize.php:114
-msgid "Bad request."
-msgstr "తప్పుడు అభ్యర్థన."
+#: actions/apioauthauthorize.php:101
+msgid "No oauth_token parameter provided."
+msgstr ""
-#: actions/apioauthauthorize.php:134 actions/avatarsettings.php:268
+#: actions/apioauthauthorize.php:106
+#, fuzzy
+msgid "Invalid token."
+msgstr "తప్పుడు పరిమాణం."
+
+#: actions/apioauthauthorize.php:123 actions/avatarsettings.php:268
#: actions/deletenotice.php:157 actions/disfavor.php:74
-#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:50
+#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:54
#: actions/groupblock.php:66 actions/grouplogo.php:309
#: actions/groupunblock.php:66 actions/imsettings.php:206
#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
-#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:139
+#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:135
#: actions/othersettings.php:145 actions/passwordsettings.php:138
#: actions/profilesettings.php:194 actions/recoverpassword.php:337
#: actions/register.php:165 actions/remotesubscribe.php:77
@@ -494,74 +499,82 @@ msgstr "తప్పుడు అభ్యర్థన."
msgid "There was a problem with your session token. Try again, please."
msgstr ""
-#: actions/apioauthauthorize.php:146
+#: actions/apioauthauthorize.php:135
msgid "Invalid nickname / password!"
msgstr "తప్పుడు పేరు / సంకేతపదం!"
-#: actions/apioauthauthorize.php:170
+#: actions/apioauthauthorize.php:159
#, fuzzy
msgid "Database error deleting OAuth application user."
msgstr "అవతారాన్ని పెట్టడంలో పొరపాటు"
-#: actions/apioauthauthorize.php:196
+#: actions/apioauthauthorize.php:185
#, fuzzy
msgid "Database error inserting OAuth application user."
msgstr "అవతారాన్ని పెట్టడంలో పొరపాటు"
-#: actions/apioauthauthorize.php:231
+#: actions/apioauthauthorize.php:214
#, php-format
msgid ""
"The request token %s has been authorized. Please exchange it for an access "
"token."
msgstr ""
-#: actions/apioauthauthorize.php:241
+#: actions/apioauthauthorize.php:227
#, php-format
-msgid "The request token %s has been denied."
+msgid "The request token %s has been denied and revoked."
msgstr ""
-#: actions/apioauthauthorize.php:246 actions/avatarsettings.php:281
+#: actions/apioauthauthorize.php:232 actions/avatarsettings.php:281
#: actions/designadminpanel.php:103 actions/editapplication.php:139
#: actions/emailsettings.php:256 actions/grouplogo.php:319
#: actions/imsettings.php:220 actions/newapplication.php:121
-#: actions/oauthconnectionssettings.php:151 actions/recoverpassword.php:44
+#: actions/oauthconnectionssettings.php:147 actions/recoverpassword.php:44
#: actions/smssettings.php:248 lib/designsettings.php:304
msgid "Unexpected form submission."
msgstr ""
-#: actions/apioauthauthorize.php:273
+#: actions/apioauthauthorize.php:259
msgid "An application would like to connect to your account"
msgstr ""
-#: actions/apioauthauthorize.php:290
+#: actions/apioauthauthorize.php:276
msgid "Allow or deny access"
msgstr ""
-#: actions/apioauthauthorize.php:320 lib/action.php:441
+#: actions/apioauthauthorize.php:292
+#, php-format
+msgid ""
+"The application <strong>%1$s</strong> by <strong>%2$s</strong> would like "
+"the ability to <strong>%3$s</strong> your %4$s account data. You should only "
+"give access to your %4$s account to third parties you trust."
+msgstr ""
+
+#: actions/apioauthauthorize.php:310 lib/action.php:441
msgid "Account"
msgstr "ఖాతా"
-#: actions/apioauthauthorize.php:323 actions/login.php:230
+#: actions/apioauthauthorize.php:313 actions/login.php:230
#: actions/profilesettings.php:106 actions/register.php:424
#: actions/showgroup.php:236 actions/tagother.php:94 lib/groupeditform.php:152
#: lib/userprofile.php:131
msgid "Nickname"
msgstr "పేరు"
-#: actions/apioauthauthorize.php:326 actions/login.php:233
+#: actions/apioauthauthorize.php:316 actions/login.php:233
#: actions/register.php:429 lib/accountsettingsaction.php:116
msgid "Password"
msgstr "సంకేతపదం"
-#: actions/apioauthauthorize.php:338
+#: actions/apioauthauthorize.php:328
msgid "Deny"
msgstr "తిరస్కరించు"
-#: actions/apioauthauthorize.php:344
+#: actions/apioauthauthorize.php:334
msgid "Allow"
msgstr "అనుమతించు"
-#: actions/apioauthauthorize.php:361
+#: actions/apioauthauthorize.php:351
msgid "Allow or deny access to your account information."
msgstr ""
@@ -579,14 +592,12 @@ msgid "No such notice."
msgstr "అటువంటి సందేశమేమీ లేదు."
#: actions/apistatusesretweet.php:83
-#, fuzzy
msgid "Cannot repeat your own notice."
-msgstr "ఈ లైసెన్సుకి అంగీకరించకపోతే మీరు నమోదుచేసుకోలేరు."
+msgstr "మీ నోటీసుని మీరే పునరావృతించలేరు."
#: actions/apistatusesretweet.php:91
-#, fuzzy
msgid "Already repeated that notice."
-msgstr "ఈ నోటీసుని తొలగించు"
+msgstr "ఇప్పటికే ఆ నోటీసుని పునరావృతించారు."
#: actions/apistatusesshow.php:138
msgid "Status deleted."
@@ -733,8 +744,8 @@ msgstr "అసలు"
msgid "Preview"
msgstr "మునుజూపు"
-#: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:608
+#: actions/avatarsettings.php:149 actions/showapplication.php:252
+#: lib/deleteuserform.php:66 lib/noticelist.php:624
msgid "Delete"
msgstr "తొలగించు"
@@ -781,8 +792,9 @@ msgid ""
"will not be notified of any @-replies from them."
msgstr ""
-#: actions/block.php:143 actions/deletenotice.php:145
-#: actions/deleteuser.php:147 actions/groupblock.php:178
+#: actions/block.php:143 actions/deleteapplication.php:153
+#: actions/deletenotice.php:145 actions/deleteuser.php:147
+#: actions/groupblock.php:178
msgid "No"
msgstr "కాదు"
@@ -790,9 +802,9 @@ msgstr "కాదు"
msgid "Do not block this user"
msgstr "ఈ వాడుకరిని నిరోధించకు"
-#: actions/block.php:144 actions/deletenotice.php:146
-#: actions/deleteuser.php:148 actions/groupblock.php:179
-#: lib/repeatform.php:132
+#: actions/block.php:144 actions/deleteapplication.php:158
+#: actions/deletenotice.php:146 actions/deleteuser.php:148
+#: actions/groupblock.php:179 lib/repeatform.php:132
msgid "Yes"
msgstr "అవును"
@@ -898,6 +910,46 @@ msgstr "సంభాషణ"
msgid "Notices"
msgstr "సందేశాలు"
+#: actions/deleteapplication.php:63
+msgid "You must be logged in to delete an application."
+msgstr "ఉపకరణాలని తొలగించడానికి మీరు ప్రవేశించి ఉండాలి."
+
+#: actions/deleteapplication.php:71
+msgid "Application not found."
+msgstr "ఉపకరణం కనబడలేదు."
+
+#: actions/deleteapplication.php:78 actions/editapplication.php:77
+#: actions/showapplication.php:94
+msgid "You are not the owner of this application."
+msgstr "మీరు ఈ ఉపకరణం యొక్క యజమాని కాదు."
+
+#: actions/deleteapplication.php:102 actions/editapplication.php:127
+#: actions/newapplication.php:110 actions/showapplication.php:118
+#: lib/action.php:1195
+msgid "There was a problem with your session token."
+msgstr ""
+
+#: actions/deleteapplication.php:123 actions/deleteapplication.php:147
+msgid "Delete application"
+msgstr "ఉపకరణ తొలగింపు"
+
+#: actions/deleteapplication.php:149
+msgid ""
+"Are you sure you want to delete this application? This will clear all data "
+"about the application from the database, including all existing user "
+"connections."
+msgstr ""
+"మీరు నిజంగానే ఈ ఉపకరణాన్ని తొలగించాలనుకుంటున్నారా? ఇది ఆ ఉపకరణం గురించి భోగట్టాని, ప్రస్తుత "
+"వాడుకరుల అనుసంధానాలతో సహా, డాటాబేసు నుండి తొలగిస్తుంది."
+
+#: actions/deleteapplication.php:156
+msgid "Do not delete this application"
+msgstr "ఈ ఉపకరణాన్ని తొలగించకు"
+
+#: actions/deleteapplication.php:160
+msgid "Delete this application"
+msgstr "ఈ ఉపకరణాన్ని తొలగించు"
+
#: actions/deletenotice.php:67 actions/disfavor.php:61 actions/favor.php:62
#: actions/groupblock.php:61 actions/groupunblock.php:61 actions/logout.php:69
#: actions/makeadmin.php:61 actions/newmessage.php:87 actions/newnotice.php:89
@@ -930,7 +982,7 @@ msgstr "మీరు నిజంగానే ఈ నోటీసుని త
msgid "Do not delete this notice"
msgstr "ఈ నోటీసుని తొలగించకు"
-#: actions/deletenotice.php:146 lib/noticelist.php:608
+#: actions/deletenotice.php:146 lib/noticelist.php:624
msgid "Delete this notice"
msgstr "ఈ నోటీసుని తొలగించు"
@@ -1072,7 +1124,7 @@ msgstr "ఈ నోటీసు ఇష్టాంశం కాదు!"
msgid "Add to favorites"
msgstr "ఇష్టాంశాలకు చేర్చు"
-#: actions/doc.php:155
+#: actions/doc.php:158
#, fuzzy, php-format
msgid "No such document \"%s\""
msgstr "అటువంటి పత్రమేమీ లేదు."
@@ -1086,20 +1138,11 @@ msgstr "ఉపకరణాన్ని మార్చు"
msgid "You must be logged in to edit an application."
msgstr "ఉపకరణాలని మార్చడానికి మీరు ప్రవేశించి ఉండాలి."
-#: actions/editapplication.php:77 actions/showapplication.php:94
-msgid "You are not the owner of this application."
-msgstr "మీరు ఈ ఉపకరణం యొక్క యజమాని కాదు."
-
-#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:163
+#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:166
#: actions/showapplication.php:87
msgid "No such application."
msgstr "అటువంటి ఉపకరణం లేదు."
-#: actions/editapplication.php:127 actions/newapplication.php:110
-#: actions/showapplication.php:118 lib/action.php:1195
-msgid "There was a problem with your session token."
-msgstr ""
-
#: actions/editapplication.php:161
msgid "Use this form to edit your application."
msgstr "మీ ఉపకరణాన్ని మార్చడానికి ఈ ఫారాన్ని ఉపయోగించండి."
@@ -1108,44 +1151,49 @@ msgstr "మీ ఉపకరణాన్ని మార్చడానికి
msgid "Name is required."
msgstr "పేరు తప్పనిసరి."
-#: actions/editapplication.php:180 actions/newapplication.php:162
+#: actions/editapplication.php:180 actions/newapplication.php:165
msgid "Name is too long (max 255 chars)."
msgstr "పేరు చాలా పెద్దగా ఉంది (గరిష్ఠంగా 255 అక్షరాలు)."
-#: actions/editapplication.php:183 actions/newapplication.php:165
+#: actions/editapplication.php:183 actions/newapplication.php:162
+#, fuzzy
+msgid "Name already in use. Try another one."
+msgstr "ఆ పేరుని ఇప్పటికే వాడుతున్నారు. మరోటి ప్రయత్నించండి."
+
+#: actions/editapplication.php:186 actions/newapplication.php:168
msgid "Description is required."
msgstr "వివరణ తప్పనిసరి."
-#: actions/editapplication.php:191
+#: actions/editapplication.php:194
msgid "Source URL is too long."
msgstr ""
-#: actions/editapplication.php:197 actions/newapplication.php:182
+#: actions/editapplication.php:200 actions/newapplication.php:185
#, fuzzy
msgid "Source URL is not valid."
msgstr "హోమ్ పేజీ URL సరైనది కాదు."
-#: actions/editapplication.php:200 actions/newapplication.php:185
+#: actions/editapplication.php:203 actions/newapplication.php:188
msgid "Organization is required."
msgstr "సంస్థ తప్పనిసరి."
-#: actions/editapplication.php:203 actions/newapplication.php:188
+#: actions/editapplication.php:206 actions/newapplication.php:191
msgid "Organization is too long (max 255 chars)."
msgstr "సంస్థ పేరు మరీ పెద్దగా ఉంది (255 అక్షరాలు గరిష్ఠం)."
-#: actions/editapplication.php:206 actions/newapplication.php:191
+#: actions/editapplication.php:209 actions/newapplication.php:194
msgid "Organization homepage is required."
msgstr ""
-#: actions/editapplication.php:215 actions/newapplication.php:203
+#: actions/editapplication.php:218 actions/newapplication.php:206
msgid "Callback is too long."
msgstr ""
-#: actions/editapplication.php:222 actions/newapplication.php:212
+#: actions/editapplication.php:225 actions/newapplication.php:215
msgid "Callback URL is not valid."
msgstr ""
-#: actions/editapplication.php:255
+#: actions/editapplication.php:258
#, fuzzy
msgid "Could not update application."
msgstr "గుంపుని తాజాకరించలేకున్నాం."
@@ -1651,6 +1699,10 @@ msgid ""
"for one](%%%%action.groupsearch%%%%) or [start your own!](%%%%action.newgroup"
"%%%%)"
msgstr ""
+"ఒకే రకమైన ఆసక్తులు ఉన్న వ్యక్తులు కలుసుకోడానికి మరియు మాట్లాడుకోడానికి %%%%site.name%%%% "
+"గుంపులు వీలుకల్పిస్తాయి. ఒక గుంపులో చేరిన తర్వాత మీరు \"!groupname\" అన్న సంకేతం ద్వారా ఆ "
+"గుంపు లోని సభ్యులందరికీ సందేశాలని పంపించవచ్చు. మీకు నచ్చిన గుంపు కనబడలేదా? [దాని కోసం వెతకండి](%%"
+"%%action.groupsearch%%%%) లేదా [మీరే కొత్తది సృష్టించండి!](%%%%action.newgroup%%%%)"
#: actions/groups.php:107 actions/usergroups.php:124 lib/groupeditform.php:122
msgid "Create a new group"
@@ -2014,11 +2066,11 @@ msgstr "ఉపకరణాలని నమోదుచేసుకోడాన
msgid "Use this form to register a new application."
msgstr "కొత్త ఉపకరణాన్ని నమోదుచేసుకోడానికి ఈ ఫారాన్ని ఉపయోగించండి."
-#: actions/newapplication.php:173
+#: actions/newapplication.php:176
msgid "Source URL is required."
msgstr ""
-#: actions/newapplication.php:255 actions/newapplication.php:264
+#: actions/newapplication.php:258 actions/newapplication.php:267
#, fuzzy
msgid "Could not create application."
msgstr "మారుపేర్లని సృష్టించలేకపోయాం."
@@ -2150,28 +2202,28 @@ msgstr "మీరు నమోదు చేసివున్న ఉపకరణ
msgid "You have not registered any applications yet."
msgstr ""
-#: actions/oauthconnectionssettings.php:71
+#: actions/oauthconnectionssettings.php:72
msgid "Connected applications"
msgstr "సంధానిత ఉపకరణాలు"
-#: actions/oauthconnectionssettings.php:87
+#: actions/oauthconnectionssettings.php:83
msgid "You have allowed the following applications to access you account."
msgstr ""
-#: actions/oauthconnectionssettings.php:170
+#: actions/oauthconnectionssettings.php:175
msgid "You are not a user of that application."
msgstr "మీరు ఆ ఉపకరణం యొక్క వాడుకరి కాదు."
-#: actions/oauthconnectionssettings.php:180
+#: actions/oauthconnectionssettings.php:186
msgid "Unable to revoke access for app: "
msgstr ""
-#: actions/oauthconnectionssettings.php:192
+#: actions/oauthconnectionssettings.php:198
#, php-format
msgid "You have not authorized any applications to use your account."
msgstr ""
-#: actions/oauthconnectionssettings.php:205
+#: actions/oauthconnectionssettings.php:211
msgid "Developers can edit the registration settings for their applications "
msgstr ""
@@ -2679,39 +2731,39 @@ msgstr "ప్రజా కాలరేఖ, పేజీ %d"
msgid "Public timeline"
msgstr "ప్రజా కాలరేఖ"
-#: actions/public.php:151
+#: actions/public.php:159
#, fuzzy
msgid "Public Stream Feed (RSS 1.0)"
msgstr "ప్రజా వాహిని ఫీడు"
-#: actions/public.php:155
+#: actions/public.php:163
#, fuzzy
msgid "Public Stream Feed (RSS 2.0)"
msgstr "ప్రజా వాహిని ఫీడు"
-#: actions/public.php:159
+#: actions/public.php:167
#, fuzzy
msgid "Public Stream Feed (Atom)"
msgstr "ప్రజా వాహిని ఫీడు"
-#: actions/public.php:179
+#: actions/public.php:187
#, php-format
msgid ""
"This is the public timeline for %%site.name%% but no one has posted anything "
"yet."
msgstr ""
-#: actions/public.php:182
+#: actions/public.php:190
msgid "Be the first to post!"
msgstr ""
-#: actions/public.php:186
+#: actions/public.php:194
#, php-format
msgid ""
"Why not [register an account](%%action.register%%) and be the first to post!"
msgstr ""
-#: actions/public.php:233
+#: actions/public.php:241
#, php-format
msgid ""
"This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2720,7 +2772,7 @@ msgid ""
"friends, family, and colleagues! ([Read more](%%doc.help%%))"
msgstr ""
-#: actions/public.php:238
+#: actions/public.php:246
#, php-format
msgid ""
"This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -3069,7 +3121,7 @@ msgstr "ఈ లైసెన్సుకి అంగీకరించకపో
msgid "You already repeated that notice."
msgstr "మీరు ఇప్పటికే ఆ వాడుకరిని నిరోధించారు."
-#: actions/repeat.php:114 lib/noticelist.php:626
+#: actions/repeat.php:114 lib/noticelist.php:642
#, fuzzy
msgid "Repeated"
msgstr "సృష్టితం"
@@ -3133,6 +3185,10 @@ msgstr ""
msgid "Replies to %1$s on %2$s!"
msgstr "%sకి స్పందనలు"
+#: actions/rsd.php:146 actions/version.php:157
+msgid "StatusNet"
+msgstr "స్టేటస్‌నెట్"
+
#: actions/sandbox.php:65 actions/unsandbox.php:65
#, fuzzy
msgid "You cannot sandbox users on this site."
@@ -3179,77 +3235,82 @@ msgstr "సైటు అమరికలను భద్రపరచు"
msgid "You must be logged in to view an application."
msgstr "గుంపుని వదిలివెళ్ళడానికి మీరు ప్రవేశించి ఉండాలి."
-#: actions/showapplication.php:158
+#: actions/showapplication.php:157
msgid "Application profile"
msgstr ""
-#: actions/showapplication.php:160 lib/applicationeditform.php:180
+#: actions/showapplication.php:159 lib/applicationeditform.php:180
msgid "Icon"
msgstr "ప్రతీకం"
-#: actions/showapplication.php:170 actions/version.php:195
+#: actions/showapplication.php:169 actions/version.php:195
#: lib/applicationeditform.php:195
msgid "Name"
msgstr "పేరు"
-#: actions/showapplication.php:179 lib/applicationeditform.php:222
+#: actions/showapplication.php:178 lib/applicationeditform.php:222
msgid "Organization"
msgstr "సంస్ధ"
-#: actions/showapplication.php:188 actions/version.php:198
+#: actions/showapplication.php:187 actions/version.php:198
#: lib/applicationeditform.php:209 lib/groupeditform.php:172
msgid "Description"
msgstr "వివరణ"
-#: actions/showapplication.php:193 actions/showgroup.php:429
+#: actions/showapplication.php:192 actions/showgroup.php:429
#: lib/profileaction.php:174
msgid "Statistics"
msgstr "గణాంకాలు"
-#: actions/showapplication.php:204
+#: actions/showapplication.php:203
#, php-format
-msgid "created by %1$s - %2$s access by default - %3$d users"
+msgid "Created by %1$s - %2$s access by default - %3$d users"
msgstr ""
-#: actions/showapplication.php:214
+#: actions/showapplication.php:213
msgid "Application actions"
msgstr "ఉపకరణ చర్యలు"
-#: actions/showapplication.php:233
+#: actions/showapplication.php:236
msgid "Reset key & secret"
msgstr ""
-#: actions/showapplication.php:241
+#: actions/showapplication.php:261
msgid "Application info"
msgstr "ఉపకరణ సమాచారం"
-#: actions/showapplication.php:243
+#: actions/showapplication.php:263
msgid "Consumer key"
msgstr ""
-#: actions/showapplication.php:248
+#: actions/showapplication.php:268
msgid "Consumer secret"
msgstr ""
-#: actions/showapplication.php:253
+#: actions/showapplication.php:273
msgid "Request token URL"
msgstr ""
-#: actions/showapplication.php:258
+#: actions/showapplication.php:278
msgid "Access token URL"
msgstr ""
-#: actions/showapplication.php:263
+#: actions/showapplication.php:283
#, fuzzy
msgid "Authorize URL"
msgstr "రచయిత"
-#: actions/showapplication.php:268
+#: actions/showapplication.php:288
msgid ""
"Note: We support HMAC-SHA1 signatures. We do not support the plaintext "
"signature method."
msgstr ""
+#: actions/showapplication.php:309
+#, fuzzy
+msgid "Are you sure you want to reset your consumer key and secret?"
+msgstr "మీరు నిజంగానే ఈ నోటీసుని తొలగించాలనుకుంటున్నారా?"
+
#: actions/showfavorites.php:79
#, php-format
msgid "%1$s's favorite notices, page %2$d"
@@ -3449,26 +3510,26 @@ msgstr "%s యొక్క సందేశముల ఫీడు"
msgid "FOAF for %s"
msgstr ""
-#: actions/showstream.php:191
+#: actions/showstream.php:200
#, fuzzy, php-format
msgid "This is the timeline for %1$s but %2$s hasn't posted anything yet."
msgstr "ఇది %s మరియు మిత్రుల కాలరేఖ కానీ ఇంకా ఎవరూ ఏమీ రాయలేదు."
-#: actions/showstream.php:196
+#: actions/showstream.php:205
msgid ""
"Seen anything interesting recently? You haven't posted any notices yet, now "
"would be a good time to start :)"
msgstr ""
"ఈమధ్యే ఏదైనా ఆసక్తికరమైనది చూసారా? మీరు ఇంకా నోటీసులేమీ వ్రాయలేదు, మొదలుపెట్టడానికి ఇదే మంచి సమయం :)"
-#: actions/showstream.php:198
+#: actions/showstream.php:207
#, php-format
msgid ""
"You can try to nudge %1$s or [post something to his or her attention](%%%%"
"action.newnotice%%%%?status_textarea=%2$s)."
msgstr ""
-#: actions/showstream.php:234
+#: actions/showstream.php:243
#, php-format
msgid ""
"**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3477,7 +3538,7 @@ msgid ""
"follow **%s**'s notices and many more! ([Read more](%%%%doc.help%%%%))"
msgstr ""
-#: actions/showstream.php:239
+#: actions/showstream.php:248
#, php-format
msgid ""
"**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3485,7 +3546,7 @@ msgid ""
"[StatusNet](http://status.net/) tool. "
msgstr ""
-#: actions/showstream.php:296
+#: actions/showstream.php:305
#, php-format
msgid "Repeat of %s"
msgstr "%s యొక్క పునరావృతం"
@@ -3765,12 +3826,12 @@ msgstr "%1$s చందాదార్లు, పేజీ %2$d"
#: actions/subscribers.php:63
msgid "These are the people who listen to your notices."
-msgstr ""
+msgstr "వీళ్ళు మీ నోటీసులని వినే ప్రజలు."
#: actions/subscribers.php:67
#, php-format
msgid "These are the people who listen to %s's notices."
-msgstr ""
+msgstr "వీళ్ళు %s యొక్క నోటీసులని వినే ప్రజలు."
#: actions/subscribers.php:108
msgid ""
@@ -4001,7 +4062,7 @@ msgstr "వాడుకరులను కొత్త వారిని ఆహ
#: actions/userauthorization.php:105
msgid "Authorize subscription"
-msgstr ""
+msgstr "చందాని అధీకరించండి"
#: actions/userauthorization.php:110
msgid ""
@@ -4137,10 +4198,6 @@ msgid ""
"Inc. and contributors."
msgstr ""
-#: actions/version.php:157
-msgid "StatusNet"
-msgstr "స్టేటస్‌నెట్"
-
#: actions/version.php:161
msgid "Contributors"
msgstr ""
@@ -4260,22 +4317,22 @@ msgstr "ఈ సైటులో నోటీసులు రాయడం ను
msgid "Problem saving notice."
msgstr "సందేశాన్ని భద్రపరచడంలో పొరపాటు."
-#: classes/Notice.php:790
+#: classes/Notice.php:788
#, fuzzy
msgid "Problem saving group inbox."
msgstr "సందేశాన్ని భద్రపరచడంలో పొరపాటు."
-#: classes/Notice.php:850
+#: classes/Notice.php:848
#, php-format
msgid "DB error inserting reply: %s"
msgstr ""
-#: classes/Notice.php:1233
+#: classes/Notice.php:1231
#, fuzzy, php-format
msgid "RT @%1$s %2$s"
msgstr "%1$s (%2$s)"
-#: classes/User.php:382
+#: classes/User.php:385
#, php-format
msgid "Welcome to %1$s, @%2$s!"
msgstr "@%2$s, %1$sకి స్వాగతం!"
@@ -4556,11 +4613,11 @@ msgstr "SMS నిర్ధారణ"
msgid "Sessions configuration"
msgstr "రూపకల్పన స్వరూపణం"
-#: lib/apiauth.php:99
+#: lib/apiauth.php:95
msgid "API resource requires read-write access, but you only have read access."
msgstr ""
-#: lib/apiauth.php:279
+#: lib/apiauth.php:273
#, php-format
msgid "Failed API auth attempt, nickname = %1$s, proxy = %2$s, ip = %3$s"
msgstr ""
@@ -4929,20 +4986,20 @@ msgid ""
"tracking - not yet implemented.\n"
msgstr ""
-#: lib/common.php:131
+#: lib/common.php:135
#, fuzzy
msgid "No configuration file found. "
msgstr "నిర్ధారణ సంకేతం లేదు."
-#: lib/common.php:132
+#: lib/common.php:136
msgid "I looked for configuration files in the following places: "
msgstr ""
-#: lib/common.php:134
+#: lib/common.php:138
msgid "You may wish to run the installer to fix this."
msgstr ""
-#: lib/common.php:135
+#: lib/common.php:139
msgid "Go to the installer."
msgstr ""
@@ -5523,24 +5580,24 @@ msgstr "ప"
msgid "at"
msgstr ""
-#: lib/noticelist.php:531
+#: lib/noticelist.php:547
msgid "in context"
msgstr "సందర్భంలో"
-#: lib/noticelist.php:556
+#: lib/noticelist.php:572
#, fuzzy
msgid "Repeated by"
msgstr "సృష్టితం"
-#: lib/noticelist.php:582
+#: lib/noticelist.php:598
msgid "Reply to this notice"
msgstr "ఈ నోటీసుపై స్పందించండి"
-#: lib/noticelist.php:583
+#: lib/noticelist.php:599
msgid "Reply"
msgstr "స్పందించండి"
-#: lib/noticelist.php:625
+#: lib/noticelist.php:641
#, fuzzy
msgid "Notice repeated"
msgstr "నోటీసుని తొలగించాం."
@@ -5687,6 +5744,10 @@ msgstr "ఈ నోటీసుపై స్పందించండి"
msgid "Repeat this notice"
msgstr "ఈ నోటీసుపై స్పందించండి"
+#: lib/router.php:665
+msgid "No single user defined for single-user mode."
+msgstr ""
+
#: lib/sandboxform.php:67
msgid "Sandbox"
msgstr ""
@@ -5860,47 +5921,47 @@ msgstr "సందేశం"
msgid "Moderate"
msgstr ""
-#: lib/util.php:868
+#: lib/util.php:867
msgid "a few seconds ago"
msgstr "కొన్ని క్షణాల క్రితం"
-#: lib/util.php:870
+#: lib/util.php:869
msgid "about a minute ago"
msgstr "ఓ నిమిషం క్రితం"
-#: lib/util.php:872
+#: lib/util.php:871
#, php-format
msgid "about %d minutes ago"
msgstr "%d నిమిషాల క్రితం"
-#: lib/util.php:874
+#: lib/util.php:873
msgid "about an hour ago"
msgstr "ఒక గంట క్రితం"
-#: lib/util.php:876
+#: lib/util.php:875
#, php-format
msgid "about %d hours ago"
msgstr "%d గంటల క్రితం"
-#: lib/util.php:878
+#: lib/util.php:877
msgid "about a day ago"
msgstr "ఓ రోజు క్రితం"
-#: lib/util.php:880
+#: lib/util.php:879
#, php-format
msgid "about %d days ago"
msgstr "%d రోజుల క్రితం"
-#: lib/util.php:882
+#: lib/util.php:881
msgid "about a month ago"
msgstr "ఓ నెల క్రితం"
-#: lib/util.php:884
+#: lib/util.php:883
#, php-format
msgid "about %d months ago"
msgstr "%d నెలల క్రితం"
-#: lib/util.php:886
+#: lib/util.php:885
msgid "about a year ago"
msgstr "ఒక సంవత్సరం క్రితం"
diff --git a/locale/tr/LC_MESSAGES/statusnet.po b/locale/tr/LC_MESSAGES/statusnet.po
index 57d10e80f..9506731a4 100644
--- a/locale/tr/LC_MESSAGES/statusnet.po
+++ b/locale/tr/LC_MESSAGES/statusnet.po
@@ -9,12 +9,12 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-01-30 23:41+0000\n"
-"PO-Revision-Date: 2010-01-30 23:42:51+0000\n"
+"POT-Creation-Date: 2010-02-04 10:31+0000\n"
+"PO-Revision-Date: 2010-02-04 10:33:40+0000\n"
"Language-Team: Turkish\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.16alpha (r61734); Translate extension (2010-01-16)\n"
+"X-Generator: MediaWiki 1.16alpha (r61969); Translate extension (2010-01-16)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: tr\n"
"X-Message-Group: out-statusnet\n"
@@ -100,7 +100,7 @@ msgstr "Böyle bir durum mesajı yok."
#: actions/favoritesrss.php:74 actions/foaf.php:40 actions/foaf.php:58
#: actions/microsummary.php:62 actions/newmessage.php:116 actions/otp.php:76
#: actions/remotesubscribe.php:145 actions/remotesubscribe.php:154
-#: actions/replies.php:73 actions/repliesrss.php:38
+#: actions/replies.php:73 actions/repliesrss.php:38 actions/rsd.php:116
#: actions/showfavorites.php:105 actions/userbyid.php:74
#: actions/usergroups.php:91 actions/userrss.php:38 actions/xrds.php:71
#: lib/command.php:163 lib/command.php:302 lib/command.php:355
@@ -157,7 +157,7 @@ msgid ""
"his or her attention](%%%%action.newnotice%%%%?status_textarea=%3$s)."
msgstr ""
-#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:202
+#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:211
#, php-format
msgid ""
"Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
@@ -393,8 +393,8 @@ msgstr "Takma ad kullanımda. Başka bir tane deneyin."
msgid "Not a valid nickname."
msgstr "Geçersiz bir takma ad."
-#: actions/apigroupcreate.php:196 actions/editapplication.php:212
-#: actions/editgroup.php:195 actions/newapplication.php:200
+#: actions/apigroupcreate.php:196 actions/editapplication.php:215
+#: actions/editgroup.php:195 actions/newapplication.php:203
#: actions/newgroup.php:139 actions/profilesettings.php:222
#: actions/register.php:217
msgid "Homepage is not a valid URL."
@@ -406,8 +406,8 @@ msgstr "Başlangıç sayfası adresi geçerli bir URL değil."
msgid "Full name is too long (max 255 chars)."
msgstr "Tam isim çok uzun (azm: 255 karakter)."
-#: actions/apigroupcreate.php:213 actions/editapplication.php:187
-#: actions/newapplication.php:169
+#: actions/apigroupcreate.php:213 actions/editapplication.php:190
+#: actions/newapplication.php:172
#, fuzzy, php-format
msgid "Description is too long (max %d chars)."
msgstr "Hakkında bölümü çok uzun (azm 140 karakter)."
@@ -487,18 +487,23 @@ msgstr ""
msgid "groups on %s"
msgstr ""
-#: actions/apioauthauthorize.php:108 actions/apioauthauthorize.php:114
-msgid "Bad request."
+#: actions/apioauthauthorize.php:101
+msgid "No oauth_token parameter provided."
msgstr ""
-#: actions/apioauthauthorize.php:134 actions/avatarsettings.php:268
+#: actions/apioauthauthorize.php:106
+#, fuzzy
+msgid "Invalid token."
+msgstr "Geçersiz büyüklük."
+
+#: actions/apioauthauthorize.php:123 actions/avatarsettings.php:268
#: actions/deletenotice.php:157 actions/disfavor.php:74
-#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:50
+#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:54
#: actions/groupblock.php:66 actions/grouplogo.php:309
#: actions/groupunblock.php:66 actions/imsettings.php:206
#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
-#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:139
+#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:135
#: actions/othersettings.php:145 actions/passwordsettings.php:138
#: actions/profilesettings.php:194 actions/recoverpassword.php:337
#: actions/register.php:165 actions/remotesubscribe.php:77
@@ -509,76 +514,84 @@ msgstr ""
msgid "There was a problem with your session token. Try again, please."
msgstr ""
-#: actions/apioauthauthorize.php:146
+#: actions/apioauthauthorize.php:135
#, fuzzy
msgid "Invalid nickname / password!"
msgstr "Geçersiz kullanıcı adı veya parola."
-#: actions/apioauthauthorize.php:170
+#: actions/apioauthauthorize.php:159
#, fuzzy
msgid "Database error deleting OAuth application user."
msgstr "Kullanıcı ayarlamada hata oluştu."
-#: actions/apioauthauthorize.php:196
+#: actions/apioauthauthorize.php:185
#, fuzzy
msgid "Database error inserting OAuth application user."
msgstr "Cevap eklenirken veritabanı hatası: %s"
-#: actions/apioauthauthorize.php:231
+#: actions/apioauthauthorize.php:214
#, php-format
msgid ""
"The request token %s has been authorized. Please exchange it for an access "
"token."
msgstr ""
-#: actions/apioauthauthorize.php:241
+#: actions/apioauthauthorize.php:227
#, php-format
-msgid "The request token %s has been denied."
+msgid "The request token %s has been denied and revoked."
msgstr ""
-#: actions/apioauthauthorize.php:246 actions/avatarsettings.php:281
+#: actions/apioauthauthorize.php:232 actions/avatarsettings.php:281
#: actions/designadminpanel.php:103 actions/editapplication.php:139
#: actions/emailsettings.php:256 actions/grouplogo.php:319
#: actions/imsettings.php:220 actions/newapplication.php:121
-#: actions/oauthconnectionssettings.php:151 actions/recoverpassword.php:44
+#: actions/oauthconnectionssettings.php:147 actions/recoverpassword.php:44
#: actions/smssettings.php:248 lib/designsettings.php:304
msgid "Unexpected form submission."
msgstr "Beklenmeğen form girdisi."
-#: actions/apioauthauthorize.php:273
+#: actions/apioauthauthorize.php:259
msgid "An application would like to connect to your account"
msgstr ""
-#: actions/apioauthauthorize.php:290
+#: actions/apioauthauthorize.php:276
msgid "Allow or deny access"
msgstr ""
-#: actions/apioauthauthorize.php:320 lib/action.php:441
+#: actions/apioauthauthorize.php:292
+#, php-format
+msgid ""
+"The application <strong>%1$s</strong> by <strong>%2$s</strong> would like "
+"the ability to <strong>%3$s</strong> your %4$s account data. You should only "
+"give access to your %4$s account to third parties you trust."
+msgstr ""
+
+#: actions/apioauthauthorize.php:310 lib/action.php:441
#, fuzzy
msgid "Account"
msgstr "Hakkında"
-#: actions/apioauthauthorize.php:323 actions/login.php:230
+#: actions/apioauthauthorize.php:313 actions/login.php:230
#: actions/profilesettings.php:106 actions/register.php:424
#: actions/showgroup.php:236 actions/tagother.php:94 lib/groupeditform.php:152
#: lib/userprofile.php:131
msgid "Nickname"
msgstr "Takma ad"
-#: actions/apioauthauthorize.php:326 actions/login.php:233
+#: actions/apioauthauthorize.php:316 actions/login.php:233
#: actions/register.php:429 lib/accountsettingsaction.php:116
msgid "Password"
msgstr "Parola"
-#: actions/apioauthauthorize.php:338
+#: actions/apioauthauthorize.php:328
msgid "Deny"
msgstr ""
-#: actions/apioauthauthorize.php:344
+#: actions/apioauthauthorize.php:334
msgid "Allow"
msgstr ""
-#: actions/apioauthauthorize.php:361
+#: actions/apioauthauthorize.php:351
msgid "Allow or deny access to your account information."
msgstr ""
@@ -755,8 +768,8 @@ msgstr ""
msgid "Preview"
msgstr ""
-#: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:608
+#: actions/avatarsettings.php:149 actions/showapplication.php:252
+#: lib/deleteuserform.php:66 lib/noticelist.php:624
msgid "Delete"
msgstr ""
@@ -806,8 +819,9 @@ msgid ""
"will not be notified of any @-replies from them."
msgstr ""
-#: actions/block.php:143 actions/deletenotice.php:145
-#: actions/deleteuser.php:147 actions/groupblock.php:178
+#: actions/block.php:143 actions/deleteapplication.php:153
+#: actions/deletenotice.php:145 actions/deleteuser.php:147
+#: actions/groupblock.php:178
msgid "No"
msgstr ""
@@ -816,9 +830,9 @@ msgstr ""
msgid "Do not block this user"
msgstr "Böyle bir kullanıcı yok."
-#: actions/block.php:144 actions/deletenotice.php:146
-#: actions/deleteuser.php:148 actions/groupblock.php:179
-#: lib/repeatform.php:132
+#: actions/block.php:144 actions/deleteapplication.php:158
+#: actions/deletenotice.php:146 actions/deleteuser.php:148
+#: actions/groupblock.php:179 lib/repeatform.php:132
msgid "Yes"
msgstr ""
@@ -928,6 +942,50 @@ msgstr "Yer"
msgid "Notices"
msgstr "Durum mesajları"
+#: actions/deleteapplication.php:63
+#, fuzzy
+msgid "You must be logged in to delete an application."
+msgstr "Kullanıcı güncellenemedi."
+
+#: actions/deleteapplication.php:71
+#, fuzzy
+msgid "Application not found."
+msgstr "Bu durum mesajının ait oldugu kullanıcı profili yok"
+
+#: actions/deleteapplication.php:78 actions/editapplication.php:77
+#: actions/showapplication.php:94
+#, fuzzy
+msgid "You are not the owner of this application."
+msgstr "Bize o profili yollamadınız"
+
+#: actions/deleteapplication.php:102 actions/editapplication.php:127
+#: actions/newapplication.php:110 actions/showapplication.php:118
+#: lib/action.php:1195
+msgid "There was a problem with your session token."
+msgstr ""
+
+#: actions/deleteapplication.php:123 actions/deleteapplication.php:147
+#, fuzzy
+msgid "Delete application"
+msgstr "Böyle bir durum mesajı yok."
+
+#: actions/deleteapplication.php:149
+msgid ""
+"Are you sure you want to delete this application? This will clear all data "
+"about the application from the database, including all existing user "
+"connections."
+msgstr ""
+
+#: actions/deleteapplication.php:156
+#, fuzzy
+msgid "Do not delete this application"
+msgstr "Böyle bir durum mesajı yok."
+
+#: actions/deleteapplication.php:160
+#, fuzzy
+msgid "Delete this application"
+msgstr "Kendinizi ve ilgi alanlarınızı 140 karakter ile anlatın"
+
#: actions/deletenotice.php:67 actions/disfavor.php:61 actions/favor.php:62
#: actions/groupblock.php:61 actions/groupunblock.php:61 actions/logout.php:69
#: actions/makeadmin.php:61 actions/newmessage.php:87 actions/newnotice.php:89
@@ -961,7 +1019,7 @@ msgstr ""
msgid "Do not delete this notice"
msgstr "Böyle bir durum mesajı yok."
-#: actions/deletenotice.php:146 lib/noticelist.php:608
+#: actions/deletenotice.php:146 lib/noticelist.php:624
msgid "Delete this notice"
msgstr ""
@@ -1114,7 +1172,7 @@ msgstr ""
msgid "Add to favorites"
msgstr ""
-#: actions/doc.php:155
+#: actions/doc.php:158
#, fuzzy, php-format
msgid "No such document \"%s\""
msgstr "Böyle bir belge yok."
@@ -1128,22 +1186,12 @@ msgstr "Bu durum mesajının ait oldugu kullanıcı profili yok"
msgid "You must be logged in to edit an application."
msgstr ""
-#: actions/editapplication.php:77 actions/showapplication.php:94
-#, fuzzy
-msgid "You are not the owner of this application."
-msgstr "Bize o profili yollamadınız"
-
-#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:163
+#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:166
#: actions/showapplication.php:87
#, fuzzy
msgid "No such application."
msgstr "Böyle bir durum mesajı yok."
-#: actions/editapplication.php:127 actions/newapplication.php:110
-#: actions/showapplication.php:118 lib/action.php:1195
-msgid "There was a problem with your session token."
-msgstr ""
-
#: actions/editapplication.php:161
msgid "Use this form to edit your application."
msgstr ""
@@ -1152,47 +1200,52 @@ msgstr ""
msgid "Name is required."
msgstr ""
-#: actions/editapplication.php:180 actions/newapplication.php:162
+#: actions/editapplication.php:180 actions/newapplication.php:165
#, fuzzy
msgid "Name is too long (max 255 chars)."
msgstr "Tam isim çok uzun (azm: 255 karakter)."
-#: actions/editapplication.php:183 actions/newapplication.php:165
+#: actions/editapplication.php:183 actions/newapplication.php:162
+#, fuzzy
+msgid "Name already in use. Try another one."
+msgstr "Takma ad kullanımda. Başka bir tane deneyin."
+
+#: actions/editapplication.php:186 actions/newapplication.php:168
#, fuzzy
msgid "Description is required."
msgstr "Abonelikler"
-#: actions/editapplication.php:191
+#: actions/editapplication.php:194
msgid "Source URL is too long."
msgstr ""
-#: actions/editapplication.php:197 actions/newapplication.php:182
+#: actions/editapplication.php:200 actions/newapplication.php:185
#, fuzzy
msgid "Source URL is not valid."
msgstr "Başlangıç sayfası adresi geçerli bir URL değil."
-#: actions/editapplication.php:200 actions/newapplication.php:185
+#: actions/editapplication.php:203 actions/newapplication.php:188
msgid "Organization is required."
msgstr ""
-#: actions/editapplication.php:203 actions/newapplication.php:188
+#: actions/editapplication.php:206 actions/newapplication.php:191
#, fuzzy
msgid "Organization is too long (max 255 chars)."
msgstr "Yer bilgisi çok uzun (azm: 255 karakter)."
-#: actions/editapplication.php:206 actions/newapplication.php:191
+#: actions/editapplication.php:209 actions/newapplication.php:194
msgid "Organization homepage is required."
msgstr ""
-#: actions/editapplication.php:215 actions/newapplication.php:203
+#: actions/editapplication.php:218 actions/newapplication.php:206
msgid "Callback is too long."
msgstr ""
-#: actions/editapplication.php:222 actions/newapplication.php:212
+#: actions/editapplication.php:225 actions/newapplication.php:215
msgid "Callback URL is not valid."
msgstr ""
-#: actions/editapplication.php:255
+#: actions/editapplication.php:258
#, fuzzy
msgid "Could not update application."
msgstr "Kullanıcı güncellenemedi."
@@ -2101,11 +2154,11 @@ msgstr ""
msgid "Use this form to register a new application."
msgstr ""
-#: actions/newapplication.php:173
+#: actions/newapplication.php:176
msgid "Source URL is required."
msgstr ""
-#: actions/newapplication.php:255 actions/newapplication.php:264
+#: actions/newapplication.php:258 actions/newapplication.php:267
#, fuzzy
msgid "Could not create application."
msgstr "Avatar bilgisi kaydedilemedi"
@@ -2234,29 +2287,29 @@ msgstr ""
msgid "You have not registered any applications yet."
msgstr ""
-#: actions/oauthconnectionssettings.php:71
+#: actions/oauthconnectionssettings.php:72
msgid "Connected applications"
msgstr ""
-#: actions/oauthconnectionssettings.php:87
+#: actions/oauthconnectionssettings.php:83
msgid "You have allowed the following applications to access you account."
msgstr ""
-#: actions/oauthconnectionssettings.php:170
+#: actions/oauthconnectionssettings.php:175
#, fuzzy
msgid "You are not a user of that application."
msgstr "Bize o profili yollamadınız"
-#: actions/oauthconnectionssettings.php:180
+#: actions/oauthconnectionssettings.php:186
msgid "Unable to revoke access for app: "
msgstr ""
-#: actions/oauthconnectionssettings.php:192
+#: actions/oauthconnectionssettings.php:198
#, php-format
msgid "You have not authorized any applications to use your account."
msgstr ""
-#: actions/oauthconnectionssettings.php:205
+#: actions/oauthconnectionssettings.php:211
msgid "Developers can edit the registration settings for their applications "
msgstr ""
@@ -2779,39 +2832,39 @@ msgstr "Genel zaman çizgisi"
msgid "Public timeline"
msgstr "Genel zaman çizgisi"
-#: actions/public.php:151
+#: actions/public.php:159
#, fuzzy
msgid "Public Stream Feed (RSS 1.0)"
msgstr "Genel Durum Akış RSS Beslemesi"
-#: actions/public.php:155
+#: actions/public.php:163
#, fuzzy
msgid "Public Stream Feed (RSS 2.0)"
msgstr "Genel Durum Akış RSS Beslemesi"
-#: actions/public.php:159
+#: actions/public.php:167
#, fuzzy
msgid "Public Stream Feed (Atom)"
msgstr "Genel Durum Akış RSS Beslemesi"
-#: actions/public.php:179
+#: actions/public.php:187
#, php-format
msgid ""
"This is the public timeline for %%site.name%% but no one has posted anything "
"yet."
msgstr ""
-#: actions/public.php:182
+#: actions/public.php:190
msgid "Be the first to post!"
msgstr ""
-#: actions/public.php:186
+#: actions/public.php:194
#, php-format
msgid ""
"Why not [register an account](%%action.register%%) and be the first to post!"
msgstr ""
-#: actions/public.php:233
+#: actions/public.php:241
#, php-format
msgid ""
"This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2820,7 +2873,7 @@ msgid ""
"friends, family, and colleagues! ([Read more](%%doc.help%%))"
msgstr ""
-#: actions/public.php:238
+#: actions/public.php:246
#, php-format
msgid ""
"This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -3162,7 +3215,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:626
+#: actions/repeat.php:114 lib/noticelist.php:642
#, fuzzy
msgid "Repeated"
msgstr "Yarat"
@@ -3224,6 +3277,11 @@ msgstr ""
msgid "Replies to %1$s on %2$s!"
msgstr "%s için cevaplar"
+#: actions/rsd.php:146 actions/version.php:157
+#, fuzzy
+msgid "StatusNet"
+msgstr "Avatar güncellendi."
+
#: actions/sandbox.php:65 actions/unsandbox.php:65
#, fuzzy
msgid "You cannot sandbox users on this site."
@@ -3269,80 +3327,84 @@ msgstr "Ayarlar"
msgid "You must be logged in to view an application."
msgstr ""
-#: actions/showapplication.php:158
+#: actions/showapplication.php:157
#, fuzzy
msgid "Application profile"
msgstr "Bu durum mesajının ait oldugu kullanıcı profili yok"
-#: actions/showapplication.php:160 lib/applicationeditform.php:180
+#: actions/showapplication.php:159 lib/applicationeditform.php:180
msgid "Icon"
msgstr ""
-#: actions/showapplication.php:170 actions/version.php:195
+#: actions/showapplication.php:169 actions/version.php:195
#: lib/applicationeditform.php:195
#, fuzzy
msgid "Name"
msgstr "Takma ad"
-#: actions/showapplication.php:179 lib/applicationeditform.php:222
+#: actions/showapplication.php:178 lib/applicationeditform.php:222
#, fuzzy
msgid "Organization"
msgstr "Yer"
-#: actions/showapplication.php:188 actions/version.php:198
+#: actions/showapplication.php:187 actions/version.php:198
#: lib/applicationeditform.php:209 lib/groupeditform.php:172
#, fuzzy
msgid "Description"
msgstr "Abonelikler"
-#: actions/showapplication.php:193 actions/showgroup.php:429
+#: actions/showapplication.php:192 actions/showgroup.php:429
#: lib/profileaction.php:174
msgid "Statistics"
msgstr "İstatistikler"
-#: actions/showapplication.php:204
+#: actions/showapplication.php:203
#, php-format
-msgid "created by %1$s - %2$s access by default - %3$d users"
+msgid "Created by %1$s - %2$s access by default - %3$d users"
msgstr ""
-#: actions/showapplication.php:214
+#: actions/showapplication.php:213
msgid "Application actions"
msgstr ""
-#: actions/showapplication.php:233
+#: actions/showapplication.php:236
msgid "Reset key & secret"
msgstr ""
-#: actions/showapplication.php:241
+#: actions/showapplication.php:261
msgid "Application info"
msgstr ""
-#: actions/showapplication.php:243
+#: actions/showapplication.php:263
msgid "Consumer key"
msgstr ""
-#: actions/showapplication.php:248
+#: actions/showapplication.php:268
msgid "Consumer secret"
msgstr ""
-#: actions/showapplication.php:253
+#: actions/showapplication.php:273
msgid "Request token URL"
msgstr ""
-#: actions/showapplication.php:258
+#: actions/showapplication.php:278
msgid "Access token URL"
msgstr ""
-#: actions/showapplication.php:263
+#: actions/showapplication.php:283
msgid "Authorize URL"
msgstr ""
-#: actions/showapplication.php:268
+#: actions/showapplication.php:288
msgid ""
"Note: We support HMAC-SHA1 signatures. We do not support the plaintext "
"signature method."
msgstr ""
+#: actions/showapplication.php:309
+msgid "Are you sure you want to reset your consumer key and secret?"
+msgstr ""
+
#: actions/showfavorites.php:79
#, fuzzy, php-format
msgid "%1$s's favorite notices, page %2$d"
@@ -3547,25 +3609,25 @@ msgstr "%s için durum RSS beslemesi"
msgid "FOAF for %s"
msgstr ""
-#: actions/showstream.php:191
+#: actions/showstream.php:200
#, php-format
msgid "This is the timeline for %1$s but %2$s hasn't posted anything yet."
msgstr ""
-#: actions/showstream.php:196
+#: actions/showstream.php:205
msgid ""
"Seen anything interesting recently? You haven't posted any notices yet, now "
"would be a good time to start :)"
msgstr ""
-#: actions/showstream.php:198
+#: actions/showstream.php:207
#, php-format
msgid ""
"You can try to nudge %1$s or [post something to his or her attention](%%%%"
"action.newnotice%%%%?status_textarea=%2$s)."
msgstr ""
-#: actions/showstream.php:234
+#: actions/showstream.php:243
#, php-format
msgid ""
"**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3574,7 +3636,7 @@ msgid ""
"follow **%s**'s notices and many more! ([Read more](%%%%doc.help%%%%))"
msgstr ""
-#: actions/showstream.php:239
+#: actions/showstream.php:248
#, php-format
msgid ""
"**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3582,7 +3644,7 @@ msgid ""
"[StatusNet](http://status.net/) tool. "
msgstr ""
-#: actions/showstream.php:296
+#: actions/showstream.php:305
#, fuzzy, php-format
msgid "Repeat of %s"
msgstr "%s için cevaplar"
@@ -4254,11 +4316,6 @@ msgid ""
"Inc. and contributors."
msgstr ""
-#: actions/version.php:157
-#, fuzzy
-msgid "StatusNet"
-msgstr "Avatar güncellendi."
-
#: actions/version.php:161
msgid "Contributors"
msgstr ""
@@ -4382,22 +4439,22 @@ msgstr ""
msgid "Problem saving notice."
msgstr "Durum mesajını kaydederken hata oluştu."
-#: classes/Notice.php:790
+#: classes/Notice.php:788
#, fuzzy
msgid "Problem saving group inbox."
msgstr "Durum mesajını kaydederken hata oluştu."
-#: classes/Notice.php:850
+#: classes/Notice.php:848
#, php-format
msgid "DB error inserting reply: %s"
msgstr "Cevap eklenirken veritabanı hatası: %s"
-#: classes/Notice.php:1233
+#: classes/Notice.php:1231
#, php-format
msgid "RT @%1$s %2$s"
msgstr ""
-#: classes/User.php:382
+#: classes/User.php:385
#, php-format
msgid "Welcome to %1$s, @%2$s!"
msgstr ""
@@ -4691,11 +4748,11 @@ msgstr "Eposta adresi onayı"
msgid "Sessions configuration"
msgstr "Eposta adresi onayı"
-#: lib/apiauth.php:99
+#: lib/apiauth.php:95
msgid "API resource requires read-write access, but you only have read access."
msgstr ""
-#: lib/apiauth.php:279
+#: lib/apiauth.php:273
#, php-format
msgid "Failed API auth attempt, nickname = %1$s, proxy = %2$s, ip = %3$s"
msgstr ""
@@ -5067,20 +5124,20 @@ msgid ""
"tracking - not yet implemented.\n"
msgstr ""
-#: lib/common.php:131
+#: lib/common.php:135
#, fuzzy
msgid "No configuration file found. "
msgstr "Onay kodu yok."
-#: lib/common.php:132
+#: lib/common.php:136
msgid "I looked for configuration files in the following places: "
msgstr ""
-#: lib/common.php:134
+#: lib/common.php:138
msgid "You may wish to run the installer to fix this."
msgstr ""
-#: lib/common.php:135
+#: lib/common.php:139
msgid "Go to the installer."
msgstr ""
@@ -5659,26 +5716,26 @@ msgstr ""
msgid "at"
msgstr ""
-#: lib/noticelist.php:531
+#: lib/noticelist.php:547
#, fuzzy
msgid "in context"
msgstr "İçerik yok!"
-#: lib/noticelist.php:556
+#: lib/noticelist.php:572
#, fuzzy
msgid "Repeated by"
msgstr "Yarat"
-#: lib/noticelist.php:582
+#: lib/noticelist.php:598
msgid "Reply to this notice"
msgstr ""
-#: lib/noticelist.php:583
+#: lib/noticelist.php:599
#, fuzzy
msgid "Reply"
msgstr "cevapla"
-#: lib/noticelist.php:625
+#: lib/noticelist.php:641
#, fuzzy
msgid "Notice repeated"
msgstr "Durum mesajları"
@@ -5826,6 +5883,10 @@ msgstr "Böyle bir durum mesajı yok."
msgid "Repeat this notice"
msgstr "Böyle bir durum mesajı yok."
+#: lib/router.php:665
+msgid "No single user defined for single-user mode."
+msgstr ""
+
#: lib/sandboxform.php:67
msgid "Sandbox"
msgstr ""
@@ -6003,47 +6064,47 @@ msgstr ""
msgid "Moderate"
msgstr ""
-#: lib/util.php:868
+#: lib/util.php:867
msgid "a few seconds ago"
msgstr "birkaç saniye önce"
-#: lib/util.php:870
+#: lib/util.php:869
msgid "about a minute ago"
msgstr "yaklaşık bir dakika önce"
-#: lib/util.php:872
+#: lib/util.php:871
#, php-format
msgid "about %d minutes ago"
msgstr "yaklaşık %d dakika önce"
-#: lib/util.php:874
+#: lib/util.php:873
msgid "about an hour ago"
msgstr "yaklaşık bir saat önce"
-#: lib/util.php:876
+#: lib/util.php:875
#, php-format
msgid "about %d hours ago"
msgstr "yaklaşık %d saat önce"
-#: lib/util.php:878
+#: lib/util.php:877
msgid "about a day ago"
msgstr "yaklaşık bir gün önce"
-#: lib/util.php:880
+#: lib/util.php:879
#, php-format
msgid "about %d days ago"
msgstr "yaklaşık %d gün önce"
-#: lib/util.php:882
+#: lib/util.php:881
msgid "about a month ago"
msgstr "yaklaşık bir ay önce"
-#: lib/util.php:884
+#: lib/util.php:883
#, php-format
msgid "about %d months ago"
msgstr "yaklaşık %d ay önce"
-#: lib/util.php:886
+#: lib/util.php:885
msgid "about a year ago"
msgstr "yaklaşık bir yıl önce"
diff --git a/locale/uk/LC_MESSAGES/statusnet.po b/locale/uk/LC_MESSAGES/statusnet.po
index de786c829..1689b7d72 100644
--- a/locale/uk/LC_MESSAGES/statusnet.po
+++ b/locale/uk/LC_MESSAGES/statusnet.po
@@ -10,12 +10,12 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-01-30 23:41+0000\n"
-"PO-Revision-Date: 2010-01-30 23:42:53+0000\n"
+"POT-Creation-Date: 2010-02-04 10:31+0000\n"
+"PO-Revision-Date: 2010-02-04 10:33:43+0000\n"
"Language-Team: Ukrainian\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.16alpha (r61734); Translate extension (2010-01-16)\n"
+"X-Generator: MediaWiki 1.16alpha (r61969); Translate extension (2010-01-16)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: uk\n"
"X-Message-Group: out-statusnet\n"
@@ -97,7 +97,7 @@ msgstr "Немає такої сторінки"
#: actions/favoritesrss.php:74 actions/foaf.php:40 actions/foaf.php:58
#: actions/microsummary.php:62 actions/newmessage.php:116 actions/otp.php:76
#: actions/remotesubscribe.php:145 actions/remotesubscribe.php:154
-#: actions/replies.php:73 actions/repliesrss.php:38
+#: actions/replies.php:73 actions/repliesrss.php:38 actions/rsd.php:116
#: actions/showfavorites.php:105 actions/userbyid.php:74
#: actions/usergroups.php:91 actions/userrss.php:38 actions/xrds.php:71
#: lib/command.php:163 lib/command.php:302 lib/command.php:355
@@ -158,7 +158,7 @@ msgstr ""
"Ви можете [«розштовхати» %1$s](../%2$s) зі сторінки його профілю або [щось "
"йому написати](%%%%action.newnotice%%%%?status_textarea=%3$s)."
-#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:202
+#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:211
#, php-format
msgid ""
"Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
@@ -388,8 +388,8 @@ msgstr "Це ім’я вже використовується. Спробуйт
msgid "Not a valid nickname."
msgstr "Це недійсне ім’я користувача."
-#: actions/apigroupcreate.php:196 actions/editapplication.php:212
-#: actions/editgroup.php:195 actions/newapplication.php:200
+#: actions/apigroupcreate.php:196 actions/editapplication.php:215
+#: actions/editgroup.php:195 actions/newapplication.php:203
#: actions/newgroup.php:139 actions/profilesettings.php:222
#: actions/register.php:217
msgid "Homepage is not a valid URL."
@@ -401,8 +401,8 @@ msgstr "Веб-сторінка має недійсну URL-адресу."
msgid "Full name is too long (max 255 chars)."
msgstr "Повне ім’я задовге (255 знаків максимум)"
-#: actions/apigroupcreate.php:213 actions/editapplication.php:187
-#: actions/newapplication.php:169
+#: actions/apigroupcreate.php:213 actions/editapplication.php:190
+#: actions/newapplication.php:172
#, php-format
msgid "Description is too long (max %d chars)."
msgstr "Опис надто довгий (%d знаків максимум)."
@@ -479,18 +479,22 @@ msgstr "%s групи"
msgid "groups on %s"
msgstr "групи на %s"
-#: actions/apioauthauthorize.php:108 actions/apioauthauthorize.php:114
-msgid "Bad request."
-msgstr "Невірний запит."
+#: actions/apioauthauthorize.php:101
+msgid "No oauth_token parameter provided."
+msgstr "Жодного параметру oauth_token не забезпечено."
-#: actions/apioauthauthorize.php:134 actions/avatarsettings.php:268
+#: actions/apioauthauthorize.php:106
+msgid "Invalid token."
+msgstr "Невірний токен."
+
+#: actions/apioauthauthorize.php:123 actions/avatarsettings.php:268
#: actions/deletenotice.php:157 actions/disfavor.php:74
-#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:50
+#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:54
#: actions/groupblock.php:66 actions/grouplogo.php:309
#: actions/groupunblock.php:66 actions/imsettings.php:206
#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
-#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:139
+#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:135
#: actions/othersettings.php:145 actions/passwordsettings.php:138
#: actions/profilesettings.php:194 actions/recoverpassword.php:337
#: actions/register.php:165 actions/remotesubscribe.php:77
@@ -502,19 +506,19 @@ msgid "There was a problem with your session token. Try again, please."
msgstr ""
"Виникли певні проблеми з токеном поточної сесії. Спробуйте знов, будь ласка."
-#: actions/apioauthauthorize.php:146
+#: actions/apioauthauthorize.php:135
msgid "Invalid nickname / password!"
msgstr "Недійсне ім’я / пароль!"
-#: actions/apioauthauthorize.php:170
+#: actions/apioauthauthorize.php:159
msgid "Database error deleting OAuth application user."
msgstr "Помилка бази даних при видаленні користувача OAuth-додатку."
-#: actions/apioauthauthorize.php:196
+#: actions/apioauthauthorize.php:185
msgid "Database error inserting OAuth application user."
msgstr "Помилка бази даних при додаванні користувача OAuth-додатку."
-#: actions/apioauthauthorize.php:231
+#: actions/apioauthauthorize.php:214
#, php-format
msgid ""
"The request token %s has been authorized. Please exchange it for an access "
@@ -523,53 +527,65 @@ msgstr ""
"Токен запиту %s було авторизовано. Будь ласка, обміняйте його на токен "
"доступу."
-#: actions/apioauthauthorize.php:241
+#: actions/apioauthauthorize.php:227
#, php-format
-msgid "The request token %s has been denied."
-msgstr "Токен запиту %s було відхилено."
+msgid "The request token %s has been denied and revoked."
+msgstr "Токен запиту %s було скасовано і відхилено."
-#: actions/apioauthauthorize.php:246 actions/avatarsettings.php:281
+#: actions/apioauthauthorize.php:232 actions/avatarsettings.php:281
#: actions/designadminpanel.php:103 actions/editapplication.php:139
#: actions/emailsettings.php:256 actions/grouplogo.php:319
#: actions/imsettings.php:220 actions/newapplication.php:121
-#: actions/oauthconnectionssettings.php:151 actions/recoverpassword.php:44
+#: actions/oauthconnectionssettings.php:147 actions/recoverpassword.php:44
#: actions/smssettings.php:248 lib/designsettings.php:304
msgid "Unexpected form submission."
msgstr "Несподіване представлення форми."
-#: actions/apioauthauthorize.php:273
+#: actions/apioauthauthorize.php:259
msgid "An application would like to connect to your account"
msgstr "Запит на дозвіл під’єднатися до Вашого облікового запису"
-#: actions/apioauthauthorize.php:290
+#: actions/apioauthauthorize.php:276
msgid "Allow or deny access"
msgstr "Дозволити або заборонити доступ"
-#: actions/apioauthauthorize.php:320 lib/action.php:441
+#: actions/apioauthauthorize.php:292
+#, php-format
+msgid ""
+"The application <strong>%1$s</strong> by <strong>%2$s</strong> would like "
+"the ability to <strong>%3$s</strong> your %4$s account data. You should only "
+"give access to your %4$s account to third parties you trust."
+msgstr ""
+"Додаток <strong>%1$s</strong> від <strong>%2$s</strong> запитує дозвіл на "
+"<strong>%3$s</strong> дані Вашого акаунту %4$s. Ви повинні надавати дозвіл "
+"на доступ до Вашого акаунту %4$s лише тим стороннім додаткам, яким Ви "
+"довіряєте."
+
+#: actions/apioauthauthorize.php:310 lib/action.php:441
msgid "Account"
msgstr "Акаунт"
-#: actions/apioauthauthorize.php:323 actions/login.php:230
+#: actions/apioauthauthorize.php:313 actions/login.php:230
#: actions/profilesettings.php:106 actions/register.php:424
#: actions/showgroup.php:236 actions/tagother.php:94 lib/groupeditform.php:152
#: lib/userprofile.php:131
msgid "Nickname"
msgstr "Ім’я користувача"
-#: actions/apioauthauthorize.php:326 actions/login.php:233
+#: actions/apioauthauthorize.php:316 actions/login.php:233
#: actions/register.php:429 lib/accountsettingsaction.php:116
msgid "Password"
msgstr "Пароль"
-#: actions/apioauthauthorize.php:338
+#: actions/apioauthauthorize.php:328
msgid "Deny"
msgstr "Відхилити"
-#: actions/apioauthauthorize.php:344
+#: actions/apioauthauthorize.php:334
msgid "Allow"
msgstr "Дозволити"
-#: actions/apioauthauthorize.php:361
+#: actions/apioauthauthorize.php:351
msgid "Allow or deny access to your account information."
msgstr "Дозволити або заборонити доступ до Вашого облікового запису."
@@ -740,8 +756,8 @@ msgstr "Оригінал"
msgid "Preview"
msgstr "Перегляд"
-#: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:608
+#: actions/avatarsettings.php:149 actions/showapplication.php:252
+#: lib/deleteuserform.php:66 lib/noticelist.php:624
msgid "Delete"
msgstr "Видалити"
@@ -791,8 +807,9 @@ msgstr ""
"відписано від Вас, він не зможе підписитасть до Вас у майбутньому і Ви "
"більше не отримуватимете жодних дописів від нього."
-#: actions/block.php:143 actions/deletenotice.php:145
-#: actions/deleteuser.php:147 actions/groupblock.php:178
+#: actions/block.php:143 actions/deleteapplication.php:153
+#: actions/deletenotice.php:145 actions/deleteuser.php:147
+#: actions/groupblock.php:178
msgid "No"
msgstr "Ні"
@@ -800,9 +817,9 @@ msgstr "Ні"
msgid "Do not block this user"
msgstr "Не блокувати цього користувача"
-#: actions/block.php:144 actions/deletenotice.php:146
-#: actions/deleteuser.php:148 actions/groupblock.php:179
-#: lib/repeatform.php:132
+#: actions/block.php:144 actions/deleteapplication.php:158
+#: actions/deletenotice.php:146 actions/deleteuser.php:148
+#: actions/groupblock.php:179 lib/repeatform.php:132
msgid "Yes"
msgstr "Так"
@@ -906,6 +923,47 @@ msgstr "Розмова"
msgid "Notices"
msgstr "Дописи"
+#: actions/deleteapplication.php:63
+msgid "You must be logged in to delete an application."
+msgstr "Ви маєте спочатку увійти, аби мати змогу видалити додаток."
+
+#: actions/deleteapplication.php:71
+msgid "Application not found."
+msgstr "Додаток не виявлено."
+
+#: actions/deleteapplication.php:78 actions/editapplication.php:77
+#: actions/showapplication.php:94
+msgid "You are not the owner of this application."
+msgstr "Ви не є власником цього додатку."
+
+#: actions/deleteapplication.php:102 actions/editapplication.php:127
+#: actions/newapplication.php:110 actions/showapplication.php:118
+#: lib/action.php:1195
+msgid "There was a problem with your session token."
+msgstr "Виникли певні проблеми з токеном поточної сесії."
+
+#: actions/deleteapplication.php:123 actions/deleteapplication.php:147
+msgid "Delete application"
+msgstr "Видалити додаток"
+
+#: actions/deleteapplication.php:149
+msgid ""
+"Are you sure you want to delete this application? This will clear all data "
+"about the application from the database, including all existing user "
+"connections."
+msgstr ""
+"Впевнені, що бажаєте видалити цей додаток? У базі даних буде знищено всю "
+"інформацію стосовно нього, включно із даними про під’єднаних до цього "
+"додатку користувачів."
+
+#: actions/deleteapplication.php:156
+msgid "Do not delete this application"
+msgstr "Не видаляти додаток"
+
+#: actions/deleteapplication.php:160
+msgid "Delete this application"
+msgstr "Видалити додаток"
+
#: actions/deletenotice.php:67 actions/disfavor.php:61 actions/favor.php:62
#: actions/groupblock.php:61 actions/groupunblock.php:61 actions/logout.php:69
#: actions/makeadmin.php:61 actions/newmessage.php:87 actions/newnotice.php:89
@@ -938,7 +996,7 @@ msgstr "Ви впевненні, що бажаєте видалити цей д
msgid "Do not delete this notice"
msgstr "Не видаляти цей допис"
-#: actions/deletenotice.php:146 lib/noticelist.php:608
+#: actions/deletenotice.php:146 lib/noticelist.php:624
msgid "Delete this notice"
msgstr "Видалити допис"
@@ -1082,7 +1140,7 @@ msgstr "Цей допис не є обраним!"
msgid "Add to favorites"
msgstr "Додати до обраних"
-#: actions/doc.php:155
+#: actions/doc.php:158
#, php-format
msgid "No such document \"%s\""
msgstr "Немає такого документа «%s»"
@@ -1095,20 +1153,11 @@ msgstr "Керувати додатками"
msgid "You must be logged in to edit an application."
msgstr "Ви маєте спочатку увійти, аби мати змогу керувати додатком."
-#: actions/editapplication.php:77 actions/showapplication.php:94
-msgid "You are not the owner of this application."
-msgstr "Ви не є власником цього додатку."
-
-#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:163
+#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:166
#: actions/showapplication.php:87
msgid "No such application."
msgstr "Такого додатку немає."
-#: actions/editapplication.php:127 actions/newapplication.php:110
-#: actions/showapplication.php:118 lib/action.php:1195
-msgid "There was a problem with your session token."
-msgstr "Виникли певні проблеми з токеном поточної сесії."
-
#: actions/editapplication.php:161
msgid "Use this form to edit your application."
msgstr "Скористайтесь цією формою, щоб відредагувати додаток."
@@ -1117,43 +1166,47 @@ msgstr "Скористайтесь цією формою, щоб відреда
msgid "Name is required."
msgstr "Потрібне ім’я."
-#: actions/editapplication.php:180 actions/newapplication.php:162
+#: actions/editapplication.php:180 actions/newapplication.php:165
msgid "Name is too long (max 255 chars)."
msgstr "Ім’я задовге (255 знаків максимум)."
-#: actions/editapplication.php:183 actions/newapplication.php:165
+#: actions/editapplication.php:183 actions/newapplication.php:162
+msgid "Name already in use. Try another one."
+msgstr "Це ім’я вже використовується. Спробуйте інше."
+
+#: actions/editapplication.php:186 actions/newapplication.php:168
msgid "Description is required."
msgstr "Потрібен опис."
-#: actions/editapplication.php:191
+#: actions/editapplication.php:194
msgid "Source URL is too long."
msgstr "URL-адреса надто довга."
-#: actions/editapplication.php:197 actions/newapplication.php:182
+#: actions/editapplication.php:200 actions/newapplication.php:185
msgid "Source URL is not valid."
msgstr "URL-адреса не є дійсною."
-#: actions/editapplication.php:200 actions/newapplication.php:185
+#: actions/editapplication.php:203 actions/newapplication.php:188
msgid "Organization is required."
msgstr "Потрібна організація."
-#: actions/editapplication.php:203 actions/newapplication.php:188
+#: actions/editapplication.php:206 actions/newapplication.php:191
msgid "Organization is too long (max 255 chars)."
msgstr "Назва організації надто довга (255 знаків максимум)."
-#: actions/editapplication.php:206 actions/newapplication.php:191
+#: actions/editapplication.php:209 actions/newapplication.php:194
msgid "Organization homepage is required."
msgstr "Потрібна домашня сторінка організації."
-#: actions/editapplication.php:215 actions/newapplication.php:203
+#: actions/editapplication.php:218 actions/newapplication.php:206
msgid "Callback is too long."
msgstr "Форма зворотнього дзвінка надто довга."
-#: actions/editapplication.php:222 actions/newapplication.php:212
+#: actions/editapplication.php:225 actions/newapplication.php:215
msgid "Callback URL is not valid."
msgstr "URL-адреса для зворотнього дзвінка не є дійсною."
-#: actions/editapplication.php:255
+#: actions/editapplication.php:258
msgid "Could not update application."
msgstr "Не вдалося оновити додаток."
@@ -2087,11 +2140,11 @@ msgstr "Ви маєте спочатку увійти, аби мати змог
msgid "Use this form to register a new application."
msgstr "Скористайтесь цією формою, щоб зареєструвати новий додаток."
-#: actions/newapplication.php:173
+#: actions/newapplication.php:176
msgid "Source URL is required."
msgstr "Потрібна URL-адреса."
-#: actions/newapplication.php:255 actions/newapplication.php:264
+#: actions/newapplication.php:258 actions/newapplication.php:267
msgid "Could not create application."
msgstr "Не вдалося створити додаток."
@@ -2225,29 +2278,29 @@ msgstr "Додатки, які Ви зареєстрували"
msgid "You have not registered any applications yet."
msgstr "Поки що Ви не зареєстрували жодних додатків."
-#: actions/oauthconnectionssettings.php:71
+#: actions/oauthconnectionssettings.php:72
msgid "Connected applications"
msgstr "Під’єднані додатки"
-#: actions/oauthconnectionssettings.php:87
+#: actions/oauthconnectionssettings.php:83
msgid "You have allowed the following applications to access you account."
msgstr ""
"Ви маєте дозволити наступним додаткам доступ до Вашого облікового запису."
-#: actions/oauthconnectionssettings.php:170
+#: actions/oauthconnectionssettings.php:175
msgid "You are not a user of that application."
msgstr "Ви не є користувачем даного додатку."
-#: actions/oauthconnectionssettings.php:180
+#: actions/oauthconnectionssettings.php:186
msgid "Unable to revoke access for app: "
msgstr "Не вдалося скасувати доступ для додатку: "
-#: actions/oauthconnectionssettings.php:192
+#: actions/oauthconnectionssettings.php:198
#, php-format
msgid "You have not authorized any applications to use your account."
msgstr "Ви не дозволили жодним додаткам використовувати Ваш акаунт."
-#: actions/oauthconnectionssettings.php:205
+#: actions/oauthconnectionssettings.php:211
msgid "Developers can edit the registration settings for their applications "
msgstr "Розробники можуть змінити налаштування реєстрації для їхніх додатків "
@@ -2749,19 +2802,19 @@ msgstr "Загальний стрічка, сторінка %d"
msgid "Public timeline"
msgstr "Загальна стрічка"
-#: actions/public.php:151
+#: actions/public.php:159
msgid "Public Stream Feed (RSS 1.0)"
msgstr "Стрічка публічних дописів (RSS 1.0)"
-#: actions/public.php:155
+#: actions/public.php:163
msgid "Public Stream Feed (RSS 2.0)"
msgstr "Стрічка публічних дописів (RSS 2.0)"
-#: actions/public.php:159
+#: actions/public.php:167
msgid "Public Stream Feed (Atom)"
msgstr "Стрічка публічних дописів (Atom)"
-#: actions/public.php:179
+#: actions/public.php:187
#, php-format
msgid ""
"This is the public timeline for %%site.name%% but no one has posted anything "
@@ -2769,11 +2822,11 @@ msgid ""
msgstr ""
"Це публічна стрічка дописів сайту %%site.name%%, але вона поки що порожня."
-#: actions/public.php:182
+#: actions/public.php:190
msgid "Be the first to post!"
msgstr "Станьте першим! Напишіть щось!"
-#: actions/public.php:186
+#: actions/public.php:194
#, php-format
msgid ""
"Why not [register an account](%%action.register%%) and be the first to post!"
@@ -2781,7 +2834,7 @@ msgstr ""
"Чому б не [зареєструватись](%%action.register%%) і не зробити свій перший "
"допис!"
-#: actions/public.php:233
+#: actions/public.php:241
#, php-format
msgid ""
"This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2795,7 +2848,7 @@ msgstr ""
"розділити своє життя з друзями, родиною і колегами! ([Дізнатися більше](%%"
"doc.help%%))"
-#: actions/public.php:238
+#: actions/public.php:246
#, php-format
msgid ""
"This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -3161,7 +3214,7 @@ msgstr "Ви не можете вторувати своїм власним до
msgid "You already repeated that notice."
msgstr "Ви вже вторували цьому допису."
-#: actions/repeat.php:114 lib/noticelist.php:626
+#: actions/repeat.php:114 lib/noticelist.php:642
msgid "Repeated"
msgstr "Вторування"
@@ -3227,6 +3280,10 @@ msgstr ""
msgid "Replies to %1$s on %2$s!"
msgstr "Відповіді до %1$s на %2$s!"
+#: actions/rsd.php:146 actions/version.php:157
+msgid "StatusNet"
+msgstr "StatusNet"
+
#: actions/sandbox.php:65 actions/unsandbox.php:65
msgid "You cannot sandbox users on this site."
msgstr "Ви не можете нікого ізолювати на цьому сайті."
@@ -3241,9 +3298,8 @@ msgid "Sessions"
msgstr "Сесії"
#: actions/sessionsadminpanel.php:65
-#, fuzzy
msgid "Session settings for this StatusNet site."
-msgstr "Налаштування дизайну для цього сайту StatusNet."
+msgstr "Налаштування сесії для цього сайту StatusNet."
#: actions/sessionsadminpanel.php:175
msgid "Handle sessions"
@@ -3270,71 +3326,71 @@ msgstr "Зберегти налаштування сайту"
msgid "You must be logged in to view an application."
msgstr "Ви повинні спочатку увійти, аби переглянути додаток."
-#: actions/showapplication.php:158
+#: actions/showapplication.php:157
msgid "Application profile"
msgstr "Профіль додатку"
-#: actions/showapplication.php:160 lib/applicationeditform.php:180
+#: actions/showapplication.php:159 lib/applicationeditform.php:180
msgid "Icon"
msgstr "Іконка"
-#: actions/showapplication.php:170 actions/version.php:195
+#: actions/showapplication.php:169 actions/version.php:195
#: lib/applicationeditform.php:195
msgid "Name"
msgstr "Ім’я"
-#: actions/showapplication.php:179 lib/applicationeditform.php:222
+#: actions/showapplication.php:178 lib/applicationeditform.php:222
msgid "Organization"
msgstr "Організація"
-#: actions/showapplication.php:188 actions/version.php:198
+#: actions/showapplication.php:187 actions/version.php:198
#: lib/applicationeditform.php:209 lib/groupeditform.php:172
msgid "Description"
msgstr "Опис"
-#: actions/showapplication.php:193 actions/showgroup.php:429
+#: actions/showapplication.php:192 actions/showgroup.php:429
#: lib/profileaction.php:174
msgid "Statistics"
msgstr "Статистика"
-#: actions/showapplication.php:204
+#: actions/showapplication.php:203
#, php-format
-msgid "created by %1$s - %2$s access by default - %3$d users"
-msgstr "створено %1$s — %2$s доступ за замовч. — %3$d користувачів"
+msgid "Created by %1$s - %2$s access by default - %3$d users"
+msgstr "Створено %1$s — %2$s доступ за замовч. — %3$d користувачів"
-#: actions/showapplication.php:214
+#: actions/showapplication.php:213
msgid "Application actions"
msgstr "Можливості додатку"
-#: actions/showapplication.php:233
+#: actions/showapplication.php:236
msgid "Reset key & secret"
msgstr "Призначити новий ключ і таємне слово"
-#: actions/showapplication.php:241
+#: actions/showapplication.php:261
msgid "Application info"
msgstr "Інфо додатку"
-#: actions/showapplication.php:243
+#: actions/showapplication.php:263
msgid "Consumer key"
msgstr "Ключ споживача"
-#: actions/showapplication.php:248
+#: actions/showapplication.php:268
msgid "Consumer secret"
msgstr "Таємно слово споживача"
-#: actions/showapplication.php:253
+#: actions/showapplication.php:273
msgid "Request token URL"
msgstr "URL-адреса токена запиту"
-#: actions/showapplication.php:258
+#: actions/showapplication.php:278
msgid "Access token URL"
msgstr "URL-адреса токена дозволу"
-#: actions/showapplication.php:263
+#: actions/showapplication.php:283
msgid "Authorize URL"
msgstr "Авторизувати URL-адресу"
-#: actions/showapplication.php:268
+#: actions/showapplication.php:288
msgid ""
"Note: We support HMAC-SHA1 signatures. We do not support the plaintext "
"signature method."
@@ -3342,6 +3398,11 @@ msgstr ""
"До уваги: Всі підписи шифруються за методом HMAC-SHA1. Ми не підтримуємо "
"шифрування підписів відкритим текстом."
+#: actions/showapplication.php:309
+#, fuzzy
+msgid "Are you sure you want to reset your consumer key and secret?"
+msgstr "Ви впевненні, що бажаєте видалити цей допис?"
+
#: actions/showfavorites.php:79
#, php-format
msgid "%1$s's favorite notices, page %2$d"
@@ -3558,12 +3619,12 @@ msgstr "Стрічка дописів для %s (Atom)"
msgid "FOAF for %s"
msgstr "FOAF для %s"
-#: actions/showstream.php:191
+#: actions/showstream.php:200
#, php-format
msgid "This is the timeline for %1$s but %2$s hasn't posted anything yet."
msgstr "Це стрічка дописів %1$s, але %2$s ще нічого не написав."
-#: actions/showstream.php:196
+#: actions/showstream.php:205
msgid ""
"Seen anything interesting recently? You haven't posted any notices yet, now "
"would be a good time to start :)"
@@ -3571,7 +3632,7 @@ msgstr ""
"Побачили щось цікаве нещодавно? Ви ще нічого не написали і це слушна нагода "
"аби розпочати! :)"
-#: actions/showstream.php:198
+#: actions/showstream.php:207
#, php-format
msgid ""
"You can try to nudge %1$s or [post something to his or her attention](%%%%"
@@ -3580,7 +3641,7 @@ msgstr ""
"Ви можете «розштовхати» %1$s або [щось йому написати](%%%%action.newnotice%%%"
"%?status_textarea=%2$s)."
-#: actions/showstream.php:234
+#: actions/showstream.php:243
#, php-format
msgid ""
"**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3594,7 +3655,7 @@ msgstr ""
"register%%) зараз і слідкуйте за дописами **%s**, також на Вас чекає багато "
"іншого! ([Дізнатися більше](%%doc.help%%))"
-#: actions/showstream.php:239
+#: actions/showstream.php:248
#, php-format
msgid ""
"**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3605,7 +3666,7 @@ msgstr ""
"(http://uk.wikipedia.org/wiki/Мікроблоґ), який працює на вільному "
"програмному забезпеченні [StatusNet](http://status.net/). "
-#: actions/showstream.php:296
+#: actions/showstream.php:305
#, php-format
msgid "Repeat of %s"
msgstr "Вторування %s"
@@ -4285,10 +4346,6 @@ msgstr ""
"Цей сайт працює на %1$s, версія %2$s. Авторські права 2008-2010 StatusNet, "
"Inc. і розробники."
-#: actions/version.php:157
-msgid "StatusNet"
-msgstr "StatusNet"
-
#: actions/version.php:161
msgid "Contributors"
msgstr "Розробники"
@@ -4422,21 +4479,21 @@ msgstr "Вам заборонено надсилати дописи до цьо
msgid "Problem saving notice."
msgstr "Проблема при збереженні допису."
-#: classes/Notice.php:790
+#: classes/Notice.php:788
msgid "Problem saving group inbox."
msgstr "Проблема при збереженні вхідних дописів для групи."
-#: classes/Notice.php:850
+#: classes/Notice.php:848
#, php-format
msgid "DB error inserting reply: %s"
msgstr "Помилка бази даних при додаванні відповіді: %s"
-#: classes/Notice.php:1233
+#: classes/Notice.php:1231
#, php-format
msgid "RT @%1$s %2$s"
msgstr "RT @%1$s %2$s"
-#: classes/User.php:382
+#: classes/User.php:385
#, php-format
msgid "Welcome to %1$s, @%2$s!"
msgstr "Вітаємо на %1$s, @%2$s!"
@@ -4708,17 +4765,16 @@ msgid "Paths configuration"
msgstr "Конфігурація шляху"
#: lib/adminpanelaction.php:337
-#, fuzzy
msgid "Sessions configuration"
-msgstr "Конфігурація дизайну"
+msgstr "Конфігурація сесій"
-#: lib/apiauth.php:99
+#: lib/apiauth.php:95
msgid "API resource requires read-write access, but you only have read access."
msgstr ""
"API-ресурс вимагає дозвіл типу «читання-запис», але у вас є лише доступ для "
"читання."
-#: lib/apiauth.php:279
+#: lib/apiauth.php:273
#, php-format
msgid "Failed API auth attempt, nickname = %1$s, proxy = %2$s, ip = %3$s"
msgstr ""
@@ -5118,19 +5174,19 @@ msgstr ""
"tracks — наразі не виконується\n"
"tracking — наразі не виконується\n"
-#: lib/common.php:131
+#: lib/common.php:135
msgid "No configuration file found. "
msgstr "Файлу конфігурації не знайдено. "
-#: lib/common.php:132
+#: lib/common.php:136
msgid "I looked for configuration files in the following places: "
msgstr "Шукав файли конфігурації в цих місцях: "
-#: lib/common.php:134
+#: lib/common.php:138
msgid "You may wish to run the installer to fix this."
msgstr "Запустіть файл інсталяції, аби полагодити це."
-#: lib/common.php:135
+#: lib/common.php:139
msgid "Go to the installer."
msgstr "Іти до файлу інсталяції."
@@ -5775,23 +5831,23 @@ msgstr "Зах."
msgid "at"
msgstr "в"
-#: lib/noticelist.php:531
+#: lib/noticelist.php:547
msgid "in context"
msgstr "в контексті"
-#: lib/noticelist.php:556
+#: lib/noticelist.php:572
msgid "Repeated by"
msgstr "Вторуванні"
-#: lib/noticelist.php:582
+#: lib/noticelist.php:598
msgid "Reply to this notice"
msgstr "Відповісти на цей допис"
-#: lib/noticelist.php:583
+#: lib/noticelist.php:599
msgid "Reply"
msgstr "Відповісти"
-#: lib/noticelist.php:625
+#: lib/noticelist.php:641
msgid "Notice repeated"
msgstr "Допис вторували"
@@ -5932,6 +5988,10 @@ msgstr "Повторити цей допис?"
msgid "Repeat this notice"
msgstr "Вторувати цьому допису"
+#: lib/router.php:665
+msgid "No single user defined for single-user mode."
+msgstr "Користувача для однокористувацького режиму не визначено."
+
#: lib/sandboxform.php:67
msgid "Sandbox"
msgstr "Пісочниця"
@@ -6097,47 +6157,47 @@ msgstr "Повідомлення"
msgid "Moderate"
msgstr "Модерувати"
-#: lib/util.php:868
+#: lib/util.php:867
msgid "a few seconds ago"
msgstr "мить тому"
-#: lib/util.php:870
+#: lib/util.php:869
msgid "about a minute ago"
msgstr "хвилину тому"
-#: lib/util.php:872
+#: lib/util.php:871
#, php-format
msgid "about %d minutes ago"
msgstr "близько %d хвилин тому"
-#: lib/util.php:874
+#: lib/util.php:873
msgid "about an hour ago"
msgstr "годину тому"
-#: lib/util.php:876
+#: lib/util.php:875
#, php-format
msgid "about %d hours ago"
msgstr "близько %d годин тому"
-#: lib/util.php:878
+#: lib/util.php:877
msgid "about a day ago"
msgstr "день тому"
-#: lib/util.php:880
+#: lib/util.php:879
#, php-format
msgid "about %d days ago"
msgstr "близько %d днів тому"
-#: lib/util.php:882
+#: lib/util.php:881
msgid "about a month ago"
msgstr "місяць тому"
-#: lib/util.php:884
+#: lib/util.php:883
#, php-format
msgid "about %d months ago"
msgstr "близько %d місяців тому"
-#: lib/util.php:886
+#: lib/util.php:885
msgid "about a year ago"
msgstr "рік тому"
diff --git a/locale/vi/LC_MESSAGES/statusnet.po b/locale/vi/LC_MESSAGES/statusnet.po
index 81461c3a0..80d7d0c8d 100644
--- a/locale/vi/LC_MESSAGES/statusnet.po
+++ b/locale/vi/LC_MESSAGES/statusnet.po
@@ -7,12 +7,12 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-01-30 23:41+0000\n"
-"PO-Revision-Date: 2010-01-30 23:42:56+0000\n"
+"POT-Creation-Date: 2010-02-04 10:31+0000\n"
+"PO-Revision-Date: 2010-02-04 10:33:46+0000\n"
"Language-Team: Vietnamese\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.16alpha (r61734); Translate extension (2010-01-16)\n"
+"X-Generator: MediaWiki 1.16alpha (r61969); Translate extension (2010-01-16)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: vi\n"
"X-Message-Group: out-statusnet\n"
@@ -99,7 +99,7 @@ msgstr "Không có tin nhắn nào."
#: actions/favoritesrss.php:74 actions/foaf.php:40 actions/foaf.php:58
#: actions/microsummary.php:62 actions/newmessage.php:116 actions/otp.php:76
#: actions/remotesubscribe.php:145 actions/remotesubscribe.php:154
-#: actions/replies.php:73 actions/repliesrss.php:38
+#: actions/replies.php:73 actions/repliesrss.php:38 actions/rsd.php:116
#: actions/showfavorites.php:105 actions/userbyid.php:74
#: actions/usergroups.php:91 actions/userrss.php:38 actions/xrds.php:71
#: lib/command.php:163 lib/command.php:302 lib/command.php:355
@@ -156,7 +156,7 @@ msgid ""
"his or her attention](%%%%action.newnotice%%%%?status_textarea=%3$s)."
msgstr ""
-#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:202
+#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:211
#, php-format
msgid ""
"Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
@@ -395,8 +395,8 @@ msgstr "Biệt hiệu này đã dùng rồi. Hãy nhập biệt hiệu khác."
msgid "Not a valid nickname."
msgstr "Biệt hiệu không hợp lệ."
-#: actions/apigroupcreate.php:196 actions/editapplication.php:212
-#: actions/editgroup.php:195 actions/newapplication.php:200
+#: actions/apigroupcreate.php:196 actions/editapplication.php:215
+#: actions/editgroup.php:195 actions/newapplication.php:203
#: actions/newgroup.php:139 actions/profilesettings.php:222
#: actions/register.php:217
msgid "Homepage is not a valid URL."
@@ -408,8 +408,8 @@ msgstr "Trang chủ không phải là URL"
msgid "Full name is too long (max 255 chars)."
msgstr "Tên đầy đủ quá dài (tối đa là 255 ký tự)."
-#: actions/apigroupcreate.php:213 actions/editapplication.php:187
-#: actions/newapplication.php:169
+#: actions/apigroupcreate.php:213 actions/editapplication.php:190
+#: actions/newapplication.php:172
#, fuzzy, php-format
msgid "Description is too long (max %d chars)."
msgstr "Lý lịch quá dài (không quá 140 ký tự)"
@@ -489,18 +489,23 @@ msgstr "%s và nhóm"
msgid "groups on %s"
msgstr "Mã nhóm"
-#: actions/apioauthauthorize.php:108 actions/apioauthauthorize.php:114
-msgid "Bad request."
+#: actions/apioauthauthorize.php:101
+msgid "No oauth_token parameter provided."
msgstr ""
-#: actions/apioauthauthorize.php:134 actions/avatarsettings.php:268
+#: actions/apioauthauthorize.php:106
+#, fuzzy
+msgid "Invalid token."
+msgstr "Kích thước không hợp lệ."
+
+#: actions/apioauthauthorize.php:123 actions/avatarsettings.php:268
#: actions/deletenotice.php:157 actions/disfavor.php:74
-#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:50
+#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:54
#: actions/groupblock.php:66 actions/grouplogo.php:309
#: actions/groupunblock.php:66 actions/imsettings.php:206
#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
-#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:139
+#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:135
#: actions/othersettings.php:145 actions/passwordsettings.php:138
#: actions/profilesettings.php:194 actions/recoverpassword.php:337
#: actions/register.php:165 actions/remotesubscribe.php:77
@@ -511,76 +516,84 @@ msgstr ""
msgid "There was a problem with your session token. Try again, please."
msgstr "Có lỗi xảy ra khi thao tác. Hãy thử lại lần nữa."
-#: actions/apioauthauthorize.php:146
+#: actions/apioauthauthorize.php:135
#, fuzzy
msgid "Invalid nickname / password!"
msgstr "Tên đăng nhập hoặc mật khẩu không hợp lệ."
-#: actions/apioauthauthorize.php:170
+#: actions/apioauthauthorize.php:159
#, fuzzy
msgid "Database error deleting OAuth application user."
msgstr "Lỗi xảy ra khi tạo thành viên."
-#: actions/apioauthauthorize.php:196
+#: actions/apioauthauthorize.php:185
#, fuzzy
msgid "Database error inserting OAuth application user."
msgstr "Lỗi cơ sở dữ liệu khi chèn trả lời: %s"
-#: actions/apioauthauthorize.php:231
+#: actions/apioauthauthorize.php:214
#, php-format
msgid ""
"The request token %s has been authorized. Please exchange it for an access "
"token."
msgstr ""
-#: actions/apioauthauthorize.php:241
+#: actions/apioauthauthorize.php:227
#, php-format
-msgid "The request token %s has been denied."
+msgid "The request token %s has been denied and revoked."
msgstr ""
-#: actions/apioauthauthorize.php:246 actions/avatarsettings.php:281
+#: actions/apioauthauthorize.php:232 actions/avatarsettings.php:281
#: actions/designadminpanel.php:103 actions/editapplication.php:139
#: actions/emailsettings.php:256 actions/grouplogo.php:319
#: actions/imsettings.php:220 actions/newapplication.php:121
-#: actions/oauthconnectionssettings.php:151 actions/recoverpassword.php:44
+#: actions/oauthconnectionssettings.php:147 actions/recoverpassword.php:44
#: actions/smssettings.php:248 lib/designsettings.php:304
msgid "Unexpected form submission."
msgstr "Bất ngờ gửi mẫu thông tin. "
-#: actions/apioauthauthorize.php:273
+#: actions/apioauthauthorize.php:259
msgid "An application would like to connect to your account"
msgstr ""
-#: actions/apioauthauthorize.php:290
+#: actions/apioauthauthorize.php:276
msgid "Allow or deny access"
msgstr ""
-#: actions/apioauthauthorize.php:320 lib/action.php:441
+#: actions/apioauthauthorize.php:292
+#, php-format
+msgid ""
+"The application <strong>%1$s</strong> by <strong>%2$s</strong> would like "
+"the ability to <strong>%3$s</strong> your %4$s account data. You should only "
+"give access to your %4$s account to third parties you trust."
+msgstr ""
+
+#: actions/apioauthauthorize.php:310 lib/action.php:441
#, fuzzy
msgid "Account"
msgstr "Giới thiệu"
-#: actions/apioauthauthorize.php:323 actions/login.php:230
+#: actions/apioauthauthorize.php:313 actions/login.php:230
#: actions/profilesettings.php:106 actions/register.php:424
#: actions/showgroup.php:236 actions/tagother.php:94 lib/groupeditform.php:152
#: lib/userprofile.php:131
msgid "Nickname"
msgstr "Biệt danh"
-#: actions/apioauthauthorize.php:326 actions/login.php:233
+#: actions/apioauthauthorize.php:316 actions/login.php:233
#: actions/register.php:429 lib/accountsettingsaction.php:116
msgid "Password"
msgstr "Mật khẩu"
-#: actions/apioauthauthorize.php:338
+#: actions/apioauthauthorize.php:328
msgid "Deny"
msgstr ""
-#: actions/apioauthauthorize.php:344
+#: actions/apioauthauthorize.php:334
msgid "Allow"
msgstr ""
-#: actions/apioauthauthorize.php:361
+#: actions/apioauthauthorize.php:351
msgid "Allow or deny access to your account information."
msgstr ""
@@ -758,8 +771,8 @@ msgstr ""
msgid "Preview"
msgstr "Xem trước"
-#: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:608
+#: actions/avatarsettings.php:149 actions/showapplication.php:252
+#: lib/deleteuserform.php:66 lib/noticelist.php:624
#, fuzzy
msgid "Delete"
msgstr "Xóa tin nhắn"
@@ -811,8 +824,9 @@ msgid ""
"will not be notified of any @-replies from them."
msgstr ""
-#: actions/block.php:143 actions/deletenotice.php:145
-#: actions/deleteuser.php:147 actions/groupblock.php:178
+#: actions/block.php:143 actions/deleteapplication.php:153
+#: actions/deletenotice.php:145 actions/deleteuser.php:147
+#: actions/groupblock.php:178
msgid "No"
msgstr "Không"
@@ -821,9 +835,9 @@ msgstr "Không"
msgid "Do not block this user"
msgstr "Bỏ chặn người dùng này"
-#: actions/block.php:144 actions/deletenotice.php:146
-#: actions/deleteuser.php:148 actions/groupblock.php:179
-#: lib/repeatform.php:132
+#: actions/block.php:144 actions/deleteapplication.php:158
+#: actions/deletenotice.php:146 actions/deleteuser.php:148
+#: actions/groupblock.php:179 lib/repeatform.php:132
msgid "Yes"
msgstr "Có"
@@ -932,6 +946,51 @@ msgstr "Không có mã số xác nhận."
msgid "Notices"
msgstr "Tin nhắn"
+#: actions/deleteapplication.php:63
+#, fuzzy
+msgid "You must be logged in to delete an application."
+msgstr "Bạn phải đăng nhập vào mới có thể gửi thư mời những "
+
+#: actions/deleteapplication.php:71
+#, fuzzy
+msgid "Application not found."
+msgstr "Tin nhắn không có hồ sơ cá nhân"
+
+#: actions/deleteapplication.php:78 actions/editapplication.php:77
+#: actions/showapplication.php:94
+#, fuzzy
+msgid "You are not the owner of this application."
+msgstr "Bạn chưa cập nhật thông tin riêng"
+
+#: actions/deleteapplication.php:102 actions/editapplication.php:127
+#: actions/newapplication.php:110 actions/showapplication.php:118
+#: lib/action.php:1195
+#, fuzzy
+msgid "There was a problem with your session token."
+msgstr "Có lỗi xảy ra khi thao tác. Hãy thử lại lần nữa."
+
+#: actions/deleteapplication.php:123 actions/deleteapplication.php:147
+#, fuzzy
+msgid "Delete application"
+msgstr "Không có tin nhắn nào."
+
+#: actions/deleteapplication.php:149
+msgid ""
+"Are you sure you want to delete this application? This will clear all data "
+"about the application from the database, including all existing user "
+"connections."
+msgstr ""
+
+#: actions/deleteapplication.php:156
+#, fuzzy
+msgid "Do not delete this application"
+msgstr "Không thể xóa tin nhắn này."
+
+#: actions/deleteapplication.php:160
+#, fuzzy
+msgid "Delete this application"
+msgstr "Xóa tin nhắn"
+
#: actions/deletenotice.php:67 actions/disfavor.php:61 actions/favor.php:62
#: actions/groupblock.php:61 actions/groupunblock.php:61 actions/logout.php:69
#: actions/makeadmin.php:61 actions/newmessage.php:87 actions/newnotice.php:89
@@ -966,7 +1025,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:608
+#: actions/deletenotice.php:146 lib/noticelist.php:624
#, fuzzy
msgid "Delete this notice"
msgstr "Xóa tin nhắn"
@@ -1128,7 +1187,7 @@ msgstr "Tin nhắn này đã có trong danh sách tin nhắn ưa thích của b
msgid "Add to favorites"
msgstr "Tìm kiếm các tin nhắn ưa thích của %s"
-#: actions/doc.php:155
+#: actions/doc.php:158
#, fuzzy, php-format
msgid "No such document \"%s\""
msgstr "Không có tài liệu nào."
@@ -1143,23 +1202,12 @@ msgstr "Tin nhắn không có hồ sơ cá nhân"
msgid "You must be logged in to edit an application."
msgstr "Bạn phải đăng nhập vào mới có thể gửi thư mời những "
-#: actions/editapplication.php:77 actions/showapplication.php:94
-#, fuzzy
-msgid "You are not the owner of this application."
-msgstr "Bạn chưa cập nhật thông tin riêng"
-
-#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:163
+#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:166
#: actions/showapplication.php:87
#, fuzzy
msgid "No such application."
msgstr "Không có tin nhắn nào."
-#: actions/editapplication.php:127 actions/newapplication.php:110
-#: actions/showapplication.php:118 lib/action.php:1195
-#, fuzzy
-msgid "There was a problem with your session token."
-msgstr "Có lỗi xảy ra khi thao tác. Hãy thử lại lần nữa."
-
#: actions/editapplication.php:161
msgid "Use this form to edit your application."
msgstr ""
@@ -1169,47 +1217,52 @@ msgstr ""
msgid "Name is required."
msgstr "Cùng mật khẩu ở trên. Bắt buộc."
-#: actions/editapplication.php:180 actions/newapplication.php:162
+#: actions/editapplication.php:180 actions/newapplication.php:165
#, fuzzy
msgid "Name is too long (max 255 chars)."
msgstr "Tên đầy đủ quá dài (tối đa là 255 ký tự)."
-#: actions/editapplication.php:183 actions/newapplication.php:165
+#: actions/editapplication.php:183 actions/newapplication.php:162
+#, fuzzy
+msgid "Name already in use. Try another one."
+msgstr "Biệt hiệu này đã dùng rồi. Hãy nhập biệt hiệu khác."
+
+#: actions/editapplication.php:186 actions/newapplication.php:168
#, fuzzy
msgid "Description is required."
msgstr "Mô tả"
-#: actions/editapplication.php:191
+#: actions/editapplication.php:194
msgid "Source URL is too long."
msgstr ""
-#: actions/editapplication.php:197 actions/newapplication.php:182
+#: actions/editapplication.php:200 actions/newapplication.php:185
#, fuzzy
msgid "Source URL is not valid."
msgstr "Trang chủ không phải là URL"
-#: actions/editapplication.php:200 actions/newapplication.php:185
+#: actions/editapplication.php:203 actions/newapplication.php:188
msgid "Organization is required."
msgstr ""
-#: actions/editapplication.php:203 actions/newapplication.php:188
+#: actions/editapplication.php:206 actions/newapplication.php:191
#, fuzzy
msgid "Organization is too long (max 255 chars)."
msgstr "Tên khu vực quá dài (không quá 255 ký tự)."
-#: actions/editapplication.php:206 actions/newapplication.php:191
+#: actions/editapplication.php:209 actions/newapplication.php:194
msgid "Organization homepage is required."
msgstr ""
-#: actions/editapplication.php:215 actions/newapplication.php:203
+#: actions/editapplication.php:218 actions/newapplication.php:206
msgid "Callback is too long."
msgstr ""
-#: actions/editapplication.php:222 actions/newapplication.php:212
+#: actions/editapplication.php:225 actions/newapplication.php:215
msgid "Callback URL is not valid."
msgstr ""
-#: actions/editapplication.php:255
+#: actions/editapplication.php:258
#, fuzzy
msgid "Could not update application."
msgstr "Không thể cập nhật thành viên."
@@ -2182,11 +2235,11 @@ msgstr "Bạn phải đăng nhập vào mới có thể gửi thư mời những
msgid "Use this form to register a new application."
msgstr ""
-#: actions/newapplication.php:173
+#: actions/newapplication.php:176
msgid "Source URL is required."
msgstr ""
-#: actions/newapplication.php:255 actions/newapplication.php:264
+#: actions/newapplication.php:258 actions/newapplication.php:267
#, fuzzy
msgid "Could not create application."
msgstr "Không thể tạo favorite."
@@ -2323,29 +2376,29 @@ msgstr ""
msgid "You have not registered any applications yet."
msgstr ""
-#: actions/oauthconnectionssettings.php:71
+#: actions/oauthconnectionssettings.php:72
msgid "Connected applications"
msgstr ""
-#: actions/oauthconnectionssettings.php:87
+#: actions/oauthconnectionssettings.php:83
msgid "You have allowed the following applications to access you account."
msgstr ""
-#: actions/oauthconnectionssettings.php:170
+#: actions/oauthconnectionssettings.php:175
#, fuzzy
msgid "You are not a user of that application."
msgstr "Bạn chưa cập nhật thông tin riêng"
-#: actions/oauthconnectionssettings.php:180
+#: actions/oauthconnectionssettings.php:186
msgid "Unable to revoke access for app: "
msgstr ""
-#: actions/oauthconnectionssettings.php:192
+#: actions/oauthconnectionssettings.php:198
#, php-format
msgid "You have not authorized any applications to use your account."
msgstr ""
-#: actions/oauthconnectionssettings.php:205
+#: actions/oauthconnectionssettings.php:211
msgid "Developers can edit the registration settings for their applications "
msgstr ""
@@ -2878,39 +2931,39 @@ msgstr "Dòng tin công cộng"
msgid "Public timeline"
msgstr "Dòng tin công cộng"
-#: actions/public.php:151
+#: actions/public.php:159
#, fuzzy
msgid "Public Stream Feed (RSS 1.0)"
msgstr "Dòng tin công cộng"
-#: actions/public.php:155
+#: actions/public.php:163
#, fuzzy
msgid "Public Stream Feed (RSS 2.0)"
msgstr "Dòng tin công cộng"
-#: actions/public.php:159
+#: actions/public.php:167
#, fuzzy
msgid "Public Stream Feed (Atom)"
msgstr "Dòng tin công cộng"
-#: actions/public.php:179
+#: actions/public.php:187
#, php-format
msgid ""
"This is the public timeline for %%site.name%% but no one has posted anything "
"yet."
msgstr ""
-#: actions/public.php:182
+#: actions/public.php:190
msgid "Be the first to post!"
msgstr ""
-#: actions/public.php:186
+#: actions/public.php:194
#, php-format
msgid ""
"Why not [register an account](%%action.register%%) and be the first to post!"
msgstr ""
-#: actions/public.php:233
+#: actions/public.php:241
#, php-format
msgid ""
"This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2919,7 +2972,7 @@ msgid ""
"friends, family, and colleagues! ([Read more](%%doc.help%%))"
msgstr ""
-#: actions/public.php:238
+#: actions/public.php:246
#, php-format
msgid ""
"This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -3281,7 +3334,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:626
+#: actions/repeat.php:114 lib/noticelist.php:642
#, fuzzy
msgid "Repeated"
msgstr "Tạo"
@@ -3343,6 +3396,11 @@ msgstr ""
msgid "Replies to %1$s on %2$s!"
msgstr "%s chào mừng bạn "
+#: actions/rsd.php:146 actions/version.php:157
+#, fuzzy
+msgid "StatusNet"
+msgstr "Hình đại diện đã được cập nhật."
+
#: actions/sandbox.php:65 actions/unsandbox.php:65
#, fuzzy
msgid "You cannot sandbox users on this site."
@@ -3389,79 +3447,84 @@ msgstr "Thay đổi hình đại diện"
msgid "You must be logged in to view an application."
msgstr "Bạn phải đăng nhập vào mới có thể gửi thư mời những "
-#: actions/showapplication.php:158
+#: actions/showapplication.php:157
#, fuzzy
msgid "Application profile"
msgstr "Tin nhắn không có hồ sơ cá nhân"
-#: actions/showapplication.php:160 lib/applicationeditform.php:180
+#: actions/showapplication.php:159 lib/applicationeditform.php:180
msgid "Icon"
msgstr ""
-#: actions/showapplication.php:170 actions/version.php:195
+#: actions/showapplication.php:169 actions/version.php:195
#: lib/applicationeditform.php:195
#, fuzzy
msgid "Name"
msgstr "Biệt danh"
-#: actions/showapplication.php:179 lib/applicationeditform.php:222
+#: actions/showapplication.php:178 lib/applicationeditform.php:222
#, fuzzy
msgid "Organization"
msgstr "Thư mời đã gửi"
-#: actions/showapplication.php:188 actions/version.php:198
+#: actions/showapplication.php:187 actions/version.php:198
#: lib/applicationeditform.php:209 lib/groupeditform.php:172
msgid "Description"
msgstr "Mô tả"
-#: actions/showapplication.php:193 actions/showgroup.php:429
+#: actions/showapplication.php:192 actions/showgroup.php:429
#: lib/profileaction.php:174
msgid "Statistics"
msgstr "Số liệu thống kê"
-#: actions/showapplication.php:204
+#: actions/showapplication.php:203
#, php-format
-msgid "created by %1$s - %2$s access by default - %3$d users"
+msgid "Created by %1$s - %2$s access by default - %3$d users"
msgstr ""
-#: actions/showapplication.php:214
+#: actions/showapplication.php:213
msgid "Application actions"
msgstr ""
-#: actions/showapplication.php:233
+#: actions/showapplication.php:236
msgid "Reset key & secret"
msgstr ""
-#: actions/showapplication.php:241
+#: actions/showapplication.php:261
msgid "Application info"
msgstr ""
-#: actions/showapplication.php:243
+#: actions/showapplication.php:263
msgid "Consumer key"
msgstr ""
-#: actions/showapplication.php:248
+#: actions/showapplication.php:268
msgid "Consumer secret"
msgstr ""
-#: actions/showapplication.php:253
+#: actions/showapplication.php:273
msgid "Request token URL"
msgstr ""
-#: actions/showapplication.php:258
+#: actions/showapplication.php:278
msgid "Access token URL"
msgstr ""
-#: actions/showapplication.php:263
+#: actions/showapplication.php:283
msgid "Authorize URL"
msgstr ""
-#: actions/showapplication.php:268
+#: actions/showapplication.php:288
msgid ""
"Note: We support HMAC-SHA1 signatures. We do not support the plaintext "
"signature method."
msgstr ""
+#: actions/showapplication.php:309
+#, fuzzy
+msgid "Are you sure you want to reset your consumer key and secret?"
+msgstr "Bạn có chắc chắn là muốn xóa tin nhắn này không?"
+
#: actions/showfavorites.php:79
#, fuzzy, php-format
msgid "%1$s's favorite notices, page %2$d"
@@ -3668,25 +3731,25 @@ msgstr "Dòng tin nhắn cho %s"
msgid "FOAF for %s"
msgstr "Hộp thư đi của %s"
-#: actions/showstream.php:191
+#: actions/showstream.php:200
#, php-format
msgid "This is the timeline for %1$s but %2$s hasn't posted anything yet."
msgstr ""
-#: actions/showstream.php:196
+#: actions/showstream.php:205
msgid ""
"Seen anything interesting recently? You haven't posted any notices yet, now "
"would be a good time to start :)"
msgstr ""
-#: actions/showstream.php:198
+#: actions/showstream.php:207
#, php-format
msgid ""
"You can try to nudge %1$s or [post something to his or her attention](%%%%"
"action.newnotice%%%%?status_textarea=%2$s)."
msgstr ""
-#: actions/showstream.php:234
+#: actions/showstream.php:243
#, php-format
msgid ""
"**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3695,7 +3758,7 @@ msgid ""
"follow **%s**'s notices and many more! ([Read more](%%%%doc.help%%%%))"
msgstr ""
-#: actions/showstream.php:239
+#: actions/showstream.php:248
#, php-format
msgid ""
"**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3703,7 +3766,7 @@ msgid ""
"[StatusNet](http://status.net/) tool. "
msgstr ""
-#: actions/showstream.php:296
+#: actions/showstream.php:305
#, fuzzy, php-format
msgid "Repeat of %s"
msgstr "Trả lời cho %s"
@@ -4402,11 +4465,6 @@ msgid ""
"Inc. and contributors."
msgstr ""
-#: actions/version.php:157
-#, fuzzy
-msgid "StatusNet"
-msgstr "Hình đại diện đã được cập nhật."
-
#: actions/version.php:161
msgid "Contributors"
msgstr ""
@@ -4533,22 +4591,22 @@ msgstr ""
msgid "Problem saving notice."
msgstr "Có lỗi xảy ra khi lưu tin nhắn."
-#: classes/Notice.php:790
+#: classes/Notice.php:788
#, fuzzy
msgid "Problem saving group inbox."
msgstr "Có lỗi xảy ra khi lưu tin nhắn."
-#: classes/Notice.php:850
+#: classes/Notice.php:848
#, 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:1233
+#: classes/Notice.php:1231
#, fuzzy, php-format
msgid "RT @%1$s %2$s"
msgstr "%s (%s)"
-#: classes/User.php:382
+#: classes/User.php:385
#, fuzzy, php-format
msgid "Welcome to %1$s, @%2$s!"
msgstr "%s chào mừng bạn "
@@ -4850,11 +4908,11 @@ msgstr "Xác nhận SMS"
msgid "Sessions configuration"
msgstr "Xác nhận SMS"
-#: lib/apiauth.php:99
+#: lib/apiauth.php:95
msgid "API resource requires read-write access, but you only have read access."
msgstr ""
-#: lib/apiauth.php:279
+#: lib/apiauth.php:273
#, php-format
msgid "Failed API auth attempt, nickname = %1$s, proxy = %2$s, ip = %3$s"
msgstr ""
@@ -5231,20 +5289,20 @@ msgid ""
"tracking - not yet implemented.\n"
msgstr ""
-#: lib/common.php:131
+#: lib/common.php:135
#, fuzzy
msgid "No configuration file found. "
msgstr "Không có mã số xác nhận."
-#: lib/common.php:132
+#: lib/common.php:136
msgid "I looked for configuration files in the following places: "
msgstr ""
-#: lib/common.php:134
+#: lib/common.php:138
msgid "You may wish to run the installer to fix this."
msgstr ""
-#: lib/common.php:135
+#: lib/common.php:139
msgid "Go to the installer."
msgstr ""
@@ -5884,26 +5942,26 @@ msgstr ""
msgid "at"
msgstr ""
-#: lib/noticelist.php:531
+#: lib/noticelist.php:547
#, fuzzy
msgid "in context"
msgstr "Không có nội dung!"
-#: lib/noticelist.php:556
+#: lib/noticelist.php:572
#, fuzzy
msgid "Repeated by"
msgstr "Tạo"
-#: lib/noticelist.php:582
+#: lib/noticelist.php:598
#, fuzzy
msgid "Reply to this notice"
msgstr "Trả lời tin nhắn này"
-#: lib/noticelist.php:583
+#: lib/noticelist.php:599
msgid "Reply"
msgstr "Trả lời"
-#: lib/noticelist.php:625
+#: lib/noticelist.php:641
#, fuzzy
msgid "Notice repeated"
msgstr "Tin đã gửi"
@@ -6058,6 +6116,10 @@ msgstr "Trả lời tin nhắn này"
msgid "Repeat this notice"
msgstr "Trả lời tin nhắn này"
+#: lib/router.php:665
+msgid "No single user defined for single-user mode."
+msgstr ""
+
#: lib/sandboxform.php:67
#, fuzzy
msgid "Sandbox"
@@ -6244,47 +6306,47 @@ msgstr "Tin mới nhất"
msgid "Moderate"
msgstr ""
-#: lib/util.php:868
+#: lib/util.php:867
msgid "a few seconds ago"
msgstr "vài giây trước"
-#: lib/util.php:870
+#: lib/util.php:869
msgid "about a minute ago"
msgstr "1 phút trước"
-#: lib/util.php:872
+#: lib/util.php:871
#, php-format
msgid "about %d minutes ago"
msgstr "%d phút trước"
-#: lib/util.php:874
+#: lib/util.php:873
msgid "about an hour ago"
msgstr "1 giờ trước"
-#: lib/util.php:876
+#: lib/util.php:875
#, php-format
msgid "about %d hours ago"
msgstr "%d giờ trước"
-#: lib/util.php:878
+#: lib/util.php:877
msgid "about a day ago"
msgstr "1 ngày trước"
-#: lib/util.php:880
+#: lib/util.php:879
#, php-format
msgid "about %d days ago"
msgstr "%d ngày trước"
-#: lib/util.php:882
+#: lib/util.php:881
msgid "about a month ago"
msgstr "1 tháng trước"
-#: lib/util.php:884
+#: lib/util.php:883
#, php-format
msgid "about %d months ago"
msgstr "%d tháng trước"
-#: lib/util.php:886
+#: lib/util.php:885
msgid "about a year ago"
msgstr "1 năm trước"
diff --git a/locale/zh_CN/LC_MESSAGES/statusnet.po b/locale/zh_CN/LC_MESSAGES/statusnet.po
index 702393633..ef95bd01a 100644
--- a/locale/zh_CN/LC_MESSAGES/statusnet.po
+++ b/locale/zh_CN/LC_MESSAGES/statusnet.po
@@ -10,12 +10,12 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-01-30 23:41+0000\n"
-"PO-Revision-Date: 2010-01-30 23:42:59+0000\n"
+"POT-Creation-Date: 2010-02-04 10:31+0000\n"
+"PO-Revision-Date: 2010-02-04 10:33:49+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 (r61734); Translate extension (2010-01-16)\n"
+"X-Generator: MediaWiki 1.16alpha (r61969); Translate extension (2010-01-16)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: zh-hans\n"
"X-Message-Group: out-statusnet\n"
@@ -101,7 +101,7 @@ msgstr "没有该页面"
#: actions/favoritesrss.php:74 actions/foaf.php:40 actions/foaf.php:58
#: actions/microsummary.php:62 actions/newmessage.php:116 actions/otp.php:76
#: actions/remotesubscribe.php:145 actions/remotesubscribe.php:154
-#: actions/replies.php:73 actions/repliesrss.php:38
+#: actions/replies.php:73 actions/repliesrss.php:38 actions/rsd.php:116
#: actions/showfavorites.php:105 actions/userbyid.php:74
#: actions/usergroups.php:91 actions/userrss.php:38 actions/xrds.php:71
#: lib/command.php:163 lib/command.php:302 lib/command.php:355
@@ -158,7 +158,7 @@ msgid ""
"his or her attention](%%%%action.newnotice%%%%?status_textarea=%3$s)."
msgstr ""
-#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:202
+#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:211
#, php-format
msgid ""
"Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
@@ -393,8 +393,8 @@ msgstr "昵称已被使用,换一个吧。"
msgid "Not a valid nickname."
msgstr "不是有效的昵称。"
-#: actions/apigroupcreate.php:196 actions/editapplication.php:212
-#: actions/editgroup.php:195 actions/newapplication.php:200
+#: actions/apigroupcreate.php:196 actions/editapplication.php:215
+#: actions/editgroup.php:195 actions/newapplication.php:203
#: actions/newgroup.php:139 actions/profilesettings.php:222
#: actions/register.php:217
msgid "Homepage is not a valid URL."
@@ -406,8 +406,8 @@ msgstr "主页的URL不正确。"
msgid "Full name is too long (max 255 chars)."
msgstr "全名过长(不能超过 255 个字符)。"
-#: actions/apigroupcreate.php:213 actions/editapplication.php:187
-#: actions/newapplication.php:169
+#: actions/apigroupcreate.php:213 actions/editapplication.php:190
+#: actions/newapplication.php:172
#, fuzzy, php-format
msgid "Description is too long (max %d chars)."
msgstr "描述过长(不能超过140字符)。"
@@ -487,18 +487,23 @@ msgstr "%s 群组"
msgid "groups on %s"
msgstr "组动作"
-#: actions/apioauthauthorize.php:108 actions/apioauthauthorize.php:114
-msgid "Bad request."
+#: actions/apioauthauthorize.php:101
+msgid "No oauth_token parameter provided."
msgstr ""
-#: actions/apioauthauthorize.php:134 actions/avatarsettings.php:268
+#: actions/apioauthauthorize.php:106
+#, fuzzy
+msgid "Invalid token."
+msgstr "大小不正确。"
+
+#: actions/apioauthauthorize.php:123 actions/avatarsettings.php:268
#: actions/deletenotice.php:157 actions/disfavor.php:74
-#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:50
+#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:54
#: actions/groupblock.php:66 actions/grouplogo.php:309
#: actions/groupunblock.php:66 actions/imsettings.php:206
#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
-#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:139
+#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:135
#: actions/othersettings.php:145 actions/passwordsettings.php:138
#: actions/profilesettings.php:194 actions/recoverpassword.php:337
#: actions/register.php:165 actions/remotesubscribe.php:77
@@ -509,76 +514,84 @@ msgstr ""
msgid "There was a problem with your session token. Try again, please."
msgstr "会话标识有问题,请重试。"
-#: actions/apioauthauthorize.php:146
+#: actions/apioauthauthorize.php:135
#, fuzzy
msgid "Invalid nickname / password!"
msgstr "用户名或密码不正确。"
-#: actions/apioauthauthorize.php:170
+#: actions/apioauthauthorize.php:159
#, fuzzy
msgid "Database error deleting OAuth application user."
msgstr "保存用户设置时出错。"
-#: actions/apioauthauthorize.php:196
+#: actions/apioauthauthorize.php:185
#, fuzzy
msgid "Database error inserting OAuth application user."
msgstr "添加标签时数据库出错:%s"
-#: actions/apioauthauthorize.php:231
+#: actions/apioauthauthorize.php:214
#, php-format
msgid ""
"The request token %s has been authorized. Please exchange it for an access "
"token."
msgstr ""
-#: actions/apioauthauthorize.php:241
+#: actions/apioauthauthorize.php:227
#, php-format
-msgid "The request token %s has been denied."
+msgid "The request token %s has been denied and revoked."
msgstr ""
-#: actions/apioauthauthorize.php:246 actions/avatarsettings.php:281
+#: actions/apioauthauthorize.php:232 actions/avatarsettings.php:281
#: actions/designadminpanel.php:103 actions/editapplication.php:139
#: actions/emailsettings.php:256 actions/grouplogo.php:319
#: actions/imsettings.php:220 actions/newapplication.php:121
-#: actions/oauthconnectionssettings.php:151 actions/recoverpassword.php:44
+#: actions/oauthconnectionssettings.php:147 actions/recoverpassword.php:44
#: actions/smssettings.php:248 lib/designsettings.php:304
msgid "Unexpected form submission."
msgstr "未预料的表单提交。"
-#: actions/apioauthauthorize.php:273
+#: actions/apioauthauthorize.php:259
msgid "An application would like to connect to your account"
msgstr ""
-#: actions/apioauthauthorize.php:290
+#: actions/apioauthauthorize.php:276
msgid "Allow or deny access"
msgstr ""
-#: actions/apioauthauthorize.php:320 lib/action.php:441
+#: actions/apioauthauthorize.php:292
+#, php-format
+msgid ""
+"The application <strong>%1$s</strong> by <strong>%2$s</strong> would like "
+"the ability to <strong>%3$s</strong> your %4$s account data. You should only "
+"give access to your %4$s account to third parties you trust."
+msgstr ""
+
+#: actions/apioauthauthorize.php:310 lib/action.php:441
msgid "Account"
msgstr "帐号"
-#: actions/apioauthauthorize.php:323 actions/login.php:230
+#: actions/apioauthauthorize.php:313 actions/login.php:230
#: actions/profilesettings.php:106 actions/register.php:424
#: actions/showgroup.php:236 actions/tagother.php:94 lib/groupeditform.php:152
#: lib/userprofile.php:131
msgid "Nickname"
msgstr "昵称"
-#: actions/apioauthauthorize.php:326 actions/login.php:233
+#: actions/apioauthauthorize.php:316 actions/login.php:233
#: actions/register.php:429 lib/accountsettingsaction.php:116
msgid "Password"
msgstr "密码"
-#: actions/apioauthauthorize.php:338
+#: actions/apioauthauthorize.php:328
msgid "Deny"
msgstr ""
-#: actions/apioauthauthorize.php:344
+#: actions/apioauthauthorize.php:334
#, fuzzy
msgid "Allow"
msgstr "全部"
-#: actions/apioauthauthorize.php:361
+#: actions/apioauthauthorize.php:351
msgid "Allow or deny access to your account information."
msgstr ""
@@ -753,8 +766,8 @@ msgstr "原来的"
msgid "Preview"
msgstr "预览"
-#: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:608
+#: actions/avatarsettings.php:149 actions/showapplication.php:252
+#: lib/deleteuserform.php:66 lib/noticelist.php:624
#, fuzzy
msgid "Delete"
msgstr "删除"
@@ -805,8 +818,9 @@ msgid ""
"will not be notified of any @-replies from them."
msgstr ""
-#: actions/block.php:143 actions/deletenotice.php:145
-#: actions/deleteuser.php:147 actions/groupblock.php:178
+#: actions/block.php:143 actions/deleteapplication.php:153
+#: actions/deletenotice.php:145 actions/deleteuser.php:147
+#: actions/groupblock.php:178
msgid "No"
msgstr "否"
@@ -815,9 +829,9 @@ msgstr "否"
msgid "Do not block this user"
msgstr "取消阻止次用户"
-#: actions/block.php:144 actions/deletenotice.php:146
-#: actions/deleteuser.php:148 actions/groupblock.php:179
-#: lib/repeatform.php:132
+#: actions/block.php:144 actions/deleteapplication.php:158
+#: actions/deletenotice.php:146 actions/deleteuser.php:148
+#: actions/groupblock.php:179 lib/repeatform.php:132
msgid "Yes"
msgstr "是"
@@ -928,6 +942,51 @@ msgstr "确认码"
msgid "Notices"
msgstr "通告"
+#: actions/deleteapplication.php:63
+#, fuzzy
+msgid "You must be logged in to delete an application."
+msgstr "您必须登录才能创建小组。"
+
+#: actions/deleteapplication.php:71
+#, fuzzy
+msgid "Application not found."
+msgstr "通告没有关联个人信息"
+
+#: actions/deleteapplication.php:78 actions/editapplication.php:77
+#: actions/showapplication.php:94
+#, fuzzy
+msgid "You are not the owner of this application."
+msgstr "您未告知此个人信息"
+
+#: actions/deleteapplication.php:102 actions/editapplication.php:127
+#: actions/newapplication.php:110 actions/showapplication.php:118
+#: lib/action.php:1195
+#, fuzzy
+msgid "There was a problem with your session token."
+msgstr "会话标识有问题,请重试。"
+
+#: actions/deleteapplication.php:123 actions/deleteapplication.php:147
+#, fuzzy
+msgid "Delete application"
+msgstr "没有这份通告。"
+
+#: actions/deleteapplication.php:149
+msgid ""
+"Are you sure you want to delete this application? This will clear all data "
+"about the application from the database, including all existing user "
+"connections."
+msgstr ""
+
+#: actions/deleteapplication.php:156
+#, fuzzy
+msgid "Do not delete this application"
+msgstr "无法删除通告。"
+
+#: actions/deleteapplication.php:160
+#, fuzzy
+msgid "Delete this application"
+msgstr "删除通告"
+
#: actions/deletenotice.php:67 actions/disfavor.php:61 actions/favor.php:62
#: actions/groupblock.php:61 actions/groupunblock.php:61 actions/logout.php:69
#: actions/makeadmin.php:61 actions/newmessage.php:87 actions/newnotice.php:89
@@ -962,7 +1021,7 @@ msgstr "确定要删除这条消息吗?"
msgid "Do not delete this notice"
msgstr "无法删除通告。"
-#: actions/deletenotice.php:146 lib/noticelist.php:608
+#: actions/deletenotice.php:146 lib/noticelist.php:624
#, fuzzy
msgid "Delete this notice"
msgstr "删除通告"
@@ -1117,7 +1176,7 @@ msgstr "此通告未被收藏!"
msgid "Add to favorites"
msgstr "加入收藏"
-#: actions/doc.php:155
+#: actions/doc.php:158
#, fuzzy, php-format
msgid "No such document \"%s\""
msgstr "没有这份文档。"
@@ -1132,23 +1191,12 @@ msgstr "其他选项"
msgid "You must be logged in to edit an application."
msgstr "您必须登录才能创建小组。"
-#: actions/editapplication.php:77 actions/showapplication.php:94
-#, fuzzy
-msgid "You are not the owner of this application."
-msgstr "您未告知此个人信息"
-
-#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:163
+#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:166
#: actions/showapplication.php:87
#, fuzzy
msgid "No such application."
msgstr "没有这份通告。"
-#: actions/editapplication.php:127 actions/newapplication.php:110
-#: actions/showapplication.php:118 lib/action.php:1195
-#, fuzzy
-msgid "There was a problem with your session token."
-msgstr "会话标识有问题,请重试。"
-
#: actions/editapplication.php:161
#, fuzzy
msgid "Use this form to edit your application."
@@ -1159,47 +1207,52 @@ msgstr "使用这个表单来编辑组"
msgid "Name is required."
msgstr "相同的密码。此项必填。"
-#: actions/editapplication.php:180 actions/newapplication.php:162
+#: actions/editapplication.php:180 actions/newapplication.php:165
#, fuzzy
msgid "Name is too long (max 255 chars)."
msgstr "全名过长(不能超过 255 个字符)。"
-#: actions/editapplication.php:183 actions/newapplication.php:165
+#: actions/editapplication.php:183 actions/newapplication.php:162
+#, fuzzy
+msgid "Name already in use. Try another one."
+msgstr "昵称已被使用,换一个吧。"
+
+#: actions/editapplication.php:186 actions/newapplication.php:168
#, fuzzy
msgid "Description is required."
msgstr "描述"
-#: actions/editapplication.php:191
+#: actions/editapplication.php:194
msgid "Source URL is too long."
msgstr ""
-#: actions/editapplication.php:197 actions/newapplication.php:182
+#: actions/editapplication.php:200 actions/newapplication.php:185
#, fuzzy
msgid "Source URL is not valid."
msgstr "主页的URL不正确。"
-#: actions/editapplication.php:200 actions/newapplication.php:185
+#: actions/editapplication.php:203 actions/newapplication.php:188
msgid "Organization is required."
msgstr ""
-#: actions/editapplication.php:203 actions/newapplication.php:188
+#: actions/editapplication.php:206 actions/newapplication.php:191
#, fuzzy
msgid "Organization is too long (max 255 chars)."
msgstr "位置过长(不能超过255个字符)。"
-#: actions/editapplication.php:206 actions/newapplication.php:191
+#: actions/editapplication.php:209 actions/newapplication.php:194
msgid "Organization homepage is required."
msgstr ""
-#: actions/editapplication.php:215 actions/newapplication.php:203
+#: actions/editapplication.php:218 actions/newapplication.php:206
msgid "Callback is too long."
msgstr ""
-#: actions/editapplication.php:222 actions/newapplication.php:212
+#: actions/editapplication.php:225 actions/newapplication.php:215
msgid "Callback URL is not valid."
msgstr ""
-#: actions/editapplication.php:255
+#: actions/editapplication.php:258
#, fuzzy
msgid "Could not update application."
msgstr "无法更新组"
@@ -2138,11 +2191,11 @@ msgstr "您必须登录才能创建小组。"
msgid "Use this form to register a new application."
msgstr "使用此表格创建组。"
-#: actions/newapplication.php:173
+#: actions/newapplication.php:176
msgid "Source URL is required."
msgstr ""
-#: actions/newapplication.php:255 actions/newapplication.php:264
+#: actions/newapplication.php:258 actions/newapplication.php:267
#, fuzzy
msgid "Could not create application."
msgstr "无法创建收藏。"
@@ -2273,29 +2326,29 @@ msgstr ""
msgid "You have not registered any applications yet."
msgstr ""
-#: actions/oauthconnectionssettings.php:71
+#: actions/oauthconnectionssettings.php:72
msgid "Connected applications"
msgstr ""
-#: actions/oauthconnectionssettings.php:87
+#: actions/oauthconnectionssettings.php:83
msgid "You have allowed the following applications to access you account."
msgstr ""
-#: actions/oauthconnectionssettings.php:170
+#: actions/oauthconnectionssettings.php:175
#, fuzzy
msgid "You are not a user of that application."
msgstr "您未告知此个人信息"
-#: actions/oauthconnectionssettings.php:180
+#: actions/oauthconnectionssettings.php:186
msgid "Unable to revoke access for app: "
msgstr ""
-#: actions/oauthconnectionssettings.php:192
+#: actions/oauthconnectionssettings.php:198
#, php-format
msgid "You have not authorized any applications to use your account."
msgstr ""
-#: actions/oauthconnectionssettings.php:205
+#: actions/oauthconnectionssettings.php:211
msgid "Developers can edit the registration settings for their applications "
msgstr ""
@@ -2817,39 +2870,39 @@ msgstr "公开的时间表"
msgid "Public timeline"
msgstr "公开的时间表"
-#: actions/public.php:151
+#: actions/public.php:159
#, fuzzy
msgid "Public Stream Feed (RSS 1.0)"
msgstr "公开的聚合"
-#: actions/public.php:155
+#: actions/public.php:163
#, fuzzy
msgid "Public Stream Feed (RSS 2.0)"
msgstr "公开的聚合"
-#: actions/public.php:159
+#: actions/public.php:167
#, fuzzy
msgid "Public Stream Feed (Atom)"
msgstr "公开的聚合"
-#: actions/public.php:179
+#: actions/public.php:187
#, php-format
msgid ""
"This is the public timeline for %%site.name%% but no one has posted anything "
"yet."
msgstr ""
-#: actions/public.php:182
+#: actions/public.php:190
msgid "Be the first to post!"
msgstr ""
-#: actions/public.php:186
+#: actions/public.php:194
#, php-format
msgid ""
"Why not [register an account](%%action.register%%) and be the first to post!"
msgstr ""
-#: actions/public.php:233
+#: actions/public.php:241
#, php-format
msgid ""
"This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2858,7 +2911,7 @@ msgid ""
"friends, family, and colleagues! ([Read more](%%doc.help%%))"
msgstr ""
-#: actions/public.php:238
+#: actions/public.php:246
#, fuzzy, php-format
msgid ""
"This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -3215,7 +3268,7 @@ msgstr "您必须同意此授权方可注册。"
msgid "You already repeated that notice."
msgstr "您已成功阻止该用户:"
-#: actions/repeat.php:114 lib/noticelist.php:626
+#: actions/repeat.php:114 lib/noticelist.php:642
#, fuzzy
msgid "Repeated"
msgstr "创建"
@@ -3277,6 +3330,11 @@ msgstr ""
msgid "Replies to %1$s on %2$s!"
msgstr "发送给 %1$s 的 %2$s 消息"
+#: actions/rsd.php:146 actions/version.php:157
+#, fuzzy
+msgid "StatusNet"
+msgstr "头像已更新。"
+
#: actions/sandbox.php:65 actions/unsandbox.php:65
#, fuzzy
msgid "You cannot sandbox users on this site."
@@ -3323,80 +3381,85 @@ msgstr "头像设置"
msgid "You must be logged in to view an application."
msgstr "您必须登录才能邀请其他人使用 %s"
-#: actions/showapplication.php:158
+#: actions/showapplication.php:157
#, fuzzy
msgid "Application profile"
msgstr "通告没有关联个人信息"
-#: actions/showapplication.php:160 lib/applicationeditform.php:180
+#: actions/showapplication.php:159 lib/applicationeditform.php:180
msgid "Icon"
msgstr ""
-#: actions/showapplication.php:170 actions/version.php:195
+#: actions/showapplication.php:169 actions/version.php:195
#: lib/applicationeditform.php:195
#, fuzzy
msgid "Name"
msgstr "昵称"
-#: actions/showapplication.php:179 lib/applicationeditform.php:222
+#: actions/showapplication.php:178 lib/applicationeditform.php:222
#, fuzzy
msgid "Organization"
msgstr "分页"
-#: actions/showapplication.php:188 actions/version.php:198
+#: actions/showapplication.php:187 actions/version.php:198
#: lib/applicationeditform.php:209 lib/groupeditform.php:172
#, fuzzy
msgid "Description"
msgstr "描述"
-#: actions/showapplication.php:193 actions/showgroup.php:429
+#: actions/showapplication.php:192 actions/showgroup.php:429
#: lib/profileaction.php:174
msgid "Statistics"
msgstr "统计"
-#: actions/showapplication.php:204
+#: actions/showapplication.php:203
#, php-format
-msgid "created by %1$s - %2$s access by default - %3$d users"
+msgid "Created by %1$s - %2$s access by default - %3$d users"
msgstr ""
-#: actions/showapplication.php:214
+#: actions/showapplication.php:213
msgid "Application actions"
msgstr ""
-#: actions/showapplication.php:233
+#: actions/showapplication.php:236
msgid "Reset key & secret"
msgstr ""
-#: actions/showapplication.php:241
+#: actions/showapplication.php:261
msgid "Application info"
msgstr ""
-#: actions/showapplication.php:243
+#: actions/showapplication.php:263
msgid "Consumer key"
msgstr ""
-#: actions/showapplication.php:248
+#: actions/showapplication.php:268
msgid "Consumer secret"
msgstr ""
-#: actions/showapplication.php:253
+#: actions/showapplication.php:273
msgid "Request token URL"
msgstr ""
-#: actions/showapplication.php:258
+#: actions/showapplication.php:278
msgid "Access token URL"
msgstr ""
-#: actions/showapplication.php:263
+#: actions/showapplication.php:283
msgid "Authorize URL"
msgstr ""
-#: actions/showapplication.php:268
+#: actions/showapplication.php:288
msgid ""
"Note: We support HMAC-SHA1 signatures. We do not support the plaintext "
"signature method."
msgstr ""
+#: actions/showapplication.php:309
+#, fuzzy
+msgid "Are you sure you want to reset your consumer key and secret?"
+msgstr "确定要删除这条消息吗?"
+
#: actions/showfavorites.php:79
#, fuzzy, php-format
msgid "%1$s's favorite notices, page %2$d"
@@ -3604,25 +3667,25 @@ msgstr "%s 的通告聚合"
msgid "FOAF for %s"
msgstr "%s 的发件箱"
-#: actions/showstream.php:191
+#: actions/showstream.php:200
#, fuzzy, php-format
msgid "This is the timeline for %1$s but %2$s hasn't posted anything yet."
msgstr "这是 %s 和好友的时间线,但是没有任何人发布内容。"
-#: actions/showstream.php:196
+#: actions/showstream.php:205
msgid ""
"Seen anything interesting recently? You haven't posted any notices yet, now "
"would be a good time to start :)"
msgstr ""
-#: actions/showstream.php:198
+#: actions/showstream.php:207
#, php-format
msgid ""
"You can try to nudge %1$s or [post something to his or her attention](%%%%"
"action.newnotice%%%%?status_textarea=%2$s)."
msgstr ""
-#: actions/showstream.php:234
+#: actions/showstream.php:243
#, php-format
msgid ""
"**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3631,7 +3694,7 @@ msgid ""
"follow **%s**'s notices and many more! ([Read more](%%%%doc.help%%%%))"
msgstr ""
-#: actions/showstream.php:239
+#: actions/showstream.php:248
#, fuzzy, php-format
msgid ""
"**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3641,7 +3704,7 @@ msgstr ""
"**%s** 有一个帐号在 %%%%site.name%%%%, 一个微博客服务 [micro-blogging]"
"(http://en.wikipedia.org/wiki/Micro-blogging)"
-#: actions/showstream.php:296
+#: actions/showstream.php:305
#, fuzzy, php-format
msgid "Repeat of %s"
msgstr "%s 的回复"
@@ -4329,11 +4392,6 @@ msgid ""
"Inc. and contributors."
msgstr ""
-#: actions/version.php:157
-#, fuzzy
-msgid "StatusNet"
-msgstr "头像已更新。"
-
#: actions/version.php:161
msgid "Contributors"
msgstr ""
@@ -4459,22 +4517,22 @@ msgstr "在这个网站你被禁止发布消息。"
msgid "Problem saving notice."
msgstr "保存通告时出错。"
-#: classes/Notice.php:790
+#: classes/Notice.php:788
#, fuzzy
msgid "Problem saving group inbox."
msgstr "保存通告时出错。"
-#: classes/Notice.php:850
+#: classes/Notice.php:848
#, php-format
msgid "DB error inserting reply: %s"
msgstr "添加回复时数据库出错:%s"
-#: classes/Notice.php:1233
+#: classes/Notice.php:1231
#, fuzzy, php-format
msgid "RT @%1$s %2$s"
msgstr "%1$s (%2$s)"
-#: classes/User.php:382
+#: classes/User.php:385
#, fuzzy, php-format
msgid "Welcome to %1$s, @%2$s!"
msgstr "发送给 %1$s 的 %2$s 消息"
@@ -4773,11 +4831,11 @@ msgstr "SMS短信确认"
msgid "Sessions configuration"
msgstr "SMS短信确认"
-#: lib/apiauth.php:99
+#: lib/apiauth.php:95
msgid "API resource requires read-write access, but you only have read access."
msgstr ""
-#: lib/apiauth.php:279
+#: lib/apiauth.php:273
#, php-format
msgid "Failed API auth attempt, nickname = %1$s, proxy = %2$s, ip = %3$s"
msgstr ""
@@ -5146,20 +5204,20 @@ msgid ""
"tracking - not yet implemented.\n"
msgstr ""
-#: lib/common.php:131
+#: lib/common.php:135
#, fuzzy
msgid "No configuration file found. "
msgstr "没有验证码"
-#: lib/common.php:132
+#: lib/common.php:136
msgid "I looked for configuration files in the following places: "
msgstr ""
-#: lib/common.php:134
+#: lib/common.php:138
msgid "You may wish to run the installer to fix this."
msgstr ""
-#: lib/common.php:135
+#: lib/common.php:139
#, fuzzy
msgid "Go to the installer."
msgstr "登入本站"
@@ -5751,27 +5809,27 @@ msgstr ""
msgid "at"
msgstr ""
-#: lib/noticelist.php:531
+#: lib/noticelist.php:547
#, fuzzy
msgid "in context"
msgstr "没有内容!"
-#: lib/noticelist.php:556
+#: lib/noticelist.php:572
#, fuzzy
msgid "Repeated by"
msgstr "创建"
-#: lib/noticelist.php:582
+#: lib/noticelist.php:598
#, fuzzy
msgid "Reply to this notice"
msgstr "无法删除通告。"
-#: lib/noticelist.php:583
+#: lib/noticelist.php:599
#, fuzzy
msgid "Reply"
msgstr "回复"
-#: lib/noticelist.php:625
+#: lib/noticelist.php:641
#, fuzzy
msgid "Notice repeated"
msgstr "消息已发布。"
@@ -5924,6 +5982,10 @@ msgstr "无法删除通告。"
msgid "Repeat this notice"
msgstr "无法删除通告。"
+#: lib/router.php:665
+msgid "No single user defined for single-user mode."
+msgstr ""
+
#: lib/sandboxform.php:67
#, fuzzy
msgid "Sandbox"
@@ -6109,47 +6171,47 @@ msgstr "新消息"
msgid "Moderate"
msgstr ""
-#: lib/util.php:868
+#: lib/util.php:867
msgid "a few seconds ago"
msgstr "几秒前"
-#: lib/util.php:870
+#: lib/util.php:869
msgid "about a minute ago"
msgstr "一分钟前"
-#: lib/util.php:872
+#: lib/util.php:871
#, php-format
msgid "about %d minutes ago"
msgstr "%d 分钟前"
-#: lib/util.php:874
+#: lib/util.php:873
msgid "about an hour ago"
msgstr "一小时前"
-#: lib/util.php:876
+#: lib/util.php:875
#, php-format
msgid "about %d hours ago"
msgstr "%d 小时前"
-#: lib/util.php:878
+#: lib/util.php:877
msgid "about a day ago"
msgstr "一天前"
-#: lib/util.php:880
+#: lib/util.php:879
#, php-format
msgid "about %d days ago"
msgstr "%d 天前"
-#: lib/util.php:882
+#: lib/util.php:881
msgid "about a month ago"
msgstr "一个月前"
-#: lib/util.php:884
+#: lib/util.php:883
#, php-format
msgid "about %d months ago"
msgstr "%d 个月前"
-#: lib/util.php:886
+#: lib/util.php:885
msgid "about a year ago"
msgstr "一年前"
diff --git a/locale/zh_TW/LC_MESSAGES/statusnet.po b/locale/zh_TW/LC_MESSAGES/statusnet.po
index ac78960c6..69eb63b8b 100644
--- a/locale/zh_TW/LC_MESSAGES/statusnet.po
+++ b/locale/zh_TW/LC_MESSAGES/statusnet.po
@@ -7,12 +7,12 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-01-30 23:41+0000\n"
-"PO-Revision-Date: 2010-01-30 23:43:02+0000\n"
+"POT-Creation-Date: 2010-02-04 10:31+0000\n"
+"PO-Revision-Date: 2010-02-04 10:33:52+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 (r61734); Translate extension (2010-01-16)\n"
+"X-Generator: MediaWiki 1.16alpha (r61969); Translate extension (2010-01-16)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: zh-hant\n"
"X-Message-Group: out-statusnet\n"
@@ -97,7 +97,7 @@ msgstr "無此通知"
#: actions/favoritesrss.php:74 actions/foaf.php:40 actions/foaf.php:58
#: actions/microsummary.php:62 actions/newmessage.php:116 actions/otp.php:76
#: actions/remotesubscribe.php:145 actions/remotesubscribe.php:154
-#: actions/replies.php:73 actions/repliesrss.php:38
+#: actions/replies.php:73 actions/repliesrss.php:38 actions/rsd.php:116
#: actions/showfavorites.php:105 actions/userbyid.php:74
#: actions/usergroups.php:91 actions/userrss.php:38 actions/xrds.php:71
#: lib/command.php:163 lib/command.php:302 lib/command.php:355
@@ -154,7 +154,7 @@ msgid ""
"his or her attention](%%%%action.newnotice%%%%?status_textarea=%3$s)."
msgstr ""
-#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:202
+#: actions/all.php:137 actions/replies.php:209 actions/showstream.php:211
#, php-format
msgid ""
"Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
@@ -386,8 +386,8 @@ msgstr "此暱稱已有人使用。再試試看別的吧。"
msgid "Not a valid nickname."
msgstr ""
-#: actions/apigroupcreate.php:196 actions/editapplication.php:212
-#: actions/editgroup.php:195 actions/newapplication.php:200
+#: actions/apigroupcreate.php:196 actions/editapplication.php:215
+#: actions/editgroup.php:195 actions/newapplication.php:203
#: actions/newgroup.php:139 actions/profilesettings.php:222
#: actions/register.php:217
msgid "Homepage is not a valid URL."
@@ -399,8 +399,8 @@ msgstr "個人首頁位址錯誤"
msgid "Full name is too long (max 255 chars)."
msgstr "全名過長(最多255字元)"
-#: actions/apigroupcreate.php:213 actions/editapplication.php:187
-#: actions/newapplication.php:169
+#: actions/apigroupcreate.php:213 actions/editapplication.php:190
+#: actions/newapplication.php:172
#, fuzzy, php-format
msgid "Description is too long (max %d chars)."
msgstr "自我介紹過長(共140個字元)"
@@ -479,18 +479,23 @@ msgstr ""
msgid "groups on %s"
msgstr ""
-#: actions/apioauthauthorize.php:108 actions/apioauthauthorize.php:114
-msgid "Bad request."
+#: actions/apioauthauthorize.php:101
+msgid "No oauth_token parameter provided."
msgstr ""
-#: actions/apioauthauthorize.php:134 actions/avatarsettings.php:268
+#: actions/apioauthauthorize.php:106
+#, fuzzy
+msgid "Invalid token."
+msgstr "尺寸錯誤"
+
+#: actions/apioauthauthorize.php:123 actions/avatarsettings.php:268
#: actions/deletenotice.php:157 actions/disfavor.php:74
-#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:50
+#: actions/emailsettings.php:238 actions/favor.php:75 actions/geocode.php:54
#: actions/groupblock.php:66 actions/grouplogo.php:309
#: actions/groupunblock.php:66 actions/imsettings.php:206
#: actions/invite.php:56 actions/login.php:115 actions/makeadmin.php:66
#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
-#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:139
+#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:135
#: actions/othersettings.php:145 actions/passwordsettings.php:138
#: actions/profilesettings.php:194 actions/recoverpassword.php:337
#: actions/register.php:165 actions/remotesubscribe.php:77
@@ -501,76 +506,84 @@ msgstr ""
msgid "There was a problem with your session token. Try again, please."
msgstr ""
-#: actions/apioauthauthorize.php:146
+#: actions/apioauthauthorize.php:135
#, fuzzy
msgid "Invalid nickname / password!"
msgstr "使用者名稱或密碼無效"
-#: actions/apioauthauthorize.php:170
+#: actions/apioauthauthorize.php:159
#, fuzzy
msgid "Database error deleting OAuth application user."
msgstr "使用者設定發生錯誤"
-#: actions/apioauthauthorize.php:196
+#: actions/apioauthauthorize.php:185
#, fuzzy
msgid "Database error inserting OAuth application user."
msgstr "增加回覆時,資料庫發生錯誤: %s"
-#: actions/apioauthauthorize.php:231
+#: actions/apioauthauthorize.php:214
#, php-format
msgid ""
"The request token %s has been authorized. Please exchange it for an access "
"token."
msgstr ""
-#: actions/apioauthauthorize.php:241
+#: actions/apioauthauthorize.php:227
#, php-format
-msgid "The request token %s has been denied."
+msgid "The request token %s has been denied and revoked."
msgstr ""
-#: actions/apioauthauthorize.php:246 actions/avatarsettings.php:281
+#: actions/apioauthauthorize.php:232 actions/avatarsettings.php:281
#: actions/designadminpanel.php:103 actions/editapplication.php:139
#: actions/emailsettings.php:256 actions/grouplogo.php:319
#: actions/imsettings.php:220 actions/newapplication.php:121
-#: actions/oauthconnectionssettings.php:151 actions/recoverpassword.php:44
+#: actions/oauthconnectionssettings.php:147 actions/recoverpassword.php:44
#: actions/smssettings.php:248 lib/designsettings.php:304
msgid "Unexpected form submission."
msgstr ""
-#: actions/apioauthauthorize.php:273
+#: actions/apioauthauthorize.php:259
msgid "An application would like to connect to your account"
msgstr ""
-#: actions/apioauthauthorize.php:290
+#: actions/apioauthauthorize.php:276
msgid "Allow or deny access"
msgstr ""
-#: actions/apioauthauthorize.php:320 lib/action.php:441
+#: actions/apioauthauthorize.php:292
+#, php-format
+msgid ""
+"The application <strong>%1$s</strong> by <strong>%2$s</strong> would like "
+"the ability to <strong>%3$s</strong> your %4$s account data. You should only "
+"give access to your %4$s account to third parties you trust."
+msgstr ""
+
+#: actions/apioauthauthorize.php:310 lib/action.php:441
#, fuzzy
msgid "Account"
msgstr "關於"
-#: actions/apioauthauthorize.php:323 actions/login.php:230
+#: actions/apioauthauthorize.php:313 actions/login.php:230
#: actions/profilesettings.php:106 actions/register.php:424
#: actions/showgroup.php:236 actions/tagother.php:94 lib/groupeditform.php:152
#: lib/userprofile.php:131
msgid "Nickname"
msgstr "暱稱"
-#: actions/apioauthauthorize.php:326 actions/login.php:233
+#: actions/apioauthauthorize.php:316 actions/login.php:233
#: actions/register.php:429 lib/accountsettingsaction.php:116
msgid "Password"
msgstr ""
-#: actions/apioauthauthorize.php:338
+#: actions/apioauthauthorize.php:328
msgid "Deny"
msgstr ""
-#: actions/apioauthauthorize.php:344
+#: actions/apioauthauthorize.php:334
msgid "Allow"
msgstr ""
-#: actions/apioauthauthorize.php:361
+#: actions/apioauthauthorize.php:351
msgid "Allow or deny access to your account information."
msgstr ""
@@ -745,8 +758,8 @@ msgstr ""
msgid "Preview"
msgstr ""
-#: actions/avatarsettings.php:149 lib/deleteuserform.php:66
-#: lib/noticelist.php:608
+#: actions/avatarsettings.php:149 actions/showapplication.php:252
+#: lib/deleteuserform.php:66 lib/noticelist.php:624
msgid "Delete"
msgstr ""
@@ -796,8 +809,9 @@ msgid ""
"will not be notified of any @-replies from them."
msgstr ""
-#: actions/block.php:143 actions/deletenotice.php:145
-#: actions/deleteuser.php:147 actions/groupblock.php:178
+#: actions/block.php:143 actions/deleteapplication.php:153
+#: actions/deletenotice.php:145 actions/deleteuser.php:147
+#: actions/groupblock.php:178
msgid "No"
msgstr ""
@@ -806,9 +820,9 @@ msgstr ""
msgid "Do not block this user"
msgstr "無此使用者"
-#: actions/block.php:144 actions/deletenotice.php:146
-#: actions/deleteuser.php:148 actions/groupblock.php:179
-#: lib/repeatform.php:132
+#: actions/block.php:144 actions/deleteapplication.php:158
+#: actions/deletenotice.php:146 actions/deleteuser.php:148
+#: actions/groupblock.php:179 lib/repeatform.php:132
msgid "Yes"
msgstr ""
@@ -918,6 +932,50 @@ msgstr "地點"
msgid "Notices"
msgstr ""
+#: actions/deleteapplication.php:63
+#, fuzzy
+msgid "You must be logged in to delete an application."
+msgstr "無法更新使用者"
+
+#: actions/deleteapplication.php:71
+#, fuzzy
+msgid "Application not found."
+msgstr "確認碼遺失"
+
+#: actions/deleteapplication.php:78 actions/editapplication.php:77
+#: actions/showapplication.php:94
+#, fuzzy
+msgid "You are not the owner of this application."
+msgstr "無法連結到伺服器:%s"
+
+#: actions/deleteapplication.php:102 actions/editapplication.php:127
+#: actions/newapplication.php:110 actions/showapplication.php:118
+#: lib/action.php:1195
+msgid "There was a problem with your session token."
+msgstr ""
+
+#: actions/deleteapplication.php:123 actions/deleteapplication.php:147
+#, fuzzy
+msgid "Delete application"
+msgstr "無此通知"
+
+#: actions/deleteapplication.php:149
+msgid ""
+"Are you sure you want to delete this application? This will clear all data "
+"about the application from the database, including all existing user "
+"connections."
+msgstr ""
+
+#: actions/deleteapplication.php:156
+#, fuzzy
+msgid "Do not delete this application"
+msgstr "無此通知"
+
+#: actions/deleteapplication.php:160
+#, fuzzy
+msgid "Delete this application"
+msgstr "請在140個字以內描述你自己與你的興趣"
+
#: actions/deletenotice.php:67 actions/disfavor.php:61 actions/favor.php:62
#: actions/groupblock.php:61 actions/groupunblock.php:61 actions/logout.php:69
#: actions/makeadmin.php:61 actions/newmessage.php:87 actions/newnotice.php:89
@@ -951,7 +1009,7 @@ msgstr ""
msgid "Do not delete this notice"
msgstr "無此通知"
-#: actions/deletenotice.php:146 lib/noticelist.php:608
+#: actions/deletenotice.php:146 lib/noticelist.php:624
msgid "Delete this notice"
msgstr ""
@@ -1102,7 +1160,7 @@ msgstr ""
msgid "Add to favorites"
msgstr ""
-#: actions/doc.php:155
+#: actions/doc.php:158
#, fuzzy, php-format
msgid "No such document \"%s\""
msgstr "無此文件"
@@ -1116,22 +1174,12 @@ msgstr "無此通知"
msgid "You must be logged in to edit an application."
msgstr ""
-#: actions/editapplication.php:77 actions/showapplication.php:94
-#, fuzzy
-msgid "You are not the owner of this application."
-msgstr "無法連結到伺服器:%s"
-
-#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:163
+#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:166
#: actions/showapplication.php:87
#, fuzzy
msgid "No such application."
msgstr "無此通知"
-#: actions/editapplication.php:127 actions/newapplication.php:110
-#: actions/showapplication.php:118 lib/action.php:1195
-msgid "There was a problem with your session token."
-msgstr ""
-
#: actions/editapplication.php:161
msgid "Use this form to edit your application."
msgstr ""
@@ -1140,47 +1188,52 @@ msgstr ""
msgid "Name is required."
msgstr ""
-#: actions/editapplication.php:180 actions/newapplication.php:162
+#: actions/editapplication.php:180 actions/newapplication.php:165
#, fuzzy
msgid "Name is too long (max 255 chars)."
msgstr "全名過長(最多255字元)"
-#: actions/editapplication.php:183 actions/newapplication.php:165
+#: actions/editapplication.php:183 actions/newapplication.php:162
+#, fuzzy
+msgid "Name already in use. Try another one."
+msgstr "此暱稱已有人使用。再試試看別的吧。"
+
+#: actions/editapplication.php:186 actions/newapplication.php:168
#, fuzzy
msgid "Description is required."
msgstr "所有訂閱"
-#: actions/editapplication.php:191
+#: actions/editapplication.php:194
msgid "Source URL is too long."
msgstr ""
-#: actions/editapplication.php:197 actions/newapplication.php:182
+#: actions/editapplication.php:200 actions/newapplication.php:185
#, fuzzy
msgid "Source URL is not valid."
msgstr "個人首頁位址錯誤"
-#: actions/editapplication.php:200 actions/newapplication.php:185
+#: actions/editapplication.php:203 actions/newapplication.php:188
msgid "Organization is required."
msgstr ""
-#: actions/editapplication.php:203 actions/newapplication.php:188
+#: actions/editapplication.php:206 actions/newapplication.php:191
#, fuzzy
msgid "Organization is too long (max 255 chars)."
msgstr "地點過長(共255個字)"
-#: actions/editapplication.php:206 actions/newapplication.php:191
+#: actions/editapplication.php:209 actions/newapplication.php:194
msgid "Organization homepage is required."
msgstr ""
-#: actions/editapplication.php:215 actions/newapplication.php:203
+#: actions/editapplication.php:218 actions/newapplication.php:206
msgid "Callback is too long."
msgstr ""
-#: actions/editapplication.php:222 actions/newapplication.php:212
+#: actions/editapplication.php:225 actions/newapplication.php:215
msgid "Callback URL is not valid."
msgstr ""
-#: actions/editapplication.php:255
+#: actions/editapplication.php:258
#, fuzzy
msgid "Could not update application."
msgstr "無法更新使用者"
@@ -2063,11 +2116,11 @@ msgstr ""
msgid "Use this form to register a new application."
msgstr ""
-#: actions/newapplication.php:173
+#: actions/newapplication.php:176
msgid "Source URL is required."
msgstr ""
-#: actions/newapplication.php:255 actions/newapplication.php:264
+#: actions/newapplication.php:258 actions/newapplication.php:267
#, fuzzy
msgid "Could not create application."
msgstr "無法存取個人圖像資料"
@@ -2193,29 +2246,29 @@ msgstr ""
msgid "You have not registered any applications yet."
msgstr ""
-#: actions/oauthconnectionssettings.php:71
+#: actions/oauthconnectionssettings.php:72
msgid "Connected applications"
msgstr ""
-#: actions/oauthconnectionssettings.php:87
+#: actions/oauthconnectionssettings.php:83
msgid "You have allowed the following applications to access you account."
msgstr ""
-#: actions/oauthconnectionssettings.php:170
+#: actions/oauthconnectionssettings.php:175
#, fuzzy
msgid "You are not a user of that application."
msgstr "無法連結到伺服器:%s"
-#: actions/oauthconnectionssettings.php:180
+#: actions/oauthconnectionssettings.php:186
msgid "Unable to revoke access for app: "
msgstr ""
-#: actions/oauthconnectionssettings.php:192
+#: actions/oauthconnectionssettings.php:198
#, php-format
msgid "You have not authorized any applications to use your account."
msgstr ""
-#: actions/oauthconnectionssettings.php:205
+#: actions/oauthconnectionssettings.php:211
msgid "Developers can edit the registration settings for their applications "
msgstr ""
@@ -2725,37 +2778,37 @@ msgstr ""
msgid "Public timeline"
msgstr ""
-#: actions/public.php:151
+#: actions/public.php:159
msgid "Public Stream Feed (RSS 1.0)"
msgstr ""
-#: actions/public.php:155
+#: actions/public.php:163
msgid "Public Stream Feed (RSS 2.0)"
msgstr ""
-#: actions/public.php:159
+#: actions/public.php:167
#, fuzzy
msgid "Public Stream Feed (Atom)"
msgstr "%s的公開內容"
-#: actions/public.php:179
+#: actions/public.php:187
#, php-format
msgid ""
"This is the public timeline for %%site.name%% but no one has posted anything "
"yet."
msgstr ""
-#: actions/public.php:182
+#: actions/public.php:190
msgid "Be the first to post!"
msgstr ""
-#: actions/public.php:186
+#: actions/public.php:194
#, php-format
msgid ""
"Why not [register an account](%%action.register%%) and be the first to post!"
msgstr ""
-#: actions/public.php:233
+#: actions/public.php:241
#, php-format
msgid ""
"This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -2764,7 +2817,7 @@ msgid ""
"friends, family, and colleagues! ([Read more](%%doc.help%%))"
msgstr ""
-#: actions/public.php:238
+#: actions/public.php:246
#, php-format
msgid ""
"This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
@@ -3098,7 +3151,7 @@ msgstr ""
msgid "You already repeated that notice."
msgstr "無此使用者"
-#: actions/repeat.php:114 lib/noticelist.php:626
+#: actions/repeat.php:114 lib/noticelist.php:642
#, fuzzy
msgid "Repeated"
msgstr "新增"
@@ -3160,6 +3213,11 @@ msgstr ""
msgid "Replies to %1$s on %2$s!"
msgstr "&s的微型部落格"
+#: actions/rsd.php:146 actions/version.php:157
+#, fuzzy
+msgid "StatusNet"
+msgstr "更新個人圖像"
+
#: actions/sandbox.php:65 actions/unsandbox.php:65
#, fuzzy
msgid "You cannot sandbox users on this site."
@@ -3204,79 +3262,83 @@ msgstr "線上即時通設定"
msgid "You must be logged in to view an application."
msgstr ""
-#: actions/showapplication.php:158
+#: actions/showapplication.php:157
msgid "Application profile"
msgstr ""
-#: actions/showapplication.php:160 lib/applicationeditform.php:180
+#: actions/showapplication.php:159 lib/applicationeditform.php:180
msgid "Icon"
msgstr ""
-#: actions/showapplication.php:170 actions/version.php:195
+#: actions/showapplication.php:169 actions/version.php:195
#: lib/applicationeditform.php:195
#, fuzzy
msgid "Name"
msgstr "暱稱"
-#: actions/showapplication.php:179 lib/applicationeditform.php:222
+#: actions/showapplication.php:178 lib/applicationeditform.php:222
#, fuzzy
msgid "Organization"
msgstr "地點"
-#: actions/showapplication.php:188 actions/version.php:198
+#: actions/showapplication.php:187 actions/version.php:198
#: lib/applicationeditform.php:209 lib/groupeditform.php:172
#, fuzzy
msgid "Description"
msgstr "所有訂閱"
-#: actions/showapplication.php:193 actions/showgroup.php:429
+#: actions/showapplication.php:192 actions/showgroup.php:429
#: lib/profileaction.php:174
msgid "Statistics"
msgstr ""
-#: actions/showapplication.php:204
+#: actions/showapplication.php:203
#, php-format
-msgid "created by %1$s - %2$s access by default - %3$d users"
+msgid "Created by %1$s - %2$s access by default - %3$d users"
msgstr ""
-#: actions/showapplication.php:214
+#: actions/showapplication.php:213
msgid "Application actions"
msgstr ""
-#: actions/showapplication.php:233
+#: actions/showapplication.php:236
msgid "Reset key & secret"
msgstr ""
-#: actions/showapplication.php:241
+#: actions/showapplication.php:261
msgid "Application info"
msgstr ""
-#: actions/showapplication.php:243
+#: actions/showapplication.php:263
msgid "Consumer key"
msgstr ""
-#: actions/showapplication.php:248
+#: actions/showapplication.php:268
msgid "Consumer secret"
msgstr ""
-#: actions/showapplication.php:253
+#: actions/showapplication.php:273
msgid "Request token URL"
msgstr ""
-#: actions/showapplication.php:258
+#: actions/showapplication.php:278
msgid "Access token URL"
msgstr ""
-#: actions/showapplication.php:263
+#: actions/showapplication.php:283
msgid "Authorize URL"
msgstr ""
-#: actions/showapplication.php:268
+#: actions/showapplication.php:288
msgid ""
"Note: We support HMAC-SHA1 signatures. We do not support the plaintext "
"signature method."
msgstr ""
+#: actions/showapplication.php:309
+msgid "Are you sure you want to reset your consumer key and secret?"
+msgstr ""
+
#: actions/showfavorites.php:79
#, fuzzy, php-format
msgid "%1$s's favorite notices, page %2$d"
@@ -3480,25 +3542,25 @@ msgstr ""
msgid "FOAF for %s"
msgstr ""
-#: actions/showstream.php:191
+#: actions/showstream.php:200
#, php-format
msgid "This is the timeline for %1$s but %2$s hasn't posted anything yet."
msgstr ""
-#: actions/showstream.php:196
+#: actions/showstream.php:205
msgid ""
"Seen anything interesting recently? You haven't posted any notices yet, now "
"would be a good time to start :)"
msgstr ""
-#: actions/showstream.php:198
+#: actions/showstream.php:207
#, php-format
msgid ""
"You can try to nudge %1$s or [post something to his or her attention](%%%%"
"action.newnotice%%%%?status_textarea=%2$s)."
msgstr ""
-#: actions/showstream.php:234
+#: actions/showstream.php:243
#, php-format
msgid ""
"**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3507,7 +3569,7 @@ msgid ""
"follow **%s**'s notices and many more! ([Read more](%%%%doc.help%%%%))"
msgstr ""
-#: actions/showstream.php:239
+#: actions/showstream.php:248
#, php-format
msgid ""
"**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3515,7 +3577,7 @@ msgid ""
"[StatusNet](http://status.net/) tool. "
msgstr ""
-#: actions/showstream.php:296
+#: actions/showstream.php:305
#, php-format
msgid "Repeat of %s"
msgstr ""
@@ -4176,11 +4238,6 @@ msgid ""
"Inc. and contributors."
msgstr ""
-#: actions/version.php:157
-#, fuzzy
-msgid "StatusNet"
-msgstr "更新個人圖像"
-
#: actions/version.php:161
msgid "Contributors"
msgstr ""
@@ -4304,22 +4361,22 @@ msgstr ""
msgid "Problem saving notice."
msgstr ""
-#: classes/Notice.php:790
+#: classes/Notice.php:788
#, fuzzy
msgid "Problem saving group inbox."
msgstr "儲存使用者發生錯誤"
-#: classes/Notice.php:850
+#: classes/Notice.php:848
#, php-format
msgid "DB error inserting reply: %s"
msgstr "增加回覆時,資料庫發生錯誤: %s"
-#: classes/Notice.php:1233
+#: classes/Notice.php:1231
#, php-format
msgid "RT @%1$s %2$s"
msgstr ""
-#: classes/User.php:382
+#: classes/User.php:385
#, php-format
msgid "Welcome to %1$s, @%2$s!"
msgstr ""
@@ -4607,11 +4664,11 @@ msgstr "確認信箱"
msgid "Sessions configuration"
msgstr "確認信箱"
-#: lib/apiauth.php:99
+#: lib/apiauth.php:95
msgid "API resource requires read-write access, but you only have read access."
msgstr ""
-#: lib/apiauth.php:279
+#: lib/apiauth.php:273
#, php-format
msgid "Failed API auth attempt, nickname = %1$s, proxy = %2$s, ip = %3$s"
msgstr ""
@@ -4973,20 +5030,20 @@ msgid ""
"tracking - not yet implemented.\n"
msgstr ""
-#: lib/common.php:131
+#: lib/common.php:135
#, fuzzy
msgid "No configuration file found. "
msgstr "無確認碼"
-#: lib/common.php:132
+#: lib/common.php:136
msgid "I looked for configuration files in the following places: "
msgstr ""
-#: lib/common.php:134
+#: lib/common.php:138
msgid "You may wish to run the installer to fix this."
msgstr ""
-#: lib/common.php:135
+#: lib/common.php:139
msgid "Go to the installer."
msgstr ""
@@ -5559,25 +5616,25 @@ msgstr ""
msgid "at"
msgstr ""
-#: lib/noticelist.php:531
+#: lib/noticelist.php:547
#, fuzzy
msgid "in context"
msgstr "無內容"
-#: lib/noticelist.php:556
+#: lib/noticelist.php:572
#, fuzzy
msgid "Repeated by"
msgstr "新增"
-#: lib/noticelist.php:582
+#: lib/noticelist.php:598
msgid "Reply to this notice"
msgstr ""
-#: lib/noticelist.php:583
+#: lib/noticelist.php:599
msgid "Reply"
msgstr ""
-#: lib/noticelist.php:625
+#: lib/noticelist.php:641
#, fuzzy
msgid "Notice repeated"
msgstr "更新個人圖像"
@@ -5724,6 +5781,10 @@ msgstr "無此通知"
msgid "Repeat this notice"
msgstr "無此通知"
+#: lib/router.php:665
+msgid "No single user defined for single-user mode."
+msgstr ""
+
#: lib/sandboxform.php:67
msgid "Sandbox"
msgstr ""
@@ -5898,47 +5959,47 @@ msgstr ""
msgid "Moderate"
msgstr ""
-#: lib/util.php:868
+#: lib/util.php:867
msgid "a few seconds ago"
msgstr ""
-#: lib/util.php:870
+#: lib/util.php:869
msgid "about a minute ago"
msgstr ""
-#: lib/util.php:872
+#: lib/util.php:871
#, php-format
msgid "about %d minutes ago"
msgstr ""
-#: lib/util.php:874
+#: lib/util.php:873
msgid "about an hour ago"
msgstr ""
-#: lib/util.php:876
+#: lib/util.php:875
#, php-format
msgid "about %d hours ago"
msgstr ""
-#: lib/util.php:878
+#: lib/util.php:877
msgid "about a day ago"
msgstr ""
-#: lib/util.php:880
+#: lib/util.php:879
#, php-format
msgid "about %d days ago"
msgstr ""
-#: lib/util.php:882
+#: lib/util.php:881
msgid "about a month ago"
msgstr ""
-#: lib/util.php:884
+#: lib/util.php:883
#, php-format
msgid "about %d months ago"
msgstr ""
-#: lib/util.php:886
+#: lib/util.php:885
msgid "about a year ago"
msgstr ""
diff --git a/plugins/Adsense/AdsensePlugin.php b/plugins/Adsense/AdsensePlugin.php
new file mode 100644
index 000000000..ab2b9a6fb
--- /dev/null
+++ b/plugins/Adsense/AdsensePlugin.php
@@ -0,0 +1,160 @@
+<?php
+/**
+ * StatusNet, the distributed open-source microblogging tool
+ *
+ * Plugin for Google Adsense
+ *
+ * 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 Ads
+ * @package StatusNet
+ * @author Evan Prodromou <evan@status.net>
+ * @copyright 2010 StatusNet Inc.
+ * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link http://status.net/
+ */
+
+if (!defined('STATUSNET')) {
+ exit(1);
+}
+
+/**
+ * Plugin to add Google Adsense to StatusNet sites
+ *
+ * This plugin lets you add Adsense ad units to your StatusNet site.
+ *
+ * We support the 4 ad sizes for the Universal Ad Platform (UAP):
+ *
+ * Medium Rectangle
+ * (Small) Rectangle
+ * Leaderboard
+ * Wide Skyscraper
+ *
+ * They fit in different places on the default theme. Some themes
+ * might interact quite poorly with this plugin.
+ *
+ * To enable advertising, you must sign up with Google Adsense and
+ * get a client ID.
+ *
+ * https://www.google.com/adsense/
+ *
+ * You'll also need to create an Adsense for Content unit in one
+ * of the four sizes described above. At the end of the process,
+ * note the "google_ad_client" and "google_ad_slot" values in the
+ * resultant Javascript.
+ *
+ * Add the plugin to config.php like so:
+ *
+ * addPlugin('Adsense', array('client' => 'Your client ID',
+ * 'rectangle' => 'slot'));
+ *
+ * Here, your client ID is the value of google_ad_client and the
+ * slot is the value of google_ad_slot. Note that if you create
+ * a different size, you'll need to provide different arguments:
+ * 'mediumRectangle', 'leaderboard', or 'wideSkyscraper'.
+ *
+ * If for some reason your ad server is different from the default,
+ * use the 'adScript' parameter to set the full path to the ad script.
+ *
+ * @category Plugin
+ * @package StatusNet
+ * @author Evan Prodromou <evan@status.net>
+ * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link http://status.net/
+ *
+ * @seeAlso UAPPlugin
+ */
+
+class AdsensePlugin extends UAPPlugin
+{
+ public $adScript = 'http://pagead2.googlesyndication.com/pagead/show_ads.js';
+ public $client = null;
+
+ /**
+ * Show a medium rectangle 'ad'
+ *
+ * @param Action $action Action being shown
+ *
+ * @return void
+ */
+
+ protected function showMediumRectangle($action)
+ {
+ $this->showAdsenseCode($action, 300, 250, $this->mediumRectangle);
+ }
+
+ /**
+ * Show a rectangle 'ad'
+ *
+ * @param Action $action Action being shown
+ *
+ * @return void
+ */
+
+ protected function showRectangle($action)
+ {
+ $this->showAdsenseCode($action, 180, 150, $this->rectangle);
+ }
+
+ /**
+ * Show a wide skyscraper ad
+ *
+ * @param Action $action Action being shown
+ *
+ * @return void
+ */
+
+ protected function showWideSkyscraper($action)
+ {
+ $this->showAdsenseCode($action, 160, 600, $this->wideSkyscraper);
+ }
+
+ /**
+ * Show a leaderboard ad
+ *
+ * @param Action $action Action being shown
+ *
+ * @return void
+ */
+
+ protected function showLeaderboard($action)
+ {
+ $this->showAdsenseCode($action, 728, 90, $this->leaderboard);
+ }
+
+ /**
+ * Output the bits of JavaScript code to show Adsense
+ *
+ * @param Action $action Action being shown
+ * @param integer $width Width of the block
+ * @param integer $height Height of the block
+ * @param string $slot Slot identifier
+ *
+ * @return void
+ */
+
+ protected function showAdsenseCode($action, $width, $height, $slot)
+ {
+ $code = 'google_ad_client = "'.$this->client.'"; ';
+ $code .= 'google_ad_slot = "'.$slot.'"; ';
+ $code .= 'google_ad_width = '.$width.'; ';
+ $code .= 'google_ad_height = '.$height.'; ';
+
+ $action->inlineScript($code);
+
+ $action->script($this->adScript);
+ }
+} \ No newline at end of file
diff --git a/plugins/GeonamesPlugin.php b/plugins/GeonamesPlugin.php
index 52cc9c97f..589462ed9 100644
--- a/plugins/GeonamesPlugin.php
+++ b/plugins/GeonamesPlugin.php
@@ -71,7 +71,7 @@ class GeonamesPlugin extends Plugin
$loc = $this->getCache(array('name' => $name,
'language' => $language));
- if (!empty($loc)) {
+ if ($loc !== false) {
$location = $loc;
return false;
}
@@ -87,12 +87,20 @@ class GeonamesPlugin extends Plugin
return true;
}
+ if (count($geonames) == 0) {
+ // no results
+ $this->setCache(array('name' => $name,
+ 'language' => $language),
+ null);
+ return true;
+ }
+
$n = $geonames[0];
$location = new Location();
- $location->lat = (string)$n->lat;
- $location->lon = (string)$n->lng;
+ $location->lat = $this->canonical($n->lat);
+ $location->lon = $this->canonical($n->lng);
$location->names[$language] = (string)$n->name;
$location->location_id = (string)$n->geonameId;
$location->location_ns = self::LOCATION_NS;
@@ -125,7 +133,7 @@ class GeonamesPlugin extends Plugin
$loc = $this->getCache(array('id' => $id));
- if (!empty($loc)) {
+ if ($loc !== false) {
$location = $loc;
return false;
}
@@ -157,8 +165,9 @@ class GeonamesPlugin extends Plugin
$location->location_id = (string)$last->geonameId;
$location->location_ns = self::LOCATION_NS;
- $location->lat = (string)$last->lat;
- $location->lon = (string)$last->lng;
+ $location->lat = $this->canonical($last->lat);
+ $location->lon = $this->canonical($last->lng);
+
$location->names[$language] = implode(', ', array_reverse($parts));
$this->setCache(array('id' => (string)$last->geonameId),
@@ -186,13 +195,15 @@ class GeonamesPlugin extends Plugin
function onLocationFromLatLon($lat, $lon, $language, &$location)
{
- $lat = rtrim($lat, "0");
- $lon = rtrim($lon, "0");
+ // Make sure they're canonical
+
+ $lat = $this->canonical($lat);
+ $lon = $this->canonical($lon);
$loc = $this->getCache(array('lat' => $lat,
'lon' => $lon));
- if (!empty($loc)) {
+ if ($loc !== false) {
$location = $loc;
return false;
}
@@ -207,6 +218,14 @@ class GeonamesPlugin extends Plugin
return true;
}
+ if (count($geonames) == 0) {
+ // no results
+ $this->setCache(array('lat' => $lat,
+ 'lon' => $lon),
+ null);
+ return true;
+ }
+
$n = $geonames[0];
$parts = array();
@@ -225,8 +244,8 @@ class GeonamesPlugin extends Plugin
$location->location_id = (string)$n->geonameId;
$location->location_ns = self::LOCATION_NS;
- $location->lat = (string)$lat;
- $location->lon = (string)$lon;
+ $location->lat = $this->canonical($n->lat);
+ $location->lon = $this->canonical($n->lng);
$location->names[$language] = implode(', ', $parts);
@@ -264,7 +283,7 @@ class GeonamesPlugin extends Plugin
$n = $this->getCache(array('id' => $id,
'language' => $language));
- if (!empty($n)) {
+ if ($n !== false) {
$name = $n;
return false;
}
@@ -278,6 +297,13 @@ class GeonamesPlugin extends Plugin
return false;
}
+ if (count($geonames) == 0) {
+ $this->setCache(array('id' => $id,
+ 'language' => $language),
+ null);
+ return false;
+ }
+
$parts = array();
foreach ($geonames as $level) {
@@ -412,17 +438,29 @@ class GeonamesPlugin extends Plugin
throw new Exception("HTTP error code " . $result->code);
}
- $document = new SimpleXMLElement($result->getBody());
+ $body = $result->getBody();
+
+ if (empty($body)) {
+ throw new Exception("Empty HTTP body in response");
+ }
+
+ // This will throw an exception if the XML is mal-formed
+
+ $document = new SimpleXMLElement($body);
- if (empty($document)) {
- throw new Exception("No results in response");
+ // No children, usually no results
+
+ $children = $document->children();
+
+ if (count($children) == 0) {
+ return array();
}
if (isset($document->status)) {
throw new Exception("Error #".$document->status['value']." ('".$document->status['message']."')");
}
- // Array of elements
+ // Array of elements, >0 elements
return $document->geoname;
}
@@ -438,4 +476,12 @@ class GeonamesPlugin extends Plugin
'names for locations based on user-provided lat/long pairs.'));
return true;
}
+
+ function canonical($coord)
+ {
+ $coord = rtrim($coord, "0");
+ $coord = rtrim($coord, ".");
+
+ return $coord;
+ }
}
diff --git a/plugins/MemcachePlugin.php b/plugins/MemcachePlugin.php
index 8c8b8da6d..2bc4b892b 100644
--- a/plugins/MemcachePlugin.php
+++ b/plugins/MemcachePlugin.php
@@ -59,6 +59,8 @@ class MemcachePlugin extends Plugin
public $persistent = null;
+ public $defaultExpiry = 86400; // 24h
+
/**
* Initialize the plugin
*
@@ -110,6 +112,9 @@ class MemcachePlugin extends Plugin
function onStartCacheSet(&$key, &$value, &$flag, &$expiry, &$success)
{
$this->_ensureConn();
+ if ($expiry === null) {
+ $expiry = $this->defaultExpiry;
+ }
$success = $this->_conn->set($key, $value, $flag, $expiry);
Event::handle('EndCacheSet', array($key, $value, $flag,
$expiry));
diff --git a/plugins/OpenX/OpenXPlugin.php b/plugins/OpenX/OpenXPlugin.php
new file mode 100644
index 000000000..59485f25d
--- /dev/null
+++ b/plugins/OpenX/OpenXPlugin.php
@@ -0,0 +1,165 @@
+<?php
+/**
+ * StatusNet, the distributed open-source microblogging tool
+ *
+ * Plugin for OpenX ad server
+ *
+ * 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 Ads
+ * @package StatusNet
+ * @author Evan Prodromou <evan@status.net>
+ * @copyright 2010 StatusNet Inc.
+ * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link http://status.net/
+ */
+
+if (!defined('STATUSNET')) {
+ exit(1);
+}
+
+/**
+ * Plugin for OpenX Ad Server
+ *
+ * This plugin supports the OpenX ad server, http://www.openx.org/
+ *
+ * We support the 4 ad sizes for the Universal Ad Platform (UAP):
+ *
+ * Medium Rectangle
+ * (Small) Rectangle
+ * Leaderboard
+ * Wide Skyscraper
+ *
+ * They fit in different places on the default theme. Some themes
+ * might interact quite poorly with this plugin.
+ *
+ * To enable advertising, you will need an OpenX server. You'll need
+ * to set up a "zone" for your StatusNet site that identifies a
+ * kind of ad you want to place (of the above 4 sizes).
+ *
+ * Add the plugin to config.php like so:
+ *
+ * addPlugin('OpenX', array('adScript' => 'full path to script',
+ * 'rectangle' => 1));
+ *
+ * Here, the 'adScript' parameter is the full path to the OpenX
+ * ad script, like 'http://example.com/www/delivery/ajs.php'. Note
+ * that we don't do any magic to swap between HTTP and HTTPS, so
+ * if you want HTTPS, say so.
+ *
+ * The 'rectangle' parameter is the zone ID for that ad space on
+ * your site. If you've configured another size, try 'mediumRectangle',
+ * 'leaderboard', or 'wideSkyscraper'.
+ *
+ * If for some reason your ad server is different from the default,
+ * use the 'adScript' parameter to set the full path to the ad script.
+ *
+ * @category Ads
+ * @package StatusNet
+ * @author Evan Prodromou <evan@status.net>
+ * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link http://status.net/
+ *
+ * @seeAlso UAPPlugin
+ */
+
+class OpenXPlugin extends UAPPlugin
+{
+ public $adScript = null;
+
+ /**
+ * Show a medium rectangle 'ad'
+ *
+ * @param Action $action Action being shown
+ *
+ * @return void
+ */
+
+ protected function showMediumRectangle($action)
+ {
+ $this->showAd($action, $this->mediumRectangle);
+ }
+
+ /**
+ * Show a rectangle 'ad'
+ *
+ * @param Action $action Action being shown
+ *
+ * @return void
+ */
+
+ protected function showRectangle($action)
+ {
+ $this->showAd($action, $this->rectangle);
+ }
+
+ /**
+ * Show a wide skyscraper ad
+ *
+ * @param Action $action Action being shown
+ *
+ * @return void
+ */
+
+ protected function showWideSkyscraper($action)
+ {
+ $this->showAd($action, $this->wideSkyscraper);
+ }
+
+ /**
+ * Show a leaderboard ad
+ *
+ * @param Action $action Action being shown
+ *
+ * @return void
+ */
+
+ protected function showLeaderboard($action)
+ {
+ $this->showAd($action, $this->leaderboard);
+ }
+
+ /**
+ * Show an ad using OpenX
+ *
+ * @param Action $action Action being shown
+ * @param integer $zone Zone to show
+ *
+ * @return void
+ */
+
+ protected function showAd($action, $zone)
+ {
+$scr = <<<ENDOFSCRIPT
+var m3_u = '%s';
+var m3_r = Math.floor(Math.random()*99999999999);
+if (!document.MAX_used) document.MAX_used = ',';
+document.write ("<scr"+"ipt type='text/javascript' src='"+m3_u);
+document.write ("?zoneid=%d");
+document.write ('&amp;cb=' + m3_r);
+if (document.MAX_used != ',') document.write ("&amp;exclude=" + document.MAX_used);
+document.write (document.charset ? '&amp;charset='+document.charset : (document.characterSet ? '&amp;charset='+document.characterSet : ''));
+document.write ("&amp;loc=" + escape(window.location));
+if (document.referrer) document.write ("&amp;referer=" + escape(document.referrer));
+if (document.context) document.write ("&context=" + escape(document.context));
+if (document.mmm_fo) document.write ("&amp;mmm_fo=1");
+document.write ("'><\/scr"+"ipt>");
+ENDOFSCRIPT;
+
+ $action->inlineScript(sprintf($scr, $this->adScript, $zone));
+ return true;
+ }
+} \ No newline at end of file
diff --git a/plugins/Realtime/RealtimePlugin.php b/plugins/Realtime/RealtimePlugin.php
index 16e28e94d..6c212453e 100644
--- a/plugins/Realtime/RealtimePlugin.php
+++ b/plugins/Realtime/RealtimePlugin.php
@@ -87,7 +87,7 @@ class RealtimePlugin extends Plugin
$scripts = $this->_getScripts();
foreach ($scripts as $script) {
- $action->script(common_path($script));
+ $action->script($script);
}
$user = common_current_user();
@@ -307,7 +307,7 @@ class RealtimePlugin extends Plugin
function _getScripts()
{
- return array('plugins/Realtime/realtimeupdate.js');
+ return array(common_path('plugins/Realtime/realtimeupdate.js'));
}
function _updateInitialize($timeline, $user_id)
diff --git a/plugins/Realtime/realtimeupdate.js b/plugins/Realtime/realtimeupdate.js
index fb9dcdbfb..ab548958a 100644
--- a/plugins/Realtime/realtimeupdate.js
+++ b/plugins/Realtime/realtimeupdate.js
@@ -95,9 +95,7 @@ RealtimeUpdate = {
$("#notices_primary .notice:first").css({display:"none"});
$("#notices_primary .notice:first").fadeIn(1000);
- SN.U.FormXHR($('#'+noticeItemID+' .form_favor'));
SN.U.NoticeReplyTo($('#'+noticeItemID));
- SN.U.FormXHR($('#'+noticeItemID+' .form_repeat'));
SN.U.NoticeWithAttachment($('#'+noticeItemID));
},
@@ -180,7 +178,7 @@ console.log(data);
ni = ni+"</div>";
- "</li>";
+ ni = ni+"</li>";
return ni;
},
diff --git a/plugins/TwitterBridge/daemons/twitterstatusfetcher.php b/plugins/TwitterBridge/daemons/twitterstatusfetcher.php
index 36732ce46..bff657eb6 100755
--- a/plugins/TwitterBridge/daemons/twitterstatusfetcher.php
+++ b/plugins/TwitterBridge/daemons/twitterstatusfetcher.php
@@ -2,7 +2,7 @@
<?php
/**
* StatusNet - the distributed open-source microblogging tool
- * Copyright (C) 2008, 2009, StatusNet, Inc.
+ * 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
@@ -262,7 +262,7 @@ class TwitterStatusFetcher extends ParallelizingDaemon
$notice->is_local = Notice::GATEWAY;
if (Event::handle('StartNoticeSave', array(&$notice))) {
- $id = $notice->insert();
+ $notice->insert();
Event::handle('EndNoticeSave', array($notice));
}
@@ -270,17 +270,41 @@ class TwitterStatusFetcher extends ParallelizingDaemon
Inbox::insertNotice($flink->user_id, $notice->id);
- $notice->blowCaches();
+ $notice->blowOnInsert();
return $notice;
}
+ /**
+ * Look up a Profile by profileurl field. Profile::staticGet() was
+ * not working consistently.
+ *
+ * @param string $url the profile url
+ *
+ * @return mixed the first profile with that url, or null
+ */
+
+ function getProfileByUrl($nickname, $profileurl)
+ {
+ $profile = new Profile();
+ $profile->nickname = $nickname;
+ $profile->profileurl = $profileurl;
+ $profile->limit(1);
+
+ if ($profile->find()) {
+ $profile->fetch();
+ return $profile;
+ }
+
+ return null;
+ }
+
function ensureProfile($user)
{
// check to see if there's already a profile for this user
$profileurl = 'http://twitter.com/' . $user->screen_name;
- $profile = Profile::staticGet('profileurl', $profileurl);
+ $profile = $this->getProfileByUrl($user->screen_name, $profileurl);
if (!empty($profile)) {
common_debug($this->name() .
@@ -292,6 +316,7 @@ class TwitterStatusFetcher extends ParallelizingDaemon
return $profile->id;
} else {
+
common_debug($this->name() . ' - Adding profile and remote profile ' .
"for Twitter user: $profileurl.");
@@ -306,7 +331,11 @@ class TwitterStatusFetcher extends ParallelizingDaemon
$profile->profileurl = $profileurl;
$profile->created = common_sql_now();
- $id = $profile->insert();
+ try {
+ $id = $profile->insert();
+ } catch(Exception $e) {
+ common_log(LOG_WARNING, $this->name . ' Couldn\'t insert profile - ' . $e->getMessage());
+ }
if (empty($id)) {
common_log_db_error($profile, 'INSERT', __FILE__);
@@ -326,7 +355,11 @@ class TwitterStatusFetcher extends ParallelizingDaemon
$remote_pro->uri = $profileurl;
$remote_pro->created = common_sql_now();
- $rid = $remote_pro->insert();
+ try {
+ $rid = $remote_pro->insert();
+ } catch (Exception $e) {
+ common_log(LOG_WARNING, $this->name() . ' Couldn\'t save remote profile - ' . $e->getMessage());
+ }
if (empty($rid)) {
common_log_db_error($profile, 'INSERT', __FILE__);
@@ -446,7 +479,7 @@ class TwitterStatusFetcher extends ParallelizingDaemon
if ($this->fetchAvatar($url, $filename)) {
$this->newAvatar($id, $size, $mediatype, $filename);
} else {
- common_log(LOG_WARNING, $this->id() .
+ common_log(LOG_WARNING, $id() .
" - Problem fetching Avatar: $url");
}
}
@@ -507,7 +540,11 @@ class TwitterStatusFetcher extends ParallelizingDaemon
$avatar->created = common_sql_now();
- $id = $avatar->insert();
+ try {
+ $id = $avatar->insert();
+ } catch (Exception $e) {
+ common_log(LOG_WARNING, $this->name() . ' Couldn\'t insert avatar - ' . $e->getMessage());
+ }
if (empty($id)) {
common_log_db_error($avatar, 'INSERT', __FILE__);
diff --git a/plugins/TwitterBridge/twitter.php b/plugins/TwitterBridge/twitter.php
index 33dfb788b..6944a1ace 100644
--- a/plugins/TwitterBridge/twitter.php
+++ b/plugins/TwitterBridge/twitter.php
@@ -1,7 +1,7 @@
<?php
/*
* StatusNet - the distributed open-source microblogging tool
- * Copyright (C) 2008, 2009, StatusNet, Inc.
+ * 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
@@ -295,8 +295,17 @@ function format_status($notice)
$statustxt = preg_replace('/^@/', ' @', $notice->content);
// Convert !groups to #hashes
+
+ // XXX: Make this an optional setting?
+
$statustxt = preg_replace('/(^|\s)!([A-Za-z0-9]{1,64})/', "\\1#\\2", $statustxt);
+ if (mb_strlen($statustxt) > 140) {
+ $noticeUrl = common_shorten_url($notice->uri);
+ $urlLen = mb_strlen($noticeUrl);
+ $statustxt = mb_substr($statustxt, 0, 140 - ($urlLen + 3)) . ' … ' . $noticeUrl;
+ }
+
return $statustxt;
}
diff --git a/plugins/UserFlag/UserFlagPlugin.php b/plugins/UserFlag/UserFlagPlugin.php
index a33869c19..ae3dfe036 100644
--- a/plugins/UserFlag/UserFlagPlugin.php
+++ b/plugins/UserFlag/UserFlagPlugin.php
@@ -183,21 +183,6 @@ class UserFlagPlugin extends Plugin
}
/**
- * Add our plugin's CSS to page output
- *
- * @param Action $action action being shown
- *
- * @return boolean hook result
- */
-
- function onEndShowStatusNetStyles($action)
- {
- $action->cssLink(common_path('plugins/UserFlag/userflag.css'),
- null, 'screen, projection, tv');
- return true;
- }
-
- /**
* Initialize any flagging buttons on the page
*
* @param Action $action action being shown
@@ -208,8 +193,8 @@ class UserFlagPlugin extends Plugin
function onEndShowScripts($action)
{
$action->inlineScript('if ($(".form_entity_flag").length > 0) { '.
- 'SN.U.FormXHR($(".form_entity_flag")); '.
- '}');
+ '$(".form_entity_flag").bind("click", function() {'.
+ 'SN.U.FormXHR($(this)); return false; }); }');
return true;
}
diff --git a/plugins/UserFlag/clearflagform.php b/plugins/UserFlag/clearflagform.php
index 5ad6055d3..eefd15c36 100644
--- a/plugins/UserFlag/clearflagform.php
+++ b/plugins/UserFlag/clearflagform.php
@@ -54,7 +54,7 @@ class ClearFlagForm extends ProfileActionForm
function formClass()
{
- return 'form_entity_clearflag';
+ return 'form_user_clearflag';
}
/**
diff --git a/plugins/UserFlag/userflag.css b/plugins/UserFlag/userflag.css
deleted file mode 100644
index 98da24cc9..000000000
--- a/plugins/UserFlag/userflag.css
+++ /dev/null
@@ -1,4 +0,0 @@
-.entity_flag input.submit,
-.entity_flag p {
-background:url(icon_flag.gif) 5px 5px no-repeat;
-}
diff --git a/plugins/UserLimitPlugin.php b/plugins/UserLimitPlugin.php
new file mode 100644
index 000000000..ab3187299
--- /dev/null
+++ b/plugins/UserLimitPlugin.php
@@ -0,0 +1,92 @@
+<?php
+/**
+ * StatusNet, the distributed open-source microblogging tool
+ *
+ * Plugin to limit number of users that can register (best for cloud providers)
+ *
+ * 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 Action
+ * @package StatusNet
+ * @author Evan Prodromou <evan@status.net>
+ * @copyright 2009 StatusNet Inc.
+ * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link http://status.net/
+ */
+
+if (!defined('STATUSNET')) {
+ exit(1);
+}
+
+/**
+ * Plugin to limit number of users that can register (best for cloud providers)
+ *
+ * For cloud providers whose freemium model is based on how many
+ * users can register. We use it on the StatusNet Cloud.
+ *
+ * @category Plugin
+ * @package StatusNet
+ * @author Evan Prodromou <evan@status.net>
+ * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
+ * @link http://status.net/
+ *
+ * @seeAlso Location
+ */
+
+class UserLimitPlugin extends Plugin
+{
+ public $maxUsers = null;
+
+ function onStartUserRegister(&$user, &$profile)
+ {
+ $this->_checkMaxUsers();
+ return true;
+ }
+
+ function onStartRegistrationTry($action)
+ {
+ $this->_checkMaxUsers();
+ return true;
+ }
+
+ function _checkMaxUsers()
+ {
+ if (!is_null($this->maxUsers)) {
+
+ $cls = new User();
+
+ $cnt = $cls->count();
+
+ if ($cnt >= $this->maxUsers) {
+ $msg = sprintf(_('Cannot register; maximum number of users (%d) reached.'),
+ $this->maxUsers);
+
+ throw new ClientException($msg);
+ }
+ }
+ }
+
+ function onPluginVersion(&$versions)
+ {
+ $versions[] = array('name' => 'UserLimit',
+ 'version' => STATUSNET_VERSION,
+ 'author' => 'Evan Prodromou',
+ 'homepage' => 'http://status.net/wiki/Plugin:UserLimit',
+ 'description' =>
+ _m('Limit the number of users who can register.'));
+ return true;
+ }
+}
diff --git a/scripts/clearcache.php b/scripts/clearcache.php
new file mode 100644
index 000000000..702c1e3d6
--- /dev/null
+++ b/scripts/clearcache.php
@@ -0,0 +1,70 @@
+#!/usr/bin/env php
+<?php
+/*
+ * StatusNet - the distributed open-source microblogging tool
+ * Copyright (C) 2009, StatusNet, Inc.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+define('INSTALLDIR', realpath(dirname(__FILE__) . '/..'));
+
+$shortoptions = "t:c:v:k:";
+
+$helptext = <<<ENDOFHELP
+USAGE: clearcache.php <args>
+clears the cached object based on the args
+
+ -t table Table to look up
+ -c column Column to look up, default "id"
+ -v value Value to look up
+ -k key Key to look up; other args are ignored
+
+ENDOFHELP;
+
+require_once INSTALLDIR.'/scripts/commandline.inc';
+
+$karg = get_option_value('k');
+
+if (!empty($karg)) {
+ $k = common_cache_key($karg);
+} else {
+ $table = get_option_value('t');
+ if (empty($table)) {
+ die("No table or key specified\n");
+ }
+ $column = get_option_value('c');
+ if (empty($column)) {
+ $column = 'id';
+ }
+ $value = get_option_value('v');
+
+ $k = Memcached_DataObject::cacheKey($table, $column, $value);
+}
+
+print "Clearing key '$k'...";
+
+$c = common_memcache();
+
+if (empty($c)) {
+ die("Can't initialize cache object!\n");
+}
+
+$result = $c->delete($k);
+
+if ($result) {
+ print "OK.\n";
+} else {
+ print "FAIL.\n";
+}
diff --git a/scripts/delete_status_network.sh b/scripts/delete_status_network.sh
index f55f1486b..3a8ebdcfd 100755
--- a/scripts/delete_status_network.sh
+++ b/scripts/delete_status_network.sh
@@ -1,5 +1,9 @@
#!/bin/bash
+# live fast! die young!
+
+set -e
+
source /etc/statusnet/setup.cfg
export nickname=$1
diff --git a/scripts/queuedaemon.php b/scripts/queuedaemon.php
index c2e2351c3..30a8a9602 100755
--- a/scripts/queuedaemon.php
+++ b/scripts/queuedaemon.php
@@ -109,7 +109,13 @@ class QueueDaemon extends SpawningDaemon
$master = new QueueMaster($this->get_id());
$master->init($this->all);
- $master->service();
+ try {
+ $master->service();
+ } catch (Exception $e) {
+ common_log(LOG_ERR, "Unhandled exception: " . $e->getMessage() . ' ' .
+ str_replace("\n", " ", $e->getTraceAsString()));
+ return self::EXIT_ERR;
+ }
$this->log(LOG_INFO, 'finished servicing the queue');
diff --git a/scripts/sendemail.php b/scripts/sendemail.php
new file mode 100755
index 000000000..436e085be
--- /dev/null
+++ b/scripts/sendemail.php
@@ -0,0 +1,82 @@
+#!/usr/bin/env php
+<?php
+/*
+ * StatusNet - a 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:n:';
+$longoptions = array('id=', 'nickname=', 'subject=');
+
+$helptext = <<<END_OF_USEREMAIL_HELP
+sendemail.php [options] < <message body>
+Sends given email text to user.
+
+ -i --id id of the user to query
+ -n --nickname nickname of the user to query
+ --subject mail subject line (required)
+
+END_OF_USEREMAIL_HELP;
+
+require_once INSTALLDIR.'/scripts/commandline.inc';
+
+if (have_option('i', 'id')) {
+ $id = get_option_value('i', 'id');
+ $user = User::staticGet('id', $id);
+ if (empty($user)) {
+ print "Can't find user with ID $id\n";
+ exit(1);
+ }
+} else if (have_option('n', 'nickname')) {
+ $nickname = get_option_value('n', 'nickname');
+ $user = User::staticGet('nickname', $nickname);
+ if (empty($user)) {
+ print "Can't find user with nickname '$nickname'\n";
+ exit(1);
+ }
+} else {
+ print "You must provide a user by --id or --nickname\n";
+ exit(1);
+}
+
+if (empty($user->email)) {
+ // @fixme unconfirmed address?
+ print "No email registered for user '$user->nickname'\n";
+ exit(1);
+}
+
+if (!have_option('subject')) {
+ echo "You must provide a subject line for the mail in --subject='...' param.\n";
+ exit(1);
+}
+$subject = get_option_value('subject');
+
+if (posix_isatty(STDIN)) {
+ print "You must provide message input on stdin!\n";
+ exit(1);
+}
+$body = file_get_contents('php://stdin');
+
+print "Sending to $user->email...";
+if (mail_to_user($user, $subject, $body)) {
+ print " done\n";
+} else {
+ print " failed.\n";
+ exit(1);
+}
+
diff --git a/scripts/setconfig.php b/scripts/setconfig.php
index b102f99b1..fe0e46d65 100644..100755
--- a/scripts/setconfig.php
+++ b/scripts/setconfig.php
@@ -28,6 +28,7 @@ setconfig.php [options] [section] [setting] <value>
With three args, set the setting to the value.
With two args, just show the setting.
With -d, delete the setting.
+With no args, lists all currently set values.
[section] section to use (required)
[setting] setting to use (required)
@@ -39,6 +40,21 @@ END_OF_SETCONFIG_HELP;
require_once INSTALLDIR.'/scripts/commandline.inc';
+if (empty($args)) {
+ $count = 0;
+ $config = new Config();
+ $config->find();
+ while ($config->fetch()) {
+ $count++;
+ printf("%-20s %-20s %s\n", $config->section, $config->setting,
+ var_export($config->value, true));
+ }
+ if ($count == 0) {
+ print "No configuration set in database for this site.\n";
+ }
+ exit(0);
+}
+
if (count($args) < 2 || count($args) > 3) {
show_help();
exit(1);
diff --git a/scripts/settag.php b/scripts/settag.php
new file mode 100644
index 000000000..e91d5eb50
--- /dev/null
+++ b/scripts/settag.php
@@ -0,0 +1,84 @@
+#!/usr/bin/env php
+<?php
+/*
+ * StatusNet - a 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 = 'd';
+$longoptions = array('delete');
+
+$helptext = <<<END_OF_SETTAG_HELP
+settag.php [options] <site> <tag>
+Set the tag <tag> for site <site>.
+
+With -d, delete the tag.
+
+END_OF_SETTAG_HELP;
+
+require_once INSTALLDIR.'/scripts/commandline.inc';
+
+if (count($args) != 2) {
+ show_help();
+ exit(1);
+}
+
+$nickname = $args[0];
+$tag = strtolower($args[1]);
+
+$sn = Status_network::memGet('nickname', $nickname);
+
+if (empty($sn)) {
+ print "No such site.\n";
+ exit(-1);
+}
+
+$tags = $sn->getTags();
+
+$i = array_search($tag, $tags);
+
+if ($i !== false) {
+ if (have_option('d', 'delete')) { // Delete
+ unset($tags[$i]);
+
+ $orig = clone($sn);
+ $sn->tags = implode('|', $tags);
+ $result = $sn->update($orig);
+ if (!$result) {
+ print "Couldn't update.\n";
+ exit(-1);
+ }
+ } else {
+ print "Already set.\n";
+ exit(-1);
+ }
+} else {
+ if (have_option('d', 'delete')) { // Delete
+ print "No such tag.\n";
+ exit(-1);
+ } else {
+ $tags[] = $tag;
+ $orig = clone($sn);
+ $sn->tags = implode('|', $tags);
+ $result = $sn->update($orig);
+ if (!$result) {
+ print "Couldn't update.\n";
+ exit(-1);
+ }
+ }
+}
diff --git a/scripts/setup.cfg.sample b/scripts/setup.cfg.sample
index 8d03b06f5..f247a3bca 100644
--- a/scripts/setup.cfg.sample
+++ b/scripts/setup.cfg.sample
@@ -11,4 +11,8 @@ export AVATARBASE=/var/www/avatar.example.net
export BACKGROUNDBASE=/var/www/background.example.net
export FILEBASE=/var/www/file.example.net
export PWDGEN="pwgen 20"
-
+export PHPBASE=/var/www/statusnet
+export WILDCARD=example.net
+export MAILTEMPLATE=/etc/statusnet/newsite-mail.txt
+export MAILSUBJECT="Your new StatusNet site"
+export POSTINSTALL=/etc/statusnet/morestuff.sh
diff --git a/scripts/setup_status_network.sh b/scripts/setup_status_network.sh
index 777711fb5..4ad808011 100755
--- a/scripts/setup_status_network.sh
+++ b/scripts/setup_status_network.sh
@@ -1,10 +1,28 @@
#!/bin/bash
+# live fast! die young!
+
+set -e
+
source /etc/statusnet/setup.cfg
-export nickname=$1
-export sitename=$2
+# setup_status_net.sh mysite 'My Site' '1user' 'owner@example.com' 'Firsty McLastname'
+
+export nickname="$1"
+export sitename="$2"
+export tags="$3"
+export email="$4"
+export fullname="$5"
+
+# Fixme: if this is changed later we need to update profile URLs
+# for the created user.
+export server="$nickname.$WILDCARD"
+
+# End-user info
+export userpass=`$PWDGEN`
+export roles="administrator moderator owner"
+# DB info
export password=`$PWDGEN`
export database=$nickname$DBBASE
export username=$nickname$USERBASE
@@ -21,8 +39,8 @@ mysql -h $DBHOST -u $ADMIN --password=$ADMINPASS $SITEDB << ENDOFCOMMANDS
GRANT ALL ON $database.* TO '$username'@'localhost' IDENTIFIED BY '$password';
GRANT ALL ON $database.* TO '$username'@'%' IDENTIFIED BY '$password';
-INSERT INTO status_network (nickname, dbhost, dbuser, dbpass, dbname, sitename, created)
-VALUES ('$nickname', '$DBHOSTNAME', '$username', '$password', '$database', '$sitename', now());
+INSERT INTO status_network (nickname, dbhost, dbuser, dbpass, dbname, sitename, created, tags)
+VALUES ('$nickname', '$DBHOSTNAME', '$username', '$password', '$database', '$sitename', now(), '$tags');
ENDOFCOMMANDS
@@ -30,3 +48,39 @@ for top in $AVATARBASE $FILEBASE $BACKGROUNDBASE; do
mkdir $top/$nickname
chmod a+w $top/$nickname
done
+
+php $PHPBASE/scripts/registeruser.php \
+ -s"$server" \
+ -n"$nickname" \
+ -f"$fullname" \
+ -w"$userpass" \
+ -e"$email"
+
+for role in $roles
+do
+ php $PHPBASE/scripts/userrole.php \
+ -s"$server" \
+ -n"$nickname" \
+ -r"$role"
+done
+
+if [ -f "$MAILTEMPLATE" ]
+then
+ # fixme how safe is this? are sitenames sanitized?
+ cat $MAILTEMPLATE | \
+ sed "s/\$nickname/$nickname/" | \
+ sed "s/\$sitename/$sitename/" | \
+ sed "s/\$userpass/$userpass/" | \
+ php $PHPBASE/scripts/sendemail.php \
+ -s"$server" \
+ -n"$nickname" \
+ --subject="$MAILSUBJECT"
+else
+ echo "No mail template, not sending email."
+fi
+
+if [ -f "$POSTINSTALL" ]
+then
+ echo "Running $POSTINSTALL ..."
+ source "$POSTINSTALL"
+fi
diff --git a/theme/base/css/display.css b/theme/base/css/display.css
index b109706a1..8490fb580 100644
--- a/theme/base/css/display.css
+++ b/theme/base/css/display.css
@@ -632,7 +632,8 @@ margin-bottom:18px;
.entity_profile .entity_url,
.entity_profile .entity_note,
.entity_profile .entity_tags,
-.entity_profile .entity_aliases {
+.entity_profile .entity_aliases,
+.entity_profile .entity_statistics {
margin-left:113px;
margin-bottom:4px;
}
@@ -1023,6 +1024,7 @@ float:none;
}
#content .notice .entry-title {
margin-left:59px;
+margin-right:7px;
}
.vcard .url {
@@ -1130,8 +1132,17 @@ top:3px;
}
.dialogbox .submit_dialogbox {
-text-indent:0;
font-weight:bold;
+text-indent:0;
+min-width:46px;
+}
+
+#wrap form.processing input.submit,
+.entity_actions a.processing,
+.dialogbox.processing .submit_dialogbox {
+cursor:wait;
+outline:none;
+text-indent:-9999px;
}
.notice-options {
@@ -1402,6 +1413,9 @@ margin-bottom:18px;
.hentry .entry-content li li {
margin-left:18px;
}
+.hentry .entry-content .form_settings ul {
+margin-left:0;
+}
#content #plugin_authors {
min-width:122px;
diff --git a/theme/base/images/icons/icons-01.gif b/theme/base/images/icons/icons-01.gif
index f93d33d79..6f284f023 100644
--- a/theme/base/images/icons/icons-01.gif
+++ b/theme/base/images/icons/icons-01.gif
Binary files differ
diff --git a/theme/base/images/icons/twotone/green/against.gif b/theme/base/images/icons/twotone/green/against.gif
new file mode 100644
index 000000000..ca796c8a3
--- /dev/null
+++ b/theme/base/images/icons/twotone/green/against.gif
Binary files differ
diff --git a/theme/base/images/icons/twotone/green/checkmark.gif b/theme/base/images/icons/twotone/green/checkmark.gif
new file mode 100644
index 000000000..892429d48
--- /dev/null
+++ b/theme/base/images/icons/twotone/green/checkmark.gif
Binary files differ
diff --git a/theme/base/images/icons/twotone/green/clear.gif b/theme/base/images/icons/twotone/green/clear.gif
new file mode 100644
index 000000000..2666430ef
--- /dev/null
+++ b/theme/base/images/icons/twotone/green/clear.gif
Binary files differ
diff --git a/plugins/UserFlag/icon_flag.gif b/theme/base/images/icons/twotone/green/flag.gif
index 68c8aee25..68c8aee25 100644
--- a/plugins/UserFlag/icon_flag.gif
+++ b/theme/base/images/icons/twotone/green/flag.gif
Binary files differ
diff --git a/theme/base/logo.png b/theme/base/logo.png
index 7c68b34f6..cf1839194 100644
--- a/theme/base/logo.png
+++ b/theme/base/logo.png
Binary files differ
diff --git a/theme/default/css/display.css b/theme/default/css/display.css
index 3aebb239d..82eb13531 100644
--- a/theme/default/css/display.css
+++ b/theme/default/css/display.css
@@ -1,7 +1,7 @@
/** theme: default
*
* @package StatusNet
- * @author Sarven Capadisli <csarven@status.net>
+ * @author Sarven Capadisli <csarven@status.net>
* @copyright 2009 StatusNet, Inc.
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
* @link http://status.net/
@@ -18,7 +18,7 @@ font-family: "Lucida Sans Unicode", "Lucida Grande", sans-serif;
font-size:1em;
}
address {
-margin-right:5.7%;
+margin-right:5.3%;
}
input, textarea, select {
border-width:2px;
@@ -189,18 +189,23 @@ button.close,
.notice-options .repeated,
.form_notice label[for=notice_data-geo],
button.minimize,
-.form_reset_key input.submit {
+.form_reset_key input.submit,
+.entity_clear input.submit,
+.entity_flag input.submit,
+.entity_flag p,
+.entity_subscribe input.submit {
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 {
+.entity_actions a.processing,
+.dialogbox.processing .submit_dialogbox {
background:#FFFFFF url(../../base/images/icons/icon_processing.gif) no-repeat 47% 47%;
-cursor:wait;
-text-indent:-9999px;
-outline:none;
+}
+.notice-options .form_repeat.processing {
+background-image:none;
}
#content {
@@ -337,6 +342,19 @@ background-position: 5px -1511px;
.form_reset_key input.submit {
background-position: 5px -1973px;
}
+.entity_clear input.submit {
+background-position: 5px -2039px;
+}
+.entity_flag input.submit,
+.entity_flag p {
+background-position: 5px -2105px;
+}
+.entity_subscribe input.accept {
+background-position: 5px -2171px;
+}
+.entity_subscribe input.reject {
+background-position: 5px -2237px;
+}
/* NOTICES */
.notice .attachment {
diff --git a/theme/default/logo.png b/theme/default/logo.png
index 550d373fe..cf1839194 100644
--- a/theme/default/logo.png
+++ b/theme/default/logo.png
Binary files differ
diff --git a/theme/default/mobilelogo.png b/theme/default/mobilelogo.png
index b72f7aff5..66bb5f678 100644
--- a/theme/default/mobilelogo.png
+++ b/theme/default/mobilelogo.png
Binary files differ
diff --git a/theme/identica/css/display.css b/theme/identica/css/display.css
index 2818196c2..44ae4953b 100644
--- a/theme/identica/css/display.css
+++ b/theme/identica/css/display.css
@@ -1,7 +1,7 @@
/** theme: identica
*
* @package StatusNet
- * @author Sarven Capadisli <csarven@status.net>
+ * @author Sarven Capadisli <csarven@status.net>
* @copyright 2009 StatusNet, Inc.
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
* @link http://status.net/
@@ -189,18 +189,23 @@ button.close,
.notice-options .repeated,
.form_notice label[for=notice_data-geo],
button.minimize,
-.form_reset_key input.submit {
+.form_reset_key input.submit,
+.entity_clear input.submit,
+.entity_flag input.submit,
+.entity_flag p,
+.entity_subscribe input.submit {
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 {
+.entity_actions a.processing,
+.dialogbox.processing .submit_dialogbox {
background:#FFFFFF url(../../base/images/icons/icon_processing.gif) no-repeat 47% 47%;
-cursor:wait;
-text-indent:-9999px;
-outline:none;
+}
+.notice-options .form_repeat.processing {
+background-image:none;
}
#content {
@@ -336,6 +341,19 @@ background-position: 5px -1511px;
.form_reset_key input.submit {
background-position: 5px -1973px;
}
+.entity_clear input.submit {
+background-position: 5px -2039px;
+}
+.entity_flag input.submit,
+.entity_flag p {
+background-position: 5px -2105px;
+}
+.entity_subscribe input.accept {
+background-position: 5px -2171px;
+}
+.entity_subscribe input.reject {
+background-position: 5px -2237px;
+}
/* NOTICES */
.notice .attachment {
diff --git a/theme/identica/mobilelogo.png b/theme/identica/mobilelogo.png
index b72f7aff5..66bb5f678 100644
--- a/theme/identica/mobilelogo.png
+++ b/theme/identica/mobilelogo.png
Binary files differ