summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEvan Prodromou <evan@status.net>2010-08-03 16:05:03 -0700
committerEvan Prodromou <evan@status.net>2010-08-03 16:05:03 -0700
commit9f0715a9935966f3ec483bccc476d5baf3324b3c (patch)
tree9874247927e5e24044c75a48a9c04e427b0ba477
parent004e42e3e0606f0f9e5c8b6cd4512e5d870cd56e (diff)
parentb17fc0ca5b90d2cdc957ebc4870fbd2791b9e1b9 (diff)
Merge branch '0.9.x' into 1.0.x
-rw-r--r--EVENTS.txt227
-rw-r--r--README55
-rw-r--r--actions/all.php4
-rw-r--r--actions/apiaccountupdateprofilecolors.php6
-rw-r--r--actions/apiblockcreate.php4
-rw-r--r--actions/apiblockdestroy.php4
-rw-r--r--actions/apifriendshipscreate.php6
-rw-r--r--actions/apifriendshipsdestroy.php7
-rw-r--r--actions/apifriendshipsexists.php19
-rw-r--r--actions/apimediaupload.php6
-rw-r--r--actions/apistatusesupdate.php17
-rw-r--r--actions/apitimelinegroup.php6
-rw-r--r--actions/favor.php2
-rw-r--r--actions/finishremotesubscribe.php2
-rw-r--r--actions/nudge.php2
-rw-r--r--actions/replies.php6
-rw-r--r--actions/showfavorites.php6
-rw-r--r--actions/showstream.php4
-rw-r--r--classes/File.php25
-rw-r--r--classes/Foreign_user.php16
-rw-r--r--classes/Group_member.php3
-rw-r--r--classes/Local_group.php1
-rw-r--r--classes/Login_token.php2
-rw-r--r--classes/Memcached_DataObject.php12
-rw-r--r--classes/Message.php3
-rw-r--r--classes/Notice.php397
-rw-r--r--classes/Profile.php37
-rw-r--r--classes/Remote_profile.php3
-rw-r--r--classes/Safe_DataObject.php71
-rw-r--r--classes/Status_network.php60
-rw-r--r--classes/Status_network_tag.php69
-rw-r--r--classes/Subscription.php15
-rw-r--r--classes/User.php6
-rw-r--r--classes/User_group.php5
-rw-r--r--classes/status_network.ini15
-rw-r--r--db/notice_source.sql1
-rw-r--r--db/site.sql14
-rw-r--r--db/site_093to094.sql13
-rw-r--r--extlib/Auth/OpenID.php63
-rw-r--r--extlib/Auth/OpenID/AX.php23
-rw-r--r--extlib/Auth/OpenID/Association.php60
-rw-r--r--extlib/Auth/OpenID/BigMath.php31
-rw-r--r--extlib/Auth/OpenID/Consumer.php66
-rw-r--r--extlib/Auth/OpenID/CryptUtil.php5
-rw-r--r--extlib/Auth/OpenID/DatabaseConnection.php1
-rw-r--r--extlib/Auth/OpenID/DiffieHellman.php6
-rw-r--r--extlib/Auth/OpenID/Discover.php94
-rw-r--r--extlib/Auth/OpenID/DumbStore.php1
-rw-r--r--extlib/Auth/OpenID/Extension.php3
-rw-r--r--extlib/Auth/OpenID/FileStore.php6
-rw-r--r--extlib/Auth/OpenID/HMAC.php1
-rw-r--r--extlib/Auth/OpenID/Interface.php1
-rw-r--r--extlib/Auth/OpenID/KVForm.php5
-rw-r--r--extlib/Auth/OpenID/MemcachedStore.php1
-rw-r--r--extlib/Auth/OpenID/Message.php10
-rw-r--r--extlib/Auth/OpenID/MySQLStore.php1
-rw-r--r--extlib/Auth/OpenID/Nonce.php1
-rw-r--r--extlib/Auth/OpenID/PAPE.php11
-rw-r--r--extlib/Auth/OpenID/Parse.php37
-rw-r--r--extlib/Auth/OpenID/PostgreSQLStore.php1
-rw-r--r--extlib/Auth/OpenID/SQLStore.php18
-rw-r--r--extlib/Auth/OpenID/SQLiteStore.php1
-rw-r--r--extlib/Auth/OpenID/SReg.php14
-rw-r--r--extlib/Auth/OpenID/Server.php95
-rw-r--r--extlib/Auth/OpenID/ServerRequest.php1
-rw-r--r--extlib/Auth/OpenID/TrustRoot.php21
-rw-r--r--extlib/Auth/OpenID/URINorm.php2
-rw-r--r--extlib/Auth/Yadis/HTTPFetcher.php33
-rw-r--r--extlib/Auth/Yadis/Manager.php20
-rw-r--r--extlib/Auth/Yadis/Misc.php1
-rw-r--r--extlib/Auth/Yadis/ParanoidHTTPFetcher.php29
-rw-r--r--extlib/Auth/Yadis/ParseHTML.php1
-rw-r--r--extlib/Auth/Yadis/PlainHTTPFetcher.php3
-rw-r--r--extlib/Auth/Yadis/XML.php56
-rw-r--r--extlib/Auth/Yadis/XRDS.php16
-rw-r--r--extlib/Auth/Yadis/XRI.php4
-rw-r--r--extlib/Auth/Yadis/XRIRes.php6
-rw-r--r--extlib/Auth/Yadis/Yadis.php20
-rw-r--r--extlib/OAuth.php18
-rwxr-xr-xextlib/libomb/base_url_xrds_mapper.php75
-rw-r--r--extlib/libomb/constants.php15
-rwxr-xr-xextlib/libomb/datastore.php330
-rw-r--r--extlib/libomb/helper.php145
-rwxr-xr-xextlib/libomb/invalidparameterexception.php44
-rwxr-xr-xextlib/libomb/invalidyadisexception.php26
-rwxr-xr-xextlib/libomb/notice.php472
-rwxr-xr-xextlib/libomb/omb_yadis_xrds.php349
-rwxr-xr-xextlib/libomb/plain_xrds_writer.php128
-rwxr-xr-xextlib/libomb/profile.php546
-rwxr-xr-xextlib/libomb/remoteserviceexception.php71
-rwxr-xr-xextlib/libomb/service_consumer.php815
-rwxr-xr-xextlib/libomb/service_provider.php798
-rwxr-xr-xextlib/libomb/unsupportedserviceexception.php25
-rwxr-xr-xextlib/libomb/xrds_mapper.php38
-rwxr-xr-xextlib/libomb/xrds_writer.php37
-rw-r--r--js/util.js39
-rw-r--r--lib/activitycontext.php5
-rw-r--r--lib/activityutils.php6
-rw-r--r--lib/apiaction.php106
-rw-r--r--lib/apiauth.php38
-rw-r--r--lib/atomnoticefeed.php13
-rw-r--r--lib/common.php4
-rw-r--r--lib/installer.php2
-rw-r--r--lib/language.php7
-rw-r--r--lib/mysqlschema.php15
-rw-r--r--lib/noticelist.php20
-rw-r--r--lib/rssaction.php10
-rw-r--r--lib/schema.php37
-rw-r--r--lib/util.php10
-rw-r--r--locale/af/LC_MESSAGES/statusnet.po316
-rw-r--r--locale/ar/LC_MESSAGES/statusnet.po365
-rw-r--r--locale/arz/LC_MESSAGES/statusnet.po318
-rw-r--r--locale/bg/LC_MESSAGES/statusnet.po337
-rw-r--r--locale/br/LC_MESSAGES/statusnet.po322
-rw-r--r--locale/ca/LC_MESSAGES/statusnet.po416
-rw-r--r--locale/cs/LC_MESSAGES/statusnet.po312
-rw-r--r--locale/da/LC_MESSAGES/statusnet.po6737
-rw-r--r--locale/de/LC_MESSAGES/statusnet.po372
-rw-r--r--locale/el/LC_MESSAGES/statusnet.po311
-rw-r--r--locale/en_GB/LC_MESSAGES/statusnet.po328
-rw-r--r--locale/es/LC_MESSAGES/statusnet.po348
-rw-r--r--locale/fa/LC_MESSAGES/statusnet.po328
-rw-r--r--locale/fi/LC_MESSAGES/statusnet.po313
-rw-r--r--locale/fr/LC_MESSAGES/statusnet.po325
-rw-r--r--locale/ga/LC_MESSAGES/statusnet.po312
-rw-r--r--locale/gl/LC_MESSAGES/statusnet.po325
-rw-r--r--locale/he/LC_MESSAGES/statusnet.po312
-rw-r--r--locale/hsb/LC_MESSAGES/statusnet.po323
-rw-r--r--locale/ia/LC_MESSAGES/statusnet.po333
-rw-r--r--locale/is/LC_MESSAGES/statusnet.po312
-rw-r--r--locale/it/LC_MESSAGES/statusnet.po327
-rw-r--r--locale/ja/LC_MESSAGES/statusnet.po327
-rw-r--r--locale/ko/LC_MESSAGES/statusnet.po319
-rw-r--r--locale/mk/LC_MESSAGES/statusnet.po349
-rw-r--r--locale/nb/LC_MESSAGES/statusnet.po355
-rw-r--r--locale/nl/LC_MESSAGES/statusnet.po338
-rw-r--r--locale/nn/LC_MESSAGES/statusnet.po311
-rw-r--r--locale/pl/LC_MESSAGES/statusnet.po328
-rw-r--r--locale/pt/LC_MESSAGES/statusnet.po376
-rw-r--r--locale/pt_BR/LC_MESSAGES/statusnet.po347
-rw-r--r--locale/ru/LC_MESSAGES/statusnet.po358
-rw-r--r--locale/statusnet.pot295
-rw-r--r--locale/sv/LC_MESSAGES/statusnet.po358
-rw-r--r--locale/te/LC_MESSAGES/statusnet.po327
-rw-r--r--locale/tr/LC_MESSAGES/statusnet.po312
-rw-r--r--locale/uk/LC_MESSAGES/statusnet.po316
-rw-r--r--locale/vi/LC_MESSAGES/statusnet.po337
-rw-r--r--locale/zh_CN/LC_MESSAGES/statusnet.po324
-rw-r--r--locale/zh_TW/LC_MESSAGES/statusnet.po309
-rw-r--r--plugins/Adsense/AdsensePlugin.php48
-rw-r--r--plugins/Adsense/adsenseadminpanel.php223
-rw-r--r--plugins/MobileProfile/mp-screen.css6
-rw-r--r--plugins/OStatus/OStatusPlugin.php15
-rw-r--r--plugins/OStatus/actions/hostmeta.php3
-rw-r--r--plugins/OStatus/actions/ostatusgroup.php2
-rw-r--r--plugins/OStatus/lib/hubprepqueuehandler.php87
-rw-r--r--plugins/OStatus/lib/magicenvelope.php28
-rw-r--r--plugins/OStatus/lib/salmon.php4
-rw-r--r--plugins/OStatus/lib/xrd.php94
-rw-r--r--plugins/OStatus/lib/xrdaction.php5
-rw-r--r--plugins/Sitemap/SitemapPlugin.php6
-rw-r--r--plugins/Sitemap/Sitemap_notice_count.php4
-rw-r--r--plugins/Sitemap/Sitemap_user_count.php4
-rw-r--r--plugins/Sitemap/scripts/updatecounts.php36
-rw-r--r--plugins/TwitterBridge/TwitterBridgePlugin.php13
-rw-r--r--plugins/TwitterBridge/twitter.php21
-rw-r--r--plugins/TwitterBridge/twitteradminpanel.php29
-rw-r--r--scripts/fixup_status_network.php37
-rw-r--r--scripts/settag.php12
-rwxr-xr-xscripts/setup_status_network.sh6
-rw-r--r--tests/ActivityGenerationTests.php592
-rw-r--r--theme/biz/css/display.css2
-rw-r--r--theme/default/css/display.css2
-rw-r--r--theme/identica/css/display.css2
-rw-r--r--theme/pigeonthoughts/css/display.css2
175 files changed, 20118 insertions, 7007 deletions
diff --git a/EVENTS.txt b/EVENTS.txt
index 0a1565752..68752ef3f 100644
--- a/EVENTS.txt
+++ b/EVENTS.txt
@@ -836,3 +836,230 @@ EndDeleteUser: handling the post for deleting a user
- $action: action being shown
- $user: user being deleted
+StartActivityStart: starting the output for a notice activity <event>
+- &$notice: notice being output
+- &$xs: XMLStringer for output
+- &$attrs: <entry> attributes (mostly namespace declarations, if any)
+
+EndActivityStart: end the opening tag for an activity <event>
+- &$notice: notice being output
+- &$xs: XMLStringer for output
+- $attrs: <entry> attributes (mostly namespace declarations, if any)
+
+StartActivitySource: before outputting the <source> element for a notice activity
+- &$notice: notice being output
+- &$xs: XMLStringer for output
+
+EndActivitySource: after outputting the <source> element for a notice activity
+- &$notice: notice being output
+- &$xs: XMLStringer for output
+
+StartActivityTitle: before outputting notice activity title
+- &$notice: notice being output
+- &$xs: XMLStringer for output
+- &$title: title of the notice, mutable
+
+EndActivityTitle: after outputting notice activity title
+- $notice: notice being output
+- &$xs: XMLStringer for output
+- $title: title of the notice
+
+StartActivityAuthor: before outputting atom author
+- &$notice: notice being output
+- &$xs: XMLStringer for output
+- &$atomAuthor: string for XML representing atom author
+
+EndActivityAuthor: after outputting atom author
+- &$notice: notice being output
+- &$xs: XMLStringer for output
+- &$atomAuthor: string for XML representing atom author
+
+StartActivityActor: before outputting activity actor element for a notice activity entry
+- &$notice: notice being output
+- &$xs: XMLStringer for output
+- &$actor: string for XML representing activity actor
+
+EndActivityActor: after outputting activity actor element for a notice activity entry
+- &$notice: notice being output
+- &$xs: XMLStringer for output
+- &$actor: string for XML representing activity actor
+
+StartActivityLink: before outputting activity HTML link element for a notice activity entry
+- &$notice: notice being output
+- &$xs: XMLStringer for output
+- &$url: URL for activity HTML link element for a notice activity entry
+
+EndActivityLink: before outputting activity HTML link element for a notice activity entry
+- &$notice: notice being output
+- &$xs: XMLStringer for output
+- $url: URL for activity HTML link element for a notice activity entry
+
+StartActivityId: before outputting atom:id element for a notice activity entry
+- &$notice: notice being output
+- &$xs: XMLStringer for output
+- &$id: atom:id (notice URI by default)
+
+EndActivityId: after outputting atom:id element for a notice activity entry
+- &$notice: notice being output
+- &$xs: XMLStringer for output
+- $id: atom:id (notice URI by default)
+
+StartActivityPublished: before outputting atom:published element for a notice activity entry
+- &$notice: notice being output
+- &$xs: XMLStringer for output
+- &$published: atom:published value (notice created by default)
+
+EndActivityPublished: before outputting atom:published element for a notice activity entry
+- &$notice: notice being output
+- &$xs: XMLStringer for output
+- $published: atom:published value (notice created by default)
+
+StartActivityUpdated: before outputting atom:updated element for a notice activity entry
+- &$notice: notice being output
+- &$xs: XMLStringer for output
+- &$updated: atom:updated value (same as atom:published by default)
+
+EndActivityUpdated: after outputting atom:updated element for a notice activity entry
+- &$notice: notice being output
+- &$xs: XMLStringer for output
+- $updated: atom:updated value (same as atom:published by default)
+
+StartActivityContent: before outputting atom:content element for a notice activity entry
+- &$notice: notice being output
+- &$xs: XMLStringer for output
+- &$content: atom:content value (notice rendered HTML by default)
+
+EndActivityContent: after outputting atom:content element for a notice activity entry
+- &$notice: notice being output
+- &$xs: XMLStringer for output
+- $content: atom:content value (notice rendered HTML by default)
+
+StartActivityVerb: before outputting activity:verb element for a notice activity entry
+- &$notice: notice being output
+- &$xs: XMLStringer for output
+- &$verb: activity:verb URI ('http://activitystrea.ms/schema/1.0/post' by default)
+
+EndActivityVerb: after outputting activity:verb element for a notice activity entry
+- &$notice: notice being output
+- &$xs: XMLStringer for output
+- $verb: activity:verb URI ('http://activitystrea.ms/schema/1.0/post' by default)
+
+StartActivityDefaultObjectType: before outputting activity:object-type element for a notice activity entry
+- &$notice: notice being output
+- &$xs: XMLStringer for output
+- &$type: activity:object-type URI for default object ('http://activitystrea.ms/schema/1.0/note' by default)
+
+EndActivityDefaultObjectType: after outputting activity:verb element for a notice activity entry
+- &$notice: notice being output
+- &$xs: XMLStringer for output
+- $type: activity:object-type URI for default object ('http://activitystrea.ms/schema/1.0/note' by default)
+
+StartActivityObjects: before outputting activity:object elements for a notice activity entry
+- &$notice: notice being output
+- &$xs: XMLStringer for output
+- &$objects: array of ActivityObject objects to output (empty by default)
+
+EndActivityObjects: after outputting activity:object elements for a notice activity entry
+- &$notice: notice being output
+- &$xs: XMLStringer for output
+- $objects: array of ActivityObject objects to output (empty by default)
+
+StartActivityNoticeInfo: before outputting statusnet:notice-info element for a notice activity entry
+- &$notice: notice being output
+- &$xs: XMLStringer for output
+- &$noticeInfoAttr: array of attributes for notice info element
+
+EndActivityNoticeInfo: after outputting statusnet:notice-info element for a notice activity entry
+- &$notice: notice being output
+- &$xs: XMLStringer for output
+- $noticeInfoAttr: array of attributes for notice info element
+
+StartActivityInReplyTo: before outputting thr:in-reply-to element for a notice activity entry
+- &$notice: notice being output
+- &$xs: XMLStringer for output
+- &$replyNotice: Notice object the main notice is in-reply-to
+
+EndActivityInReplyTo: after outputting thr:in-reply-to element for a notice activity entry
+- &$notice: notice being output
+- &$xs: XMLStringer for output
+- $replyNotice: Notice object the main notice is in-reply-to
+
+StartActivityConversation: before outputting ostatus:conversation link element for a notice activity entry
+- &$notice: notice being output
+- &$xs: XMLStringer for output
+- &$conv: Conversation object
+
+EndActivityConversation: after outputting ostatus:conversation link element for a notice activity entry
+- &$notice: notice being output
+- &$xs: XMLStringer for output
+- $conv: Conversation object
+
+StartActivityAttentionProfiles: before outputting ostatus:attention link element for people in a notice activity entry
+- &$notice: notice being output
+- &$xs: XMLStringer for output
+- &$replyProfiles: array of profiles of people being replied to
+
+EndActivityAttentionProfiles: after outputting ostatus:attention link element for people in a notice activity entry
+- &$notice: notice being output
+- &$xs: XMLStringer for output
+- $replyProfiles: array of Profile object of people being replied to
+
+StartActivityAttentionGroups: before outputting ostatus:attention link element for groups in a notice activity entry
+- &$notice: notice being output
+- &$xs: XMLStringer for output
+- &$groups: array of Group objects of groups being addressed
+
+EndActivityAttentionGroups: after outputting ostatus:attention link element for groups in a notice activity entry
+- &$notice: notice being output
+- &$xs: XMLStringer for output
+- $groups: array of Group objects of groups being addressed
+
+StartActivityForward: before outputting ostatus:forward link element in a notice activity entry
+- &$notice: notice being output
+- &$xs: XMLStringer for output
+- &$repeat: Notice that was repeated
+
+EndActivityForward: after outputting ostatus:forward link element in a notice activity entry
+- &$notice: notice being output
+- &$xs: XMLStringer for output
+- $repeat: Notice that was repeated
+
+StartActivityCategories: before outputting atom:category elements in a notice activity entry
+- &$notice: notice being output
+- &$xs: XMLStringer for output
+- &$tags: array of strings for tags on the notice (used for categories)
+
+EndActivityCategories: after outputting atom:category elements in a notice activity entry
+- &$notice: notice being output
+- &$xs: XMLStringer for output
+- $tags: array of strings for tags on the notice (used for categories)
+
+StartActivityEnclosures: before outputting enclosure link elements in a notice activity entry
+- &$notice: notice being output
+- &$xs: XMLStringer for output
+- &$enclosures: array of enclosure objects (see File::getEnclosure() for details)
+
+EndActivityEnclosures: after outputting enclosure link elements in a notice activity entry
+- &$notice: notice being output
+- &$xs: XMLStringer for output
+- $enclosures: array of enclosure objects (see File::getEnclosure() for details)
+
+StartActivityGeo: before outputting geo:rss element in a notice activity entry
+- &$notice: notice being output
+- &$xs: XMLStringer for output
+- &$lat: latitude
+- &$lon: longitude
+
+EndActivityGeo: after outputting geo:rss element in a notice activity entry
+- &$notice: notice being output
+- &$xs: XMLStringer for output
+- $lat: latitude
+- $lon: longitude
+
+StartActivityEnd: before the closing </entry> in a notice activity entry (last chance for data!)
+- &$notice: notice being output
+- &$xs: XMLStringer for output
+
+EndActivityEnd: after the closing </entry> in a notice activity entry
+- &$notice: notice being output
+- &$xs: XMLStringer for output
diff --git a/README b/README
index e282e0c32..9330d133a 100644
--- a/README
+++ b/README
@@ -2,8 +2,8 @@
README
------
-StatusNet 0.9.2 ("King of Birds")
-3 May 2010
+StatusNet 0.9.3 ("Half a World Away")
+29 June 2010
This is the README file for StatusNet, the Open Source microblogging
platform. It includes installation instructions, descriptions of
@@ -77,40 +77,27 @@ for additional terms.
New this version
================
-This is a minor bug and feature release since version 0.9.1 released 28
-March 2010.
+This is a minor bug and feature release since version 0.9.2 released on
+4 May 2010.
-Because of fixes to OStatus bugs, it is highly recommended that all
-public sites upgrade to the new version immediately.
+For best compatibility with client software and site federation, and a lot of
+bug fixes, it is highly recommended that all public sites upgrade to the new
+version.
Notable changes this version:
-- Installer no longer fails with a PHP fatal error when trying to set up the
- subscription to update@status.net
-- Fixed email notifications for @-replies that come in via OStatus
-- OStatus related Fixes to the cloudy theme
-- Pass geo locations over Twitter bridge (will only be used if enabled on the
- Twitter side)
-- scripts/showplugins.php - script to dump the list of activated plugins and
- their settings
-- scripts/fixup_blocks.php - script to finds any stray subscriptions in
- violation of blocks, and removes them
-- Allow blocking someone who's not currently subscribed to you (prevents
- seeing @-replies from them, or them subbing to you in future)
-- Default 2-second timeout on Geonames web service lookups
-- Improved localization for plugins
-- New anti-spam measures: added nofollow rels to group members list,
- subscribers list
-- Shared cache key option for Geonames plugin (lets multi-instance sites
- share their cached geoname lookups)
-- Stability fixes to the TwitterStatusFetcher
-- If user allows location sharing but turned off browser location use profile
- location
-- Improved group listing via the API
-- Improved FOAF output
-- Several other bugfixes
-
-A full changelog is available at http://status.net/wiki/StatusNet_0.9.2.
+- Enhanced API output to aid StatusNet-specific clients
+- Many updates to user interface translation from TranslateWiki
+- OStatus now works subscribing to SSL-protected sites by default
+- OpenID now works on PHP 5.3, supports closer site integration.
+- Numerous API and FOAF output fixes.
+- Fixes to Facebook integration for FB API behavior changes
+- PostgreSQL support updates
+- Initial version of a custom theme uploader (disabled by default)
+- LDAP auth plugins cleanup
+- Many other bugfixes
+
+A full changelog is available at http://status.net/wiki/StatusNet_0.9.3.
Prerequisites
=============
@@ -121,8 +108,8 @@ run correctly.
- PHP 5.2.3+. It may be possible to run this software on earlier
versions of PHP, but many of the functions used are only available
in PHP 5.2 or above. 5.2.6 or later is needed for XMPP background
- daemons on 64-bit platforms. PHP 5.3.x should work but is known
- to cause some failures for OpenID.
+ daemons on 64-bit platforms. PHP 5.3.x should work correctly in this
+ release, but problems with some plugins are possible.
- MySQL 5.x. The StatusNet database is stored, by default, in a MySQL
server. It has been primarily tested on 5.x servers, although it may
be possible to install on earlier (or later!) versions. The server
diff --git a/actions/all.php b/actions/all.php
index 9c01b6393..6c14d2f13 100644
--- a/actions/all.php
+++ b/actions/all.php
@@ -143,10 +143,10 @@ class AllAction extends ProfileAction
$message .= _('Try subscribing to more people, [join a group](%%action.groups%%) or post something yourself.');
} else {
// TRANS: %1$s is user nickname, %2$s is user nickname, %2$s is user nickname prefixed with "@"
- $message .= sprintf(_('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).'), $this->user->nickname, $this->user->nickname, '@' . $this->user->nickname);
+ $message .= sprintf(_('You can try to [nudge %1$s](../%2$s) from their profile or [post something to them](%%%%action.newnotice%%%%?status_textarea=%3$s).'), $this->user->nickname, $this->user->nickname, '@' . $this->user->nickname);
}
} else {
- $message .= sprintf(_('Why not [register an account](%%%%action.register%%%%) and then nudge %s or post a notice to his or her attention.'), $this->user->nickname);
+ $message .= sprintf(_('Why not [register an account](%%%%action.register%%%%) and then nudge %s or post a notice to them.'), $this->user->nickname);
}
$this->elementStart('div', 'guide');
diff --git a/actions/apiaccountupdateprofilecolors.php b/actions/apiaccountupdateprofilecolors.php
index 3cac82974..c666f9d75 100644
--- a/actions/apiaccountupdateprofilecolors.php
+++ b/actions/apiaccountupdateprofilecolors.php
@@ -22,7 +22,7 @@
* @category API
* @package StatusNet
* @author Zach Copley <zach@status.net>
- * @copyright 2009 StatusNet, Inc.
+ * @copyright 2009-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/
*/
@@ -131,7 +131,7 @@ class ApiAccountUpdateProfileColorsAction extends ApiAuthAction
try {
$this->setColors($design);
} catch (WebColorException $e) {
- $this->clientError($e->getMessage());
+ $this->clientError($e->getMessage(), 400, $this->format);
return false;
}
@@ -153,7 +153,7 @@ class ApiAccountUpdateProfileColorsAction extends ApiAuthAction
try {
$this->setColors($design);
} catch (WebColorException $e) {
- $this->clientError($e->getMessage());
+ $this->clientError($e->getMessage(), 400, $this->format);
return false;
}
diff --git a/actions/apiblockcreate.php b/actions/apiblockcreate.php
index c26485f59..b355cd1c7 100644
--- a/actions/apiblockcreate.php
+++ b/actions/apiblockcreate.php
@@ -23,7 +23,7 @@
* @package StatusNet
* @author Evan Prodromou <evan@status.net>
* @author Zach Copley <zach@status.net>
- * @copyright 2009 StatusNet, Inc.
+ * @copyright 2009-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/
*/
@@ -65,7 +65,7 @@ class ApiBlockCreateAction extends ApiAuthAction
parent::prepare($args);
$this->user = $this->auth_user;
- $this->other = $this->getTargetUser($this->arg('id'));
+ $this->other = $this->getTargetProfile($this->arg('id'));
return true;
}
diff --git a/actions/apiblockdestroy.php b/actions/apiblockdestroy.php
index 666f308f4..7ea201677 100644
--- a/actions/apiblockdestroy.php
+++ b/actions/apiblockdestroy.php
@@ -23,7 +23,7 @@
* @package StatusNet
* @author Evan Prodromou <evan@status.net>
* @author Zach Copley <zach@status.net>
- * @copyright 2009 StatusNet, Inc.
+ * @copyright 2009-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/
*/
@@ -64,7 +64,7 @@ class ApiBlockDestroyAction extends ApiAuthAction
parent::prepare($args);
$this->user = $this->auth_user;
- $this->other = $this->getTargetUser($this->arg('id'));
+ $this->other = $this->getTargetProfile($this->arg('id'));
return true;
}
diff --git a/actions/apifriendshipscreate.php b/actions/apifriendshipscreate.php
index 1de2cc32e..a7ec5b28a 100644
--- a/actions/apifriendshipscreate.php
+++ b/actions/apifriendshipscreate.php
@@ -24,7 +24,7 @@
* @author Dan Moore <dan@moore.cx>
* @author Evan Prodromou <evan@status.net>
* @author Zach Copley <zach@status.net>
- * @copyright 2009 StatusNet, Inc.
+ * @copyright 2009-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/
*/
@@ -67,7 +67,7 @@ class ApiFriendshipsCreateAction extends ApiAuthAction
parent::prepare($args);
$this->user = $this->auth_user;
- $this->other = $this->getTargetUser($id);
+ $this->other = $this->getTargetProfile($this->arg('id'));
return true;
}
@@ -106,7 +106,7 @@ class ApiFriendshipsCreateAction extends ApiAuthAction
if (empty($this->other)) {
$this->clientError(
- _('Could not follow user: User not found.'),
+ _('Could not follow user: profile not found.'),
403,
$this->format
);
diff --git a/actions/apifriendshipsdestroy.php b/actions/apifriendshipsdestroy.php
index d48a57756..551d01682 100644
--- a/actions/apifriendshipsdestroy.php
+++ b/actions/apifriendshipsdestroy.php
@@ -24,7 +24,7 @@
* @author Dan Moore <dan@moore.cx>
* @author Evan Prodromou <evan@status.net>
* @author Zach Copley <zach@status.net>
- * @copyright 2009 StatusNet, Inc.
+ * @copyright 2009-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/
*/
@@ -67,7 +67,7 @@ class ApiFriendshipsDestroyAction extends ApiAuthAction
parent::prepare($args);
$this->user = $this->auth_user;
- $this->other = $this->getTargetUser($id);
+ $this->other = $this->getTargetProfile($this->arg('id'));
return true;
}
@@ -125,8 +125,7 @@ class ApiFriendshipsDestroyAction extends ApiAuthAction
}
// throws an exception on error
- Subscription::cancel($this->user->getProfile(),
- $this->other->getProfile());
+ Subscription::cancel($this->user->getProfile(), $this->other);
$this->initDocument($this->format);
$this->showProfile($this->other, $this->format);
diff --git a/actions/apifriendshipsexists.php b/actions/apifriendshipsexists.php
index ca62b5f51..725178fd4 100644
--- a/actions/apifriendshipsexists.php
+++ b/actions/apifriendshipsexists.php
@@ -24,7 +24,7 @@
* @author Dan Moore <dan@moore.cx>
* @author Evan Prodromou <evan@status.net>
* @author Zach Copley <zach@status.net>
- * @copyright 2009 StatusNet, Inc.
+ * @copyright 2009-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/
*/
@@ -50,8 +50,8 @@ require_once INSTALLDIR . '/lib/apiprivateauth.php';
class ApiFriendshipsExistsAction extends ApiPrivateAuthAction
{
- var $user_a = null;
- var $user_b = null;
+ var $profile_a = null;
+ var $profile_b = null;
/**
* Take arguments for running
@@ -66,11 +66,8 @@ class ApiFriendshipsExistsAction extends ApiPrivateAuthAction
{
parent::prepare($args);
- $user_a_id = $this->trimmed('user_a');
- $user_b_id = $this->trimmed('user_b');
-
- $this->user_a = $this->getTargetUser($user_a_id);
- $this->user_b = $this->getTargetUser($user_b_id);
+ $this->profile_a = $this->getTargetProfile($this->trimmed('user_a'));
+ $this->profile_b = $this->getTargetProfile($this->trimmed('user_b'));
return true;
}
@@ -89,16 +86,16 @@ class ApiFriendshipsExistsAction extends ApiPrivateAuthAction
{
parent::handle($args);
- if (empty($this->user_a) || empty($this->user_b)) {
+ if (empty($this->profile_a) || empty($this->profile_b)) {
$this->clientError(
- _('Two user ids or screen_names must be supplied.'),
+ _('Two valid IDs or screen_names must be supplied.'),
400,
$this->format
);
return;
}
- $result = $this->user_a->isSubscribed($this->user_b);
+ $result = Subscription::exists($this->profile_a, $this->profile_b);
switch ($this->format) {
case 'xml':
diff --git a/actions/apimediaupload.php b/actions/apimediaupload.php
index ec316edc8..7aa88c186 100644
--- a/actions/apimediaupload.php
+++ b/actions/apimediaupload.php
@@ -88,15 +88,15 @@ class ApiMediaUploadAction extends ApiAuthAction
try {
$upload = MediaFile::fromUpload('media', $this->auth_user);
- } catch (ClientException $ce) {
- $this->clientError($ce->getMessage());
+ } catch (Exception $e) {
+ $this->clientError($e->getMessage(), $e->getCode());
return;
}
if (isset($upload)) {
$this->showResponse($upload);
} else {
- $this->clientError('Upload failed.');
+ $this->clientError(_('Upload failed.'));
return;
}
}
diff --git a/actions/apistatusesupdate.php b/actions/apistatusesupdate.php
index d65a068f5..fa3f611c0 100644
--- a/actions/apistatusesupdate.php
+++ b/actions/apistatusesupdate.php
@@ -196,7 +196,8 @@ class ApiStatusesUpdateAction extends ApiAuthAction
if ($_SERVER['REQUEST_METHOD'] != 'POST') {
$this->clientError(
_('This method requires a POST.'),
- 400, $this->format
+ 400,
+ $this->format
);
return;
}
@@ -217,7 +218,7 @@ class ApiStatusesUpdateAction extends ApiAuthAction
if (empty($this->status)) {
$this->clientError(
- 'Client must provide a \'status\' parameter with a value.',
+ _('Client must provide a \'status\' parameter with a value.'),
400,
$this->format
);
@@ -291,8 +292,8 @@ class ApiStatusesUpdateAction extends ApiAuthAction
try {
$upload = MediaFile::fromUpload('media', $this->auth_user);
- } catch (ClientException $ce) {
- $this->clientError($ce->getMessage());
+ } catch (Exception $e) {
+ $this->clientError($e->getMessage(), $e->getCode(), $this->format);
return;
}
@@ -305,7 +306,11 @@ class ApiStatusesUpdateAction extends ApiAuthAction
'Max notice size is %d chars, ' .
'including attachment URL.'
);
- $this->clientError(sprintf($msg, Notice::maxContent()));
+ $this->clientError(
+ sprintf($msg, Notice::maxContent()),
+ 400,
+ $this->format
+ );
}
}
@@ -332,7 +337,7 @@ class ApiStatusesUpdateAction extends ApiAuthAction
$options
);
} catch (Exception $e) {
- $this->clientError($e->getMessage());
+ $this->clientError($e->getMessage(), $e->getCode(), $this->format);
return;
}
diff --git a/actions/apitimelinegroup.php b/actions/apitimelinegroup.php
index c4a6a18d2..7a40fd808 100644
--- a/actions/apitimelinegroup.php
+++ b/actions/apitimelinegroup.php
@@ -25,7 +25,7 @@
* @author Evan Prodromou <evan@status.net>
* @author Jeffery To <jeffery.to@gmail.com>
* @author Zach Copley <zach@status.net>
- * @copyright 2009 StatusNet, Inc.
+ * @copyright 2009-2010 StatusNet, Inc.
* @copyright 2009 Free Software Foundation, Inc http://www.fsf.org
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
* @link http://status.net/
@@ -138,7 +138,9 @@ class ApiTimelineGroupAction extends ApiPrivateAuthAction
$this->raw($atom->getString());
} catch (Atom10FeedException $e) {
$this->serverError(
- 'Could not generate feed for group - ' . $e->getMessage()
+ 'Could not generate feed for group - ' . $e->getMessage(),
+ 400,
+ $this->format
);
return;
}
diff --git a/actions/favor.php b/actions/favor.php
index 475912fd0..01976a38f 100644
--- a/actions/favor.php
+++ b/actions/favor.php
@@ -104,7 +104,7 @@ class FavorAction extends Action
}
/**
- * Notifies a user when his notice is favorited.
+ * Notifies a user when their notice is favorited.
*
* @param class $notice favorited notice
* @param class $user user declaring a favorite
diff --git a/actions/finishremotesubscribe.php b/actions/finishremotesubscribe.php
index ac51ddec3..0325f6adb 100644
--- a/actions/finishremotesubscribe.php
+++ b/actions/finishremotesubscribe.php
@@ -37,7 +37,7 @@ require_once INSTALLDIR.'/lib/omb.php';
* Handler for remote subscription finish callback
*
* When a remote user subscribes a local user, a redirect to this action is
- * issued after the remote user authorized his service to subscribe.
+ * issued after the remote user authorized their service to subscribe.
*
* @category Action
* @package Laconica
diff --git a/actions/nudge.php b/actions/nudge.php
index cf5f773e7..32ae8587c 100644
--- a/actions/nudge.php
+++ b/actions/nudge.php
@@ -82,7 +82,7 @@ class NudgeAction extends Action
}
if (!$other->email || !$other->emailnotifynudge) {
- $this->clientError(_('This user doesn\'t allow nudges or hasn\'t confirmed or set his email yet.'));
+ $this->clientError(_('This user doesn\'t allow nudges or hasn\'t confirmed or set their email yet.'));
return;
}
diff --git a/actions/replies.php b/actions/replies.php
index 608f71d6e..8f2fc6c7f 100644
--- a/actions/replies.php
+++ b/actions/replies.php
@@ -196,18 +196,18 @@ class RepliesAction extends OwnerDesignAction
function showEmptyListMessage()
{
- $message = sprintf(_('This is the timeline showing replies to %1$s but %2$s hasn\'t received a notice to his attention yet.'), $this->user->nickname, $this->user->nickname) . ' ';
+ $message = sprintf(_('This is the timeline showing replies to %1$s but %2$s hasn\'t received a notice to them yet.'), $this->user->nickname, $this->user->nickname) . ' ';
if (common_logged_in()) {
$current_user = common_current_user();
if ($this->user->id === $current_user->id) {
$message .= _('You can engage other users in a conversation, subscribe to more people or [join groups](%%action.groups%%).');
} else {
- $message .= sprintf(_('You can try to [nudge %1$s](../%2$s) or [post something to his or her attention](%%%%action.newnotice%%%%?status_textarea=%3$s).'), $this->user->nickname, $this->user->nickname, '@' . $this->user->nickname);
+ $message .= sprintf(_('You can try to [nudge %1$s](../%2$s) or [post something to them](%%%%action.newnotice%%%%?status_textarea=%3$s).'), $this->user->nickname, $this->user->nickname, '@' . $this->user->nickname);
}
}
else {
- $message .= sprintf(_('Why not [register an account](%%%%action.register%%%%) and then nudge %s or post a notice to his or her attention.'), $this->user->nickname);
+ $message .= sprintf(_('Why not [register an account](%%%%action.register%%%%) and then nudge %s or post a notice to them.'), $this->user->nickname);
}
$this->elementStart('div', 'guide');
diff --git a/actions/showfavorites.php b/actions/showfavorites.php
index 7f3c77ee2..d8042e91c 100644
--- a/actions/showfavorites.php
+++ b/actions/showfavorites.php
@@ -119,7 +119,7 @@ class ShowfavoritesAction extends OwnerDesignAction
if (!empty($cur) && $cur->id == $this->user->id) {
// Show imported/gateway notices as well as local if
- // the user is looking at his own favorites
+ // the user is looking at their own favorites
$this->notice = $this->user->favoriteNotices(true, ($this->page-1)*NOTICES_PER_PAGE,
NOTICES_PER_PAGE + 1);
@@ -205,11 +205,11 @@ class ShowfavoritesAction extends OwnerDesignAction
if ($this->user->id === $current_user->id) {
$message = _('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.');
} else {
- $message = sprintf(_('%s hasn\'t added any notices to his favorites yet. Post something interesting they would add to their favorites :)'), $this->user->nickname);
+ $message = sprintf(_('%s hasn\'t added any favorite notices yet. Post something interesting they would add to their favorites :)'), $this->user->nickname);
}
}
else {
- $message = sprintf(_('%s hasn\'t added any notices to his favorites yet. Why not [register an account](%%%%action.register%%%%) and then post something interesting they would add to their favorites :)'), $this->user->nickname);
+ $message = sprintf(_('%s hasn\'t added any favorite notices yet. Why not [register an account](%%%%action.register%%%%) and then post something interesting they would add to their favorites :)'), $this->user->nickname);
}
$this->elementStart('div', 'guide');
diff --git a/actions/showstream.php b/actions/showstream.php
index 5a9add36c..744b6906e 100644
--- a/actions/showstream.php
+++ b/actions/showstream.php
@@ -198,11 +198,11 @@ class ShowstreamAction extends ProfileAction
if ($this->user->id === $current_user->id) {
$message .= _('Seen anything interesting recently? You haven\'t posted any notices yet, now would be a good time to start :)');
} else {
- $message .= sprintf(_('You can try to nudge %1$s or [post something to his or her attention](%%%%action.newnotice%%%%?status_textarea=%2$s).'), $this->user->nickname, '@' . $this->user->nickname);
+ $message .= sprintf(_('You can try to nudge %1$s or [post something to them](%%%%action.newnotice%%%%?status_textarea=%2$s).'), $this->user->nickname, '@' . $this->user->nickname);
}
}
else {
- $message .= sprintf(_('Why not [register an account](%%%%action.register%%%%) and then nudge %s or post a notice to his or her attention.'), $this->user->nickname);
+ $message .= sprintf(_('Why not [register an account](%%%%action.register%%%%) and then nudge %s or post a notice to them.'), $this->user->nickname);
}
$this->elementStart('div', 'guide');
diff --git a/classes/File.php b/classes/File.php
index 0cd31075d..407fd3211 100644
--- a/classes/File.php
+++ b/classes/File.php
@@ -139,7 +139,8 @@ class File extends Memcached_DataObject
$redir_url = $redir_data;
$redir_data = array();
} else {
- throw new ServerException("Can't process url '$given_url'");
+ // TRANS: Server exception thrown when a URL cannot be processed.
+ throw new ServerException(sprintf(_("Cannot process URL '%s'"), $given_url));
}
// TODO: max field length
if ($redir_url === $given_url || strlen($redir_url) > 255 || !$followRedirects) {
@@ -169,7 +170,9 @@ class File extends Memcached_DataObject
if (empty($x)) {
$x = File::staticGet($file_id);
if (empty($x)) {
- throw new ServerException("Robin thinks something is impossible.");
+ // FIXME: This could possibly be a clearer message :)
+ // TRANS: Server exception thrown when... Robin thinks something is impossible!
+ throw new ServerException(_("Robin thinks something is impossible."));
}
}
@@ -182,8 +185,10 @@ class File extends Memcached_DataObject
function isRespectsQuota($user,$fileSize) {
if ($fileSize > common_config('attachments', 'file_quota')) {
- return sprintf(_('No file may be larger than %d bytes ' .
- 'and the file you sent was %d bytes. Try to upload a smaller version.'),
+ // TRANS: Message given if an upload is larger than the configured maximum.
+ // TRANS: %1$d is the byte limit for uploads, %2$d is the byte count for the uploaded file.
+ return sprintf(_('No file may be larger than %1$d bytes ' .
+ 'and the file you sent was %2$d bytes. Try to upload a smaller version.'),
common_config('attachments', 'file_quota'), $fileSize);
}
@@ -192,6 +197,8 @@ class File extends Memcached_DataObject
$this->fetch();
$total = $this->total + $fileSize;
if ($total > common_config('attachments', 'user_quota')) {
+ // TRANS: Message given if an upload would exceed user quota.
+ // TRANS: %d (number) is the user quota in bytes.
return sprintf(_('A file this large would exceed your user quota of %d bytes.'), common_config('attachments', 'user_quota'));
}
$query .= ' AND EXTRACT(month FROM file.modified) = EXTRACT(month FROM now()) and EXTRACT(year FROM file.modified) = EXTRACT(year FROM now())';
@@ -199,6 +206,8 @@ class File extends Memcached_DataObject
$this->fetch();
$total = $this->total + $fileSize;
if ($total > common_config('attachments', 'monthly_quota')) {
+ // TRANS: Message given id an upload would exceed a user's monthly quota.
+ // TRANS: $d (number) is the monthly user quota in bytes.
return sprintf(_('A file this large would exceed your monthly quota of %d bytes.'), common_config('attachments', 'monthly_quota'));
}
return true;
@@ -235,7 +244,8 @@ class File extends Memcached_DataObject
static function path($filename)
{
if (!self::validFilename($filename)) {
- throw new ClientException("Invalid filename");
+ // TRANS: Client exception thrown if a file upload does not have a valid name.
+ throw new ClientException(_("Invalid filename."));
}
$dir = common_config('attachments', 'dir');
@@ -249,7 +259,8 @@ class File extends Memcached_DataObject
static function url($filename)
{
if (!self::validFilename($filename)) {
- throw new ClientException("Invalid filename");
+ // TRANS: Client exception thrown if a file upload does not have a valid name.
+ throw new ClientException(_("Invalid filename."));
}
if(common_config('site','private')) {
@@ -302,6 +313,7 @@ class File extends Memcached_DataObject
if(! isset($this->filename)){
$notEnclosureMimeTypes = array(null,'text/html','application/xhtml+xml');
+ $mimetype = $this->mimetype;
if($mimetype != null){
$mimetype = strtolower($this->mimetype);
}
@@ -341,4 +353,3 @@ class File extends Memcached_DataObject
return !empty($enclosure);
}
}
-
diff --git a/classes/Foreign_user.php b/classes/Foreign_user.php
index 0dd94ffb9..e98a16064 100644
--- a/classes/Foreign_user.php
+++ b/classes/Foreign_user.php
@@ -39,6 +39,22 @@ class Foreign_user extends Memcached_DataObject
return null;
}
+ static function getByNickname($nickname, $service)
+ {
+ if (empty($nickname) || empty($service)) {
+ return null;
+ } else {
+ $fuser = new Foreign_user();
+ $fuser->service = $service;
+ $fuser->nickname = $nickname;
+ $fuser->limit(1);
+
+ $result = $fuser->find(true);
+
+ return empty($result) ? null : $fuser;
+ }
+ }
+
function updateKeys(&$orig)
{
$this->_connect();
diff --git a/classes/Group_member.php b/classes/Group_member.php
index 7b1760f76..2239461be 100644
--- a/classes/Group_member.php
+++ b/classes/Group_member.php
@@ -38,6 +38,7 @@ class Group_member extends Memcached_DataObject
if (!$result) {
common_log_db_error($member, 'INSERT', __FILE__);
+ // TRANS: Exception thrown when joining a group fails.
throw new Exception(_("Group join failed."));
}
@@ -50,6 +51,7 @@ class Group_member extends Memcached_DataObject
'profile_id' => $profile_id));
if (empty($member)) {
+ // TRANS: Exception thrown when trying to leave a group the user is not a member of.
throw new Exception(_("Not part of group."));
}
@@ -57,6 +59,7 @@ class Group_member extends Memcached_DataObject
if (!$result) {
common_log_db_error($member, 'INSERT', __FILE__);
+ // TRANS: Exception thrown when trying to leave a group fails.
throw new Exception(_("Group leave failed."));
}
diff --git a/classes/Local_group.php b/classes/Local_group.php
index 42312ec63..ccd0125cf 100644
--- a/classes/Local_group.php
+++ b/classes/Local_group.php
@@ -38,6 +38,7 @@ class Local_group extends Memcached_DataObject
$this->encache();
} else {
common_log_db_error($local, 'UPDATE', __FILE__);
+ // TRANS: Server exception thrown when updating a local group fails.
throw new ServerException(_('Could not update local group.'));
}
diff --git a/classes/Login_token.php b/classes/Login_token.php
index 51dc61262..20d5d9dbc 100644
--- a/classes/Login_token.php
+++ b/classes/Login_token.php
@@ -73,6 +73,8 @@ class Login_token extends Memcached_DataObject
if (!$result) {
common_log_db_error($login_token, 'INSERT', __FILE__);
+ // TRANS: Exception thrown when trying creating a login token failed.
+ // TRANS: %s is the user nickname for which token creation failed.
throw new Exception(sprintf(_('Could not create login token for %s'),
$user->nickname));
}
diff --git a/classes/Memcached_DataObject.php b/classes/Memcached_DataObject.php
index 747c22ebb..0f1ed0489 100644
--- a/classes/Memcached_DataObject.php
+++ b/classes/Memcached_DataObject.php
@@ -235,6 +235,7 @@ class Memcached_DataObject extends Safe_DataObject
$pkey[] = $key;
$pval[] = self::valueString($this->$key);
} else {
+ // Low level exception. No need for i18n as discussed with Brion.
throw new Exception("Unknown key type $key => $type for " . $this->tableName());
}
}
@@ -282,6 +283,7 @@ class Memcached_DataObject extends Safe_DataObject
} else if ($type == 'fulltext') {
$search_engine = new MySQLSearch($this, $table);
} else {
+ // Low level exception. No need for i18n as discussed with Brion.
throw new ServerException('Unknown search type: ' . $type);
}
} else {
@@ -527,7 +529,8 @@ class Memcached_DataObject extends Safe_DataObject
}
if (!$dsn) {
- throw new Exception("No database name / dsn found anywhere");
+ // TRANS: Exception thrown when database name or Data Source Name could not be found.
+ throw new Exception(_("No database name or DSN found anywhere."));
}
return $dsn;
@@ -577,6 +580,7 @@ class Memcached_DataObject extends Safe_DataObject
if ($message instanceof PEAR_Error) {
$message = $message->getMessage();
}
+ // Low level exception. No need for i18n as discussed with Brion.
throw new ServerException("[$id] DB_DataObject error [$type]: $message");
}
@@ -593,7 +597,7 @@ class Memcached_DataObject extends Safe_DataObject
return $c->get($cacheKey);
}
- static function cacheSet($keyPart, $value)
+ static function cacheSet($keyPart, $value, $flag=null, $expiry=null)
{
$c = self::memcache();
@@ -603,7 +607,7 @@ class Memcached_DataObject extends Safe_DataObject
$cacheKey = common_cache_key($keyPart);
- return $c->set($cacheKey, $value);
+ return $c->set($cacheKey, $value, $flag, $expiry);
}
static function valueString($v)
@@ -619,9 +623,11 @@ class Memcached_DataObject extends Safe_DataObject
case 'sql':
case 'datetime':
case 'time':
+ // Low level exception. No need for i18n as discussed with Brion.
throw new ServerException("Unhandled DB_DataObject_Cast type passed as cacheKey value: '$v->type'");
break;
default:
+ // Low level exception. No need for i18n as discussed with Brion.
throw new ServerException("Unknown DB_DataObject_Cast type passed as cacheKey value: '$v->type'");
break;
}
diff --git a/classes/Message.php b/classes/Message.php
index 16d0c60b3..fa0c5b318 100644
--- a/classes/Message.php
+++ b/classes/Message.php
@@ -42,6 +42,7 @@ class Message extends Memcached_DataObject
$sender = Profile::staticGet('id', $from);
if (!$sender->hasRight(Right::NEWMESSAGE)) {
+ // TRANS: Client exception thrown when a user tries to send a direct message while being banned from sending them.
throw new ClientException(_('You are banned from sending direct messages.'));
}
@@ -58,6 +59,7 @@ class Message extends Memcached_DataObject
if (!$result) {
common_log_db_error($msg, 'INSERT', __FILE__);
+ // TRANS: Message given when a message could not be stored on the server.
return _('Could not insert message.');
}
@@ -68,6 +70,7 @@ class Message extends Memcached_DataObject
if (!$result) {
common_log_db_error($msg, 'UPDATE', __FILE__);
+ // TRANS: Message given when a message could not be updated on the server.
return _('Could not update message with new URI.');
}
diff --git a/classes/Notice.php b/classes/Notice.php
index 482bc550b..4646fc6ab 100644
--- a/classes/Notice.php
+++ b/classes/Notice.php
@@ -42,10 +42,10 @@ if (!defined('STATUSNET') && !defined('LACONICA')) {
*/
require_once INSTALLDIR.'/classes/Memcached_DataObject.php';
-/* We keep the first three 20-notice pages, plus one for pagination check,
+/* We keep 200 notices, the max number of notices available per API request,
* in the memcached cache. */
-define('NOTICE_CACHE_WINDOW', 61);
+define('NOTICE_CACHE_WINDOW', 200);
define('MAX_BOXCARS', 128);
@@ -90,7 +90,15 @@ class Notice extends Memcached_DataObject
function getProfile()
{
- return Profile::staticGet('id', $this->profile_id);
+ $profile = Profile::staticGet('id', $this->profile_id);
+
+ if (empty($profile)) {
+ // TRANS: Server exception thrown when a user profile for a notice cannot be found.
+ // TRANS: %1$d is a profile ID (number), %2$d is a notice ID (number).
+ throw new ServerException(sprintf(_('No such profile (%1$d) for notice (%2$d).'), $this->profile_id, $this->id));
+ }
+
+ return $profile;
}
function delete()
@@ -248,28 +256,34 @@ class Notice extends Memcached_DataObject
$final = common_shorten_links($content);
if (Notice::contentTooLong($final)) {
+ // TRANS: Client exception thrown if a notice contains too many characters.
throw new ClientException(_('Problem saving notice. Too long.'));
}
if (empty($profile)) {
+ // TRANS: Client exception thrown when trying to save a notice for an unknown user.
throw new ClientException(_('Problem saving notice. Unknown user.'));
}
if (common_config('throttle', 'enabled') && !Notice::checkEditThrottle($profile_id)) {
common_log(LOG_WARNING, 'Excessive posting by profile #' . $profile_id . '; throttled.');
+ // TRANS: Client exception thrown when a user tries to post too many notices in a given time frame.
throw new ClientException(_('Too many notices too fast; take a breather '.
'and post again in a few minutes.'));
}
if (common_config('site', 'dupelimit') > 0 && !Notice::checkDupes($profile_id, $final)) {
common_log(LOG_WARNING, 'Dupe posting by profile #' . $profile_id . '; throttled.');
+ // TRANS: Client exception thrown when a user tries to post too many duplicate notices in a given time frame.
throw new ClientException(_('Too many duplicate messages too quickly;'.
' take a breather and post again in a few minutes.'));
}
if (!$profile->hasRight(Right::NEWNOTICE)) {
common_log(LOG_WARNING, "Attempted post from user disallowed to post: " . $profile->nickname);
- throw new ClientException(_('You are banned from posting notices on this site.'));
+
+ // TRANS: Client exception thrown when a user tries to post while being banned.
+ throw new ClientException(_('You are banned from posting notices on this site.'), 403);
}
$notice = new Notice();
@@ -335,6 +349,7 @@ class Notice extends Memcached_DataObject
if (!$id) {
common_log_db_error($notice, 'INSERT', __FILE__);
+ // TRANS: Server exception thrown when a notice cannot be saved.
throw new ServerException(_('Problem saving notice.'));
}
@@ -361,6 +376,7 @@ class Notice extends Memcached_DataObject
if ($changed) {
if (!$notice->update($orig)) {
common_log_db_error($notice, 'UPDATE', __FILE__);
+ // TRANS: Server exception thrown when a notice cannot be updated.
throw new ServerException(_('Problem saving notice.'));
}
}
@@ -872,7 +888,8 @@ class Notice extends Memcached_DataObject
function saveKnownGroups($group_ids)
{
if (!is_array($group_ids)) {
- throw new ServerException("Bad type provided to saveKnownGroups");
+ // TRANS: Server exception thrown when no array is provided to the method saveKnownGroups().
+ throw new ServerException(_("Bad type provided to saveKnownGroups"));
}
$groups = array();
@@ -970,6 +987,7 @@ class Notice extends Memcached_DataObject
if (!$result) {
common_log_db_error($gi, 'INSERT', __FILE__);
+ // TRANS: Server exception thrown when an update for a group inbox fails.
throw new ServerException(_('Problem saving group inbox.'));
}
@@ -1075,7 +1093,9 @@ class Notice extends Memcached_DataObject
if (!$id) {
common_log_db_error($reply, 'INSERT', __FILE__);
- throw new ServerException("Couldn't save reply for {$this->id}, {$mentioned->id}");
+ // TRANS: Server exception thrown when a reply cannot be saved.
+ // TRANS: %1$d is a notice ID, %2$d is the ID of the mentioned user.
+ throw new ServerException(sprintf(_("Could not save reply for %1$d, %2$d."), $this->id, $mentioned->id));
} else {
$replied[$mentioned->id] = 1;
self::blow('reply:stream:%d', $mentioned->id);
@@ -1178,6 +1198,9 @@ class Notice extends Memcached_DataObject
return $groups;
}
+ // This has gotten way too long. Needs to be sliced up into functional bits
+ // or ideally exported to a utility class.
+
function asAtomEntry($namespace=false, $source=false, $author=true, $cur=null)
{
$profile = $this->getProfile();
@@ -1197,74 +1220,176 @@ class Notice extends Memcached_DataObject
$attrs = array();
}
- $xs->elementStart('entry', $attrs);
+ if (Event::handle('StartActivityStart', array(&$this, &$xs, &$attrs))) {
+ $xs->elementStart('entry', $attrs);
+ Event::handle('EndActivityStart', array(&$this, &$xs, &$attrs));
+ }
+
+ if (Event::handle('StartActivitySource', array(&$this, &$xs))) {
- if ($source) {
- $xs->elementStart('source');
- $xs->element('id', null, $profile->profileurl);
- $xs->element('title', null, $profile->nickname . " - " . common_config('site', 'name'));
- $xs->element('link', array('href' => $profile->profileurl));
- $user = User::staticGet('id', $profile->id);
- if (!empty($user)) {
- $atom_feed = common_local_url('ApiTimelineUser',
- array('format' => 'atom',
- 'id' => $profile->nickname));
- $xs->element('link', array('rel' => 'self',
- 'type' => 'application/atom+xml',
- 'href' => $profile->profileurl));
- $xs->element('link', array('rel' => 'license',
- 'href' => common_config('license', 'url')));
+ if ($source) {
+
+ $atom_feed = $profile->getAtomFeed();
+
+ if (!empty($atom_feed)) {
+
+ $xs->elementStart('source');
+
+ // XXX: we should store the actual feed ID
+
+ $xs->element('id', null, $atom_feed);
+
+ // XXX: we should store the actual feed title
+
+ $xs->element('title', null, $profile->getBestName());
+
+ $xs->element('link', array('rel' => 'alternate',
+ 'type' => 'text/html',
+ 'href' => $profile->profileurl));
+
+ $xs->element('link', array('rel' => 'self',
+ 'type' => 'application/atom+xml',
+ 'href' => $atom_feed));
+
+ $xs->element('icon', null, $profile->avatarUrl(AVATAR_PROFILE_SIZE));
+
+ $notice = $profile->getCurrentNotice();
+
+ if (!empty($notice)) {
+ $xs->element('updated', null, self::utcDate($notice->created));
+ }
+
+ $user = User::staticGet('id', $profile->id);
+
+ if (!empty($user)) {
+ $xs->element('link', array('rel' => 'license',
+ 'href' => common_config('license', 'url')));
+ }
+
+ $xs->elementEnd('source');
+ }
}
+ Event::handle('EndActivitySource', array(&$this, &$xs));
+ }
- $xs->element('icon', null, $profile->avatarUrl(AVATAR_PROFILE_SIZE));
- $xs->element('updated', null, common_date_w3dtf($this->created));
+ $title = common_xml_safe_str($this->content);
+
+ if (Event::handle('StartActivityTitle', array(&$this, &$xs, &$title))) {
+ $xs->element('title', null, $title);
+ Event::handle('EndActivityTitle', array($this, &$xs, $title));
}
- if ($source) {
- $xs->elementEnd('source');
+ $atomAuthor = '';
+
+ if ($author) {
+ $atomAuthor = $profile->asAtomAuthor($cur);
}
- $xs->element('title', null, common_xml_safe_str($this->content));
+ if (Event::handle('StartActivityAuthor', array(&$this, &$xs, &$atomAuthor))) {
+ if (!empty($atomAuthor)) {
+ $xs->raw($atomAuthor);
+ Event::handle('EndActivityAuthor', array(&$this, &$xs, &$atomAuthor));
+ }
+ }
+
+ $actor = '';
if ($author) {
- $xs->raw($profile->asAtomAuthor($cur));
- $xs->raw($profile->asActivityActor());
+ $actor = $profile->asActivityActor();
+ }
+
+ if (Event::handle('StartActivityActor', array(&$this, &$xs, &$actor))) {
+ if (!empty($actor)) {
+ $xs->raw($actor);
+ Event::handle('EndActivityActor', array(&$this, &$xs, &$actor));
+ }
}
- $xs->element('link', array('rel' => 'alternate',
- 'type' => 'text/html',
- 'href' => $this->bestUrl()));
+ $url = $this->bestUrl();
- $xs->element('id', null, $this->uri);
+ if (Event::handle('StartActivityLink', array(&$this, &$xs, &$url))) {
+ $xs->element('link', array('rel' => 'alternate',
+ 'type' => 'text/html',
+ 'href' => $url));
+ Event::handle('EndActivityLink', array(&$this, &$xs, $url));
+ }
- $xs->element('published', null, common_date_w3dtf($this->created));
- $xs->element('updated', null, common_date_w3dtf($this->created));
+ $id = $this->uri;
- $source = null;
+ if (Event::handle('StartActivityId', array(&$this, &$xs, &$id))) {
+ $xs->element('id', null, $id);
+ Event::handle('EndActivityId', array(&$this, &$xs, $id));
+ }
- $ns = $this->getSource();
+ $published = self::utcDate($this->created);
- if ($ns) {
- if (!empty($ns->name) && !empty($ns->url)) {
- $source = '<a href="'
- . htmlspecialchars($ns->url)
- . '" rel="nofollow">'
- . htmlspecialchars($ns->name)
- . '</a>';
- } else {
- $source = $ns->code;
+ if (Event::handle('StartActivityPublished', array(&$this, &$xs, &$published))) {
+ $xs->element('published', null, $published);
+ Event::handle('EndActivityPublished', array(&$this, &$xs, $published));
+ }
+
+ $updated = $published; // XXX: notices are usually immutable
+
+ if (Event::handle('StartActivityUpdated', array(&$this, &$xs, &$updated))) {
+ $xs->element('updated', null, $updated);
+ Event::handle('EndActivityUpdated', array(&$this, &$xs, $updated));
+ }
+
+ $content = common_xml_safe_str($this->rendered);
+
+ if (Event::handle('StartActivityContent', array(&$this, &$xs, &$content))) {
+ $xs->element('content', array('type' => 'html'), $content);
+ Event::handle('EndActivityContent', array(&$this, &$xs, $content));
+ }
+
+ // Most of our notices represent POSTing a NOTE. This is the default verb
+ // for activity streams, so we normally just leave it out.
+
+ $verb = ActivityVerb::POST;
+
+ if (Event::handle('StartActivityVerb', array(&$this, &$xs, &$verb))) {
+ $xs->element('activity:verb', null, $verb);
+ Event::handle('EndActivityVerb', array(&$this, &$xs, $verb));
+ }
+
+ // We use the default behavior for activity streams: if there's no activity:object,
+ // then treat the entry itself as the object. Here, you can set the type of that object,
+ // which is normally a NOTE.
+
+ $type = ActivityObject::NOTE;
+
+ if (Event::handle('StartActivityDefaultObjectType', array(&$this, &$xs, &$type))) {
+ $xs->element('activity:object-type', null, $type);
+ Event::handle('EndActivityDefaultObjectType', array(&$this, &$xs, $type));
+ }
+
+ // Since we usually use the entry itself as an object, we don't have an explicit
+ // object. Some extensions may want to add them (for photo, event, music, etc.).
+
+ $objects = array();
+
+ if (Event::handle('StartActivityObjects', array(&$this, &$xs, &$objects))) {
+ foreach ($objects as $object) {
+ $xs->raw($object->asString());
}
+ Event::handle('EndActivityObjects', array(&$this, &$xs, $objects));
}
- $noticeInfoAttr = array(
- 'local_id' => $this->id, // local notice ID (useful to clients for ordering)
- 'source' => $source, // the client name (source attribution)
- );
+ $noticeInfoAttr = array('local_id' => $this->id); // local notice ID (useful to clients for ordering)
$ns = $this->getSource();
- if ($ns) {
+
+ if (!empty($ns)) {
+ $noticeInfoAttr['source'] = $ns->code;
if (!empty($ns->url)) {
$noticeInfoAttr['source_link'] = $ns->url;
+ if (!empty($ns->name)) {
+ $noticeInfoAttr['source'] = '<a href="'
+ . htmlspecialchars($ns->url)
+ . '" rel="nofollow">'
+ . htmlspecialchars($ns->name)
+ . '</a>';
+ }
}
}
@@ -1278,103 +1403,143 @@ class Notice extends Memcached_DataObject
$noticeInfoAttr['repeat_of'] = $this->repeat_of;
}
- $xs->element('statusnet:notice_info', $noticeInfoAttr, null);
+ if (Event::handle('StartActivityNoticeInfo', array(&$this, &$xs, &$noticeInfoAttr))) {
+ $xs->element('statusnet:notice_info', $noticeInfoAttr, null);
+ Event::handle('EndActivityNoticeInfo', array(&$this, &$xs, $noticeInfoAttr));
+ }
+
+ $replyNotice = null;
if ($this->reply_to) {
- $reply_notice = Notice::staticGet('id', $this->reply_to);
- if (!empty($reply_notice)) {
+ $replyNotice = Notice::staticGet('id', $this->reply_to);
+ }
+
+ if (Event::handle('StartActivityInReplyTo', array(&$this, &$xs, &$replyNotice))) {
+ if (!empty($replyNotice)) {
$xs->element('link', array('rel' => 'related',
- 'href' => $reply_notice->bestUrl()));
+ 'href' => $replyNotice->bestUrl()));
$xs->element('thr:in-reply-to',
- array('ref' => $reply_notice->uri,
- 'href' => $reply_notice->bestUrl()));
+ array('ref' => $replyNotice->uri,
+ 'href' => $replyNotice->bestUrl()));
+ Event::handle('EndActivityInReplyTo', array(&$this, &$xs, $replyNotice));
}
}
- if (!empty($this->conversation)) {
+ $conv = null;
+ if (!empty($this->conversation)) {
$conv = Conversation::staticGet('id', $this->conversation);
+ }
+ if (Event::handle('StartActivityConversation', array(&$this, &$xs, &$conv))) {
if (!empty($conv)) {
- $xs->element(
- 'link', array(
- 'rel' => 'ostatus:conversation',
- 'href' => $conv->uri
- )
- );
+ $xs->element('link', array('rel' => 'ostatus:conversation',
+ 'href' => $conv->uri));
}
+ Event::handle('EndActivityConversation', array(&$this, &$xs, $conv));
}
+ $replyProfiles = array();
+
$reply_ids = $this->getReplies();
foreach ($reply_ids as $id) {
$profile = Profile::staticGet('id', $id);
- if (!empty($profile)) {
- $xs->element(
- 'link', array(
- 'rel' => 'ostatus:attention',
- 'href' => $profile->getUri()
- )
- );
+ if (!empty($profile)) {
+ $replyProfiles[] = $profile;
+ }
+ }
+
+ if (Event::handle('StartActivityAttentionProfiles', array(&$this, &$xs, &$replyProfiles))) {
+ foreach ($replyProfiles as $profile) {
+ $xs->element('link', array('rel' => 'ostatus:attention',
+ 'href' => $profile->getUri()));
+ $xs->element('link', array('rel' => 'mentioned',
+ 'href' => $profile->getUri()));
}
+ Event::handle('EndActivityAttentionProfiles', array(&$this, &$xs, $replyProfiles));
}
$groups = $this->getGroups();
- foreach ($groups as $group) {
- $xs->element(
- 'link', array(
- 'rel' => 'ostatus:attention',
- 'href' => $group->permalink()
- )
- );
+ if (Event::handle('StartActivityAttentionGroups', array(&$this, &$xs, &$groups))) {
+ foreach ($groups as $group) {
+ $xs->element('link', array('rel' => 'ostatus:attention',
+ 'href' => $group->permalink()));
+ $xs->element('link', array('rel' => 'mentioned',
+ 'href' => $group->permalink()));
+ }
+ Event::handle('EndActivityAttentionGroups', array(&$this, &$xs, $groups));
}
+ $repeat = null;
+
if (!empty($this->repeat_of)) {
$repeat = Notice::staticGet('id', $this->repeat_of);
+ }
+
+ if (Event::handle('StartActivityForward', array(&$this, &$xs, &$repeat))) {
if (!empty($repeat)) {
- $xs->element(
- 'ostatus:forward',
- array('ref' => $repeat->uri, 'href' => $repeat->bestUrl())
- );
+ $xs->element('ostatus:forward',
+ array('ref' => $repeat->uri,
+ 'href' => $repeat->bestUrl()));
}
+
+ Event::handle('EndActivityForward', array(&$this, &$xs, $repeat));
}
- $xs->element(
- 'content',
- array('type' => 'html'),
- common_xml_safe_str($this->rendered)
- );
+ $tags = $this->getTags();
- $tag = new Notice_tag();
- $tag->notice_id = $this->id;
- if ($tag->find()) {
- while ($tag->fetch()) {
- $xs->element('category', array('term' => $tag->tag));
+ if (Event::handle('StartActivityCategories', array(&$this, &$xs, &$tags))) {
+ foreach ($tags as $tag) {
+ $xs->element('category', array('term' => $tag));
}
+ Event::handle('EndActivityCategories', array(&$this, &$xs, $tags));
}
- $tag->free();
- # Enclosures
+ // Enclosures
+
+ $enclosures = array();
+
$attachments = $this->attachments();
- if($attachments){
- foreach($attachments as $attachment){
- $enclosure=$attachment->getEnclosure();
- if ($enclosure) {
- $attributes = array('rel'=>'enclosure','href'=>$enclosure->url,'type'=>$enclosure->mimetype,'length'=>$enclosure->size);
- if($enclosure->title){
- $attributes['title']=$enclosure->title;
- }
- $xs->element('link', $attributes, null);
+
+ foreach ($attachments as $attachment) {
+ $enclosure = $attachment->getEnclosure();
+ if ($enclosure) {
+ $enclosures[] = $enclosure;
+ }
+ }
+
+ if (Event::handle('StartActivityEnclosures', array(&$this, &$xs, &$enclosures))) {
+ foreach ($enclosures as $enclosure) {
+ $attributes = array('rel' => 'enclosure',
+ 'href' => $enclosure->url,
+ 'type' => $enclosure->mimetype,
+ 'length' => $enclosure->size);
+
+ if ($enclosure->title) {
+ $attributes['title'] = $enclosure->title;
}
+
+ $xs->element('link', $attributes, null);
}
+ Event::handle('EndActivityEnclosures', array(&$this, &$xs, $enclosures));
}
- if (!empty($this->lat) && !empty($this->lon)) {
- $xs->element('georss:point', null, $this->lat . ' ' . $this->lon);
+ $lat = $this->lat;
+ $lon = $this->lon;
+
+ if (Event::handle('StartActivityGeo', array(&$this, &$xs, &$lat, &$lon))) {
+ if (!empty($lat) && !empty($lon)) {
+ $xs->element('georss:point', null, $lat . ' ' . $lon);
+ }
+ Event::handle('EndActivityGeo', array(&$this, &$xs, $lat, $lon));
}
- $xs->elementEnd('entry');
+ if (Event::handle('StartActivityEnd', array(&$this, &$xs))) {
+ $xs->elementEnd('entry');
+ Event::handle('EndActivityEnd', array(&$this, &$xs));
+ }
return $xs->getString();
}
@@ -1895,4 +2060,24 @@ class Notice extends Memcached_DataObject
$this->is_local == Notice::LOCAL_NONPUBLIC);
}
+ public function getTags()
+ {
+ $tags = array();
+ $tag = new Notice_tag();
+ $tag->notice_id = $this->id;
+ if ($tag->find()) {
+ while ($tag->fetch()) {
+ $tags[] = $tag->tag;
+ }
+ }
+ $tag->free();
+ return $tags;
+ }
+
+ static private function utcDate($dt)
+ {
+ $dateStr = date('d F Y H:i:s', strtotime($dt));
+ $d = new DateTime($dateStr, new DateTimeZone('UTC'));
+ return $d->format(DATE_W3C);
+ }
}
diff --git a/classes/Profile.php b/classes/Profile.php
index a303469e9..0d0463b73 100644
--- a/classes/Profile.php
+++ b/classes/Profile.php
@@ -152,17 +152,16 @@ class Profile extends Memcached_DataObject
*
* @return mixed Notice or null
*/
+
function getCurrentNotice()
{
- $notice = new Notice();
- $notice->profile_id = $this->id;
- // @fixme change this to sort on notice.id only when indexes are updated
- $notice->orderBy('created DESC, notice.id DESC');
- $notice->limit(1);
- if ($notice->find(true)) {
+ $notice = $this->getNotices(0, 1);
+
+ if ($notice->fetch()) {
return $notice;
+ } else {
+ return null;
}
- return null;
}
function getTaggedNotices($tag, $offset=0, $limit=NOTICES_PER_PAGE, $since_id=0, $max_id=0)
@@ -735,14 +734,18 @@ class Profile extends Memcached_DataObject
'role' => $name));
if (empty($role)) {
- throw new Exception('Cannot revoke role "'.$name.'" for user #'.$this->id.'; does not exist.');
+ // TRANS: Exception thrown when trying to revoke an existing role for a user that does not exist.
+ // TRANS: %1$s is the role name, %2$s is the user ID (number).
+ throw new Exception(sprintf(_('Cannot revoke role "%1$s" for user #%2$d; does not exist.'),$name, $this->id));
}
$result = $role->delete();
if (!$result) {
common_log_db_error($role, 'DELETE', __FILE__);
- throw new Exception('Cannot revoke role "'.$name.'" for user #'.$this->id.'; database error.');
+ // TRANS: Exception thrown when trying to revoke a role for a user with a failing database query.
+ // TRANS: %1$s is the role name, %2$s is the user ID (number).
+ throw new Exception(sprintf(_('Cannot revoke role "%1$s" for user #%2$d; database error.'),$name, $this->id));
}
return true;
@@ -943,4 +946,20 @@ class Profile extends Memcached_DataObject
return $result;
}
+
+ function getAtomFeed()
+ {
+ $feed = null;
+
+ if (Event::handle('StartProfileGetAtomFeed', array($this, &$feed))) {
+ $user = User::staticGet('id', $this->id);
+ if (!empty($user)) {
+ $feed = common_local_url('ApiTimelineUser', array('id' => $user->id,
+ 'format' => 'atom'));
+ }
+ Event::handle('EndProfileGetAtomFeed', array($this, $feed));
+ }
+
+ return $feed;
+ }
}
diff --git a/classes/Remote_profile.php b/classes/Remote_profile.php
index 0a1676a6a..77bfbcd99 100644
--- a/classes/Remote_profile.php
+++ b/classes/Remote_profile.php
@@ -50,7 +50,8 @@ class Remote_profile extends Memcached_DataObject
if ($profile) {
return $profile->hasright($right);
} else {
- throw new Exception("Missing profile");
+ // TRANS: Exception thrown when a right for a non-existing user profile is checked.
+ throw new Exception(_("Missing profile."));
}
}
}
diff --git a/classes/Safe_DataObject.php b/classes/Safe_DataObject.php
index e926cb0d5..f0ea6b136 100644
--- a/classes/Safe_DataObject.php
+++ b/classes/Safe_DataObject.php
@@ -116,6 +116,7 @@ class Safe_DataObject extends DB_DataObject
if ($this->_call($method, $params, $return)) {
return $return;
} else {
+ // Low level exception. No need for i18n as discussed with Brion.
throw new Exception('Call to undefined method ' .
get_class($this) . '::' . $method);
}
@@ -125,7 +126,7 @@ class Safe_DataObject extends DB_DataObject
* Work around memory-leak bugs...
* Had to copy-paste the whole function in order to patch a couple lines of it.
* Would be nice if this code was better factored.
- *
+ *
* @param optional string name of database to assign / read
* @param optional array structure of database, and keys
* @param optional array table links
@@ -136,108 +137,103 @@ class Safe_DataObject extends DB_DataObject
*/
function databaseStructure()
{
-
global $_DB_DATAOBJECT;
-
- // Assignment code
-
+
+ // Assignment code
+
if ($args = func_get_args()) {
-
+
if (count($args) == 1) {
-
+
// this returns all the tables and their structure..
if (!empty($_DB_DATAOBJECT['CONFIG']['debug'])) {
$this->debug("Loading Generator as databaseStructure called with args",1);
}
-
+
$x = new DB_DataObject;
$x->_database = $args[0];
$this->_connect();
$DB = &$_DB_DATAOBJECT['CONNECTIONS'][$this->_database_dsn_md5];
-
+
$tables = $DB->getListOf('tables');
- class_exists('DB_DataObject_Generator') ? '' :
+ class_exists('DB_DataObject_Generator') ? '' :
require_once 'DB/DataObject/Generator.php';
-
+
foreach($tables as $table) {
$y = new DB_DataObject_Generator;
$y->fillTableSchema($x->_database,$table);
}
- return $_DB_DATAOBJECT['INI'][$x->_database];
+ return $_DB_DATAOBJECT['INI'][$x->_database];
} else {
-
+
$_DB_DATAOBJECT['INI'][$args[0]] = isset($_DB_DATAOBJECT['INI'][$args[0]]) ?
$_DB_DATAOBJECT['INI'][$args[0]] + $args[1] : $args[1];
-
+
if (isset($args[1])) {
$_DB_DATAOBJECT['LINKS'][$args[0]] = isset($_DB_DATAOBJECT['LINKS'][$args[0]]) ?
$_DB_DATAOBJECT['LINKS'][$args[0]] + $args[2] : $args[2];
}
return true;
}
-
+
}
-
-
-
+
if (!$this->_database) {
$this->_connect();
}
-
+
// loaded already?
if (!empty($_DB_DATAOBJECT['INI'][$this->_database])) {
-
+
// database loaded - but this is table is not available..
if (
- empty($_DB_DATAOBJECT['INI'][$this->_database][$this->__table])
+ empty($_DB_DATAOBJECT['INI'][$this->_database][$this->__table])
&& !empty($_DB_DATAOBJECT['CONFIG']['proxy'])
) {
if (!empty($_DB_DATAOBJECT['CONFIG']['debug'])) {
$this->debug("Loading Generator to fetch Schema",1);
}
- class_exists('DB_DataObject_Generator') ? '' :
+ class_exists('DB_DataObject_Generator') ? '' :
require_once 'DB/DataObject/Generator.php';
-
-
+
+
$x = new DB_DataObject_Generator;
$x->fillTableSchema($this->_database,$this->__table);
}
return true;
}
-
-
+
if (empty($_DB_DATAOBJECT['CONFIG'])) {
DB_DataObject::_loadConfig();
}
-
+
// if you supply this with arguments, then it will take those
// as the database and links array...
-
+
$schemas = isset($_DB_DATAOBJECT['CONFIG']['schema_location']) ?
array("{$_DB_DATAOBJECT['CONFIG']['schema_location']}/{$this->_database}.ini") :
array() ;
-
+
if (isset($_DB_DATAOBJECT['CONFIG']["ini_{$this->_database}"])) {
$schemas = is_array($_DB_DATAOBJECT['CONFIG']["ini_{$this->_database}"]) ?
$_DB_DATAOBJECT['CONFIG']["ini_{$this->_database}"] :
explode(PATH_SEPARATOR,$_DB_DATAOBJECT['CONFIG']["ini_{$this->_database}"]);
}
-
-
+
/* BEGIN CHANGED FROM UPSTREAM */
$_DB_DATAOBJECT['INI'][$this->_database] = $this->parseIniFiles($schemas);
/* END CHANGED FROM UPSTREAM */
- // now have we loaded the structure..
-
+ // now have we loaded the structure..
+
if (!empty($_DB_DATAOBJECT['INI'][$this->_database][$this->__table])) {
return true;
}
// - if not try building it..
if (!empty($_DB_DATAOBJECT['CONFIG']['proxy'])) {
- class_exists('DB_DataObject_Generator') ? '' :
+ class_exists('DB_DataObject_Generator') ? '' :
require_once 'DB/DataObject/Generator.php';
-
+
$x = new DB_DataObject_Generator;
$x->fillTableSchema($this->_database,$this->__table);
// should this fail!!!???
@@ -245,7 +241,8 @@ class Safe_DataObject extends DB_DataObject
}
$this->debug("Cant find database schema: {$this->_database}/{$this->__table} \n".
"in links file data: " . print_r($_DB_DATAOBJECT['INI'],true),"databaseStructure",5);
- // we have to die here!! - it causes chaos if we dont (including looping forever!)
+ // we have to die here!! - it causes chaos if we don't (including looping forever!)
+ // Low level exception. No need for i18n as discussed with Brion.
$this->raiseError( "Unable to load schema for database and table (turn debugging up to 5 for full error message)", DB_DATAOBJECT_ERROR_INVALIDARGS, PEAR_ERROR_DIE);
return false;
}
@@ -271,7 +268,7 @@ class Safe_DataObject extends DB_DataObject
if (file_exists($ini) && is_file($ini)) {
$data = array_merge($data, parse_ini_file($ini, true));
- if (!empty($_DB_DATAOBJECT['CONFIG']['debug'])) {
+ if (!empty($_DB_DATAOBJECT['CONFIG']['debug'])) {
if (!is_readable ($ini)) {
$this->debug("ini file is not readable: $ini","databaseStructure",1);
} else {
diff --git a/classes/Status_network.php b/classes/Status_network.php
index 64016dd79..5680c1458 100644
--- a/classes/Status_network.php
+++ b/classes/Status_network.php
@@ -27,7 +27,8 @@ class Status_network extends Safe_DataObject
/* the code below is auto generated do not remove the above tag */
public $__table = 'status_network'; // table name
- public $nickname; // varchar(64) primary_key not_null
+ public $site_id; // int(4) primary_key not_null
+ public $nickname; // varchar(64) unique_key not_null
public $hostname; // varchar(255) unique_key
public $pathname; // varchar(255) unique_key
public $dbhost; // varchar(255)
@@ -39,7 +40,6 @@ class Status_network extends Safe_DataObject
public $logo; // varchar(255)
public $created; // datetime() not_null
public $modified; // timestamp() not_null default_CURRENT_TIMESTAMP
- public $tags; // text
/* Static get */
function staticGet($k,$v=NULL) {
@@ -308,10 +308,64 @@ class Status_network extends Safe_DataObject
*/
function getTags()
{
- return array_filter(explode("|", strval($this->tags)));
+ $result = array();
+
+ $tags = new Status_network_tag();
+ $tags->site_id = $this->site_id;
+ if ($tags->find()) {
+ while ($tags->fetch()) {
+ $result[] = $tags->tag;
+ }
+ }
+
+ // XXX : for backwards compatibility
+ if (empty($result)) {
+ return explode('|', $this->tags);
+ }
+
+ return $result;
}
/**
+ * Save a given set of tags
+ * @param array tags
+ */
+ function setTags($tags)
+ {
+ $this->clearTags();
+ foreach ($tags as $tag) {
+ if (!empty($tag)) {
+ $snt = new Status_network_tag();
+ $snt->site_id = $this->site_id;
+ $snt->tag = $tag;
+ $snt->created = common_sql_now();
+
+ $id = $snt->insert();
+ if (!$id) {
+ // TRANS: Exception thrown when a tag cannot be saved.
+ throw new Exception(_("Unable to save tag."));
+ }
+ }
+ }
+
+ return true;
+ }
+
+ function clearTags()
+ {
+ $tag = new Status_network_tag();
+ $tag->site_id = $this->site_id;
+
+ if ($tag->find()) {
+ while($tag->fetch()) {
+ $tag->delete();
+ }
+ }
+
+ $tag->free();
+ }
+
+ /**
* Check if this site record has a particular meta-info tag attached.
* @param string $tag
* @return bool
diff --git a/classes/Status_network_tag.php b/classes/Status_network_tag.php
new file mode 100644
index 000000000..18c508bc8
--- /dev/null
+++ b/classes/Status_network_tag.php
@@ -0,0 +1,69 @@
+<?php
+/*
+ * StatusNet - the distributed open-source microblogging tool
+ * Copyright (C) 2008, 2009, 2010 StatusNet, Inc.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+if (!defined('STATUSNET')) { exit(1); }
+
+class Status_network_tag extends Safe_DataObject
+{
+ ###START_AUTOCODE
+ /* the code below is auto generated do not remove the above tag */
+
+ public $__table = 'status_network_tag'; // table name
+ public $site_id; // int(4) primary_key not_null
+ public $tag; // varchar(64) primary_key not_null
+ public $created; // datetime() not_null
+
+
+ function __construct()
+ {
+ global $config;
+ global $_DB_DATAOBJECT;
+
+ $sn = new Status_network();
+ $sn->_connect();
+
+ $config['db']['table_'. $this->__table] = $sn->_database;
+
+ $this->_connect();
+ }
+
+
+ /* Static get */
+ function staticGet($k,$v=null)
+ {
+ $i = DB_DataObject::staticGet('Status_network_tag',$k,$v);
+
+ // Don't use local process cache; if we're fetching multiple
+ // times it's because we're reloading it in a long-running
+ // process; we need a fresh copy!
+ global $_DB_DATAOBJECT;
+ unset($_DB_DATAOBJECT['CACHE']['status_network_tag']);
+ return $i;
+ }
+
+ /* the code above is auto generated do not remove the tag below */
+ ###END_AUTOCODE
+
+
+
+ function pkeyGet($kv)
+ {
+ return Memcached_DataObject::pkeyGet('Status_network_tag', $kv);
+ }
+}
diff --git a/classes/Subscription.php b/classes/Subscription.php
index 0679c0925..0225ed4df 100644
--- a/classes/Subscription.php
+++ b/classes/Subscription.php
@@ -71,14 +71,17 @@ class Subscription extends Memcached_DataObject
}
if (!$subscriber->hasRight(Right::SUBSCRIBE)) {
+ // TRANS: Exception thrown when trying to subscribe while being banned from subscribing.
throw new Exception(_('You have been banned from subscribing.'));
}
if (self::exists($subscriber, $other)) {
+ // TRANS: Exception thrown when trying to subscribe while already subscribed.
throw new Exception(_('Already subscribed!'));
}
if ($other->hasBlocked($subscriber)) {
+ // TRANS: Exception thrown when trying to subscribe to a user who has blocked the subscribing user.
throw new Exception(_('User has blocked you.'));
}
@@ -129,6 +132,7 @@ class Subscription extends Memcached_DataObject
if (!$result) {
common_log_db_error($sub, 'INSERT', __FILE__);
+ // TRANS: Exception thrown when a subscription could not be stored on the server.
throw new Exception(_('Could not save subscription.'));
}
@@ -160,17 +164,18 @@ class Subscription extends Memcached_DataObject
* Cancel a subscription
*
*/
-
function cancel($subscriber, $other)
{
if (!self::exists($subscriber, $other)) {
+ // TRANS: Exception thrown when trying to unsibscribe without a subscription.
throw new Exception(_('Not subscribed!'));
}
// Don't allow deleting self subs
if ($subscriber->id == $other->id) {
- throw new Exception(_('Couldn\'t delete self-subscription.'));
+ // TRANS: Exception thrown when trying to unsubscribe a user from themselves.
+ throw new Exception(_('Could not delete self-subscription.'));
}
if (Event::handle('StartUnsubscribe', array($subscriber, $other))) {
@@ -197,7 +202,8 @@ class Subscription extends Memcached_DataObject
if (!$result) {
common_log_db_error($token, 'DELETE', __FILE__);
- throw new Exception(_('Couldn\'t delete subscription OMB token.'));
+ // TRANS: Exception thrown when the OMB token for a subscription could not deleted on the server.
+ throw new Exception(_('Could not delete subscription OMB token.'));
}
} else {
common_log(LOG_ERR, "Couldn't find credentials with token {$token->tok}");
@@ -208,7 +214,8 @@ class Subscription extends Memcached_DataObject
if (!$result) {
common_log_db_error($sub, 'DELETE', __FILE__);
- throw new Exception(_('Couldn\'t delete subscription.'));
+ // TRANS: Exception thrown when a subscription could not be deleted on the server.
+ throw new Exception(_('Could not delete subscription.'));
}
self::blow('user:notices_with_friends:%d', $subscriber->id);
diff --git a/classes/User.php b/classes/User.php
index 314b80531..70e09c1dc 100644
--- a/classes/User.php
+++ b/classes/User.php
@@ -355,11 +355,12 @@ class User extends Memcached_DataObject
__FILE__);
} else {
$notice = Notice::saveNew($welcomeuser->id,
+ // TRANS: Notice given on user registration.
+ // TRANS: %1$s is the sitename, $2$s is the registering user's nickname.
sprintf(_('Welcome to %1$s, @%2$s!'),
common_config('site', 'name'),
$user->nickname),
'system');
-
}
}
@@ -370,7 +371,6 @@ class User extends Memcached_DataObject
}
// Things we do when the email changes
-
function emailChanged()
{
@@ -519,7 +519,7 @@ class User extends Memcached_DataObject
if ($this->id == $other->id) {
common_log(LOG_WARNING,
sprintf(
- "Profile ID %d (%s) tried to block his or herself.",
+ "Profile ID %d (%s) tried to block themself.",
$this->id,
$this->nickname
)
diff --git a/classes/User_group.php b/classes/User_group.php
index e04c46626..0b83cfd47 100644
--- a/classes/User_group.php
+++ b/classes/User_group.php
@@ -492,6 +492,7 @@ class User_group extends Memcached_DataObject
if (!$result) {
common_log_db_error($group, 'INSERT', __FILE__);
+ // TRANS: Server exception thrown when creating a group failed.
throw new ServerException(_('Could not create group.'));
}
@@ -501,6 +502,7 @@ class User_group extends Memcached_DataObject
$result = $group->update($orig);
if (!$result) {
common_log_db_error($group, 'UPDATE', __FILE__);
+ // TRANS: Server exception thrown when updating a group URI failed.
throw new ServerException(_('Could not set group URI.'));
}
}
@@ -508,6 +510,7 @@ class User_group extends Memcached_DataObject
$result = $group->setAliases($aliases);
if (!$result) {
+ // TRANS: Server exception thrown when creating group aliases failed.
throw new ServerException(_('Could not create aliases.'));
}
@@ -522,6 +525,7 @@ class User_group extends Memcached_DataObject
if (!$result) {
common_log_db_error($member, 'INSERT', __FILE__);
+ // TRANS: Server exception thrown when setting group membership failed.
throw new ServerException(_('Could not set group membership.'));
}
@@ -536,6 +540,7 @@ class User_group extends Memcached_DataObject
if (!$result) {
common_log_db_error($local_group, 'INSERT', __FILE__);
+ // TRANS: Server exception thrown when saving local group information failed.
throw new ServerException(_('Could not save local group info.'));
}
}
diff --git a/classes/status_network.ini b/classes/status_network.ini
index adb71cba7..b298daae4 100644
--- a/classes/status_network.ini
+++ b/classes/status_network.ini
@@ -1,4 +1,5 @@
[status_network]
+site_id = 129
nickname = 130
hostname = 2
pathname = 2
@@ -11,9 +12,19 @@ theme = 2
logo = 2
created = 142
modified = 384
-tags = 34
[status_network__keys]
-nickname = K
+site_id = K
+nickname = U
hostname = U
pathname = U
+
+[status_network_tag]
+site_id = 129
+tag = 130
+created = 142
+
+[status_network_tag__keys]
+site_id = K
+tag = K
+
diff --git a/db/notice_source.sql b/db/notice_source.sql
index f5db37f04..6bfd5c5f1 100644
--- a/db/notice_source.sql
+++ b/db/notice_source.sql
@@ -51,6 +51,7 @@ VALUES
('smob','SMOB','http://smob.sioc-project.org/', now()),
('socialoomphBfD4pMqz31', 'SocialOomph', 'http://www.socialoomph.com/', now()),
('spaz','Spaz','http://funkatron.com/spaz', now()),
+ ('StatusNet Desktop', 'StatusNet Desktop', 'http://status.net/desktop', now()),
('tarpipe','tarpipe','http://tarpipe.com/', now()),
('tjunar','Tjunar','http://nederflash.nl/boek/titels/tjunar-air', now()),
('tr.im','tr.im','http://tr.im/', now()),
diff --git a/db/site.sql b/db/site.sql
index 791303bd5..f87995b94 100644
--- a/db/site.sql
+++ b/db/site.sql
@@ -1,8 +1,9 @@
/* For managing multiple sites */
create table status_network (
-
- nickname varchar(64) primary key comment 'nickname',
+
+ site_id integer auto_increment primary key comment 'unique id',
+ nickname varchar(64) unique key comment 'nickname',
hostname varchar(255) unique key comment 'alternate hostname if any',
pathname varchar(255) unique key comment 'alternate pathname if any',
@@ -21,3 +22,12 @@ create table status_network (
modified timestamp comment 'date this record was modified'
) ENGINE=InnoDB CHARACTER SET utf8 COLLATE utf8_general_ci;
+
+create table status_network_tag (
+ site_id integer comment 'unique id',
+ tag varchar(64) comment 'tag name',
+ created datetime not null comment 'date the record was created',
+
+ constraint primary key (site_id, tag)
+) ENGINE=InnoDB CHARACTER SET utf8 COLLATE utf8_general_ci;
+
diff --git a/db/site_093to094.sql b/db/site_093to094.sql
new file mode 100644
index 000000000..30cea31df
--- /dev/null
+++ b/db/site_093to094.sql
@@ -0,0 +1,13 @@
+alter table status_network
+ drop primary key,
+ add column site_id integer auto_increment primary key first,
+ add unique key (nickname);
+
+create table status_network_tag (
+ site_id integer comment 'unique id',
+ tag varchar(64) comment 'tag name',
+ created datetime not null comment 'date the record was created',
+
+ constraint primary key (site_id, tag)
+) ENGINE=InnoDB CHARACTER SET utf8 COLLATE utf8_general_ci;
+
diff --git a/extlib/Auth/OpenID.php b/extlib/Auth/OpenID.php
index db6164256..c9d977962 100644
--- a/extlib/Auth/OpenID.php
+++ b/extlib/Auth/OpenID.php
@@ -20,7 +20,7 @@
/**
* The library version string
*/
-define('Auth_OpenID_VERSION', '2.1.3');
+define('Auth_OpenID_VERSION', '2.2.2');
/**
* Require the fetcher code.
@@ -102,9 +102,7 @@ define('Auth_OpenID_digits',
define('Auth_OpenID_punct',
"!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~");
-if (Auth_OpenID_getMathLib() === null) {
- Auth_OpenID_setNoMathSupport();
-}
+Auth_OpenID_include_init();
/**
* The OpenID utility function class.
@@ -120,7 +118,7 @@ class Auth_OpenID {
*
* @access private
*/
- function isFailure($thing)
+ static function isFailure($thing)
{
return is_a($thing, 'Auth_OpenID_FailureResponse');
}
@@ -139,9 +137,12 @@ class Auth_OpenID {
* Returns an empty array if neither GET nor POST was used, or if
* POST was used but php://input cannot be opened.
*
+ * See background:
+ * http://lists.openidenabled.com/pipermail/dev/2007-March/000395.html
+ *
* @access private
*/
- function getQuery($query_str=null)
+ static function getQuery($query_str=null)
{
$data = array();
@@ -177,7 +178,7 @@ class Auth_OpenID {
return $data;
}
- function params_from_string($str)
+ static function params_from_string($str)
{
$chunks = explode("&", $str);
@@ -190,7 +191,7 @@ class Auth_OpenID {
}
list($k, $v) = $parts;
- $data[$k] = urldecode($v);
+ $data[urldecode($k)] = urldecode($v);
}
return $data;
@@ -203,7 +204,7 @@ class Auth_OpenID {
*
* @access private
*/
- function ensureDir($dir_name)
+ static function ensureDir($dir_name)
{
if (is_dir($dir_name) || @mkdir($dir_name)) {
return true;
@@ -225,7 +226,7 @@ class Auth_OpenID {
*
* @access private
*/
- function addPrefix($values, $prefix)
+ static function addPrefix($values, $prefix)
{
$new_values = array();
foreach ($values as $s) {
@@ -241,7 +242,7 @@ class Auth_OpenID {
*
* @access private
*/
- function arrayGet($arr, $key, $fallback = null)
+ static function arrayGet($arr, $key, $fallback = null)
{
if (is_array($arr)) {
if (array_key_exists($key, $arr)) {
@@ -261,7 +262,7 @@ class Auth_OpenID {
/**
* Replacement for PHP's broken parse_str.
*/
- function parse_str($query)
+ static function parse_str($query)
{
if ($query === null) {
return null;
@@ -278,7 +279,7 @@ class Auth_OpenID {
}
list($key, $value) = $pair;
- $new_parts[$key] = urldecode($value);
+ $new_parts[urldecode($key)] = urldecode($value);
}
return $new_parts;
@@ -295,7 +296,7 @@ class Auth_OpenID {
* pairs from $data into a URL query string
* (e.g. "username=bob&id=56").
*/
- function httpBuildQuery($data)
+ static function httpBuildQuery($data)
{
$pairs = array();
foreach ($data as $key => $value) {
@@ -323,7 +324,7 @@ class Auth_OpenID {
* @return string $url The original URL with the new parameters added.
*
*/
- function appendArgs($url, $args)
+ static function appendArgs($url, $args)
{
if (count($args) == 0) {
return $url;
@@ -367,7 +368,7 @@ class Auth_OpenID {
* @return string $url The URL resulting from assembling the
* specified components.
*/
- function urlunparse($scheme, $host, $port = null, $path = '/',
+ static function urlunparse($scheme, $host, $port = null, $path = '/',
$query = '', $fragment = '')
{
@@ -412,7 +413,7 @@ class Auth_OpenID {
* @return mixed $new_url The URL after normalization, or null if
* $url was malformed.
*/
- function normalizeUrl($url)
+ static function normalizeUrl($url)
{
@$parsed = parse_url($url);
@@ -443,7 +444,7 @@ class Auth_OpenID {
*
* @access private
*/
- function intval($value)
+ static function intval($value)
{
$re = "/^\\d+$/";
@@ -461,7 +462,7 @@ class Auth_OpenID {
* @param string $str The string of bytes to count.
* @return int The number of bytes in $str.
*/
- function bytes($str)
+ static function bytes($str)
{
return strlen(bin2hex($str)) / 2;
}
@@ -470,7 +471,7 @@ class Auth_OpenID {
* Get the bytes in a string independently of multibyte support
* conditions.
*/
- function toBytes($str)
+ static function toBytes($str)
{
$hex = bin2hex($str);
@@ -486,7 +487,7 @@ class Auth_OpenID {
return $b;
}
- function urldefrag($url)
+ static function urldefrag($url)
{
$parts = explode("#", $url, 2);
@@ -497,7 +498,7 @@ class Auth_OpenID {
}
}
- function filter($callback, &$sequence)
+ static function filter($callback, &$sequence)
{
$result = array();
@@ -510,7 +511,7 @@ class Auth_OpenID {
return $result;
}
- function update(&$dest, &$src)
+ static function update(&$dest, &$src)
{
foreach ($src as $k => $v) {
$dest[$k] = $v;
@@ -524,14 +525,14 @@ class Auth_OpenID {
*
* @param string $format_string The sprintf format for the message
*/
- function log($format_string)
+ static function log($format_string)
{
$args = func_get_args();
$message = call_user_func_array('sprintf', $args);
error_log($message);
}
- function autoSubmitHTML($form, $title="OpenId transaction in progress")
+ static function autoSubmitHTML($form, $title="OpenId transaction in progress")
{
return("<html>".
"<head><title>".
@@ -549,4 +550,14 @@ class Auth_OpenID {
"</html>");
}
}
-?>
+
+/*
+ * Function to run when this file is included.
+ * Abstracted to a function to make life easier
+ * for some PHP optimizers.
+ */
+function Auth_OpenID_include_init() {
+ if (Auth_OpenID_getMathLib() === null) {
+ Auth_OpenID_setNoMathSupport();
+ }
+}
diff --git a/extlib/Auth/OpenID/AX.php b/extlib/Auth/OpenID/AX.php
index 4a617ae30..7370715e3 100644
--- a/extlib/Auth/OpenID/AX.php
+++ b/extlib/Auth/OpenID/AX.php
@@ -38,7 +38,7 @@ class Auth_OpenID_AX {
* @return bool true if $thing is an Auth_OpenID_AX_Error; false
* if not.
*/
- function isError($thing)
+ static function isError($thing)
{
return is_a($thing, 'Auth_OpenID_AX_Error');
}
@@ -191,7 +191,7 @@ class Auth_OpenID_AX_AttrInfo {
* Construct an attribute information object. For parameter
* details, see the constructor.
*/
- function make($type_uri, $count=1, $required=false,
+ static function make($type_uri, $count=1, $required=false,
$alias=null)
{
if ($alias !== null) {
@@ -235,7 +235,7 @@ class Auth_OpenID_AX_AttrInfo {
* return null If an alias is present in the list of aliases but
* is not present in the namespace map.
*/
-function Auth_OpenID_AX_toTypeURIs(&$namespace_map, $alias_list_s)
+function Auth_OpenID_AX_toTypeURIs($namespace_map, $alias_list_s)
{
$uris = array();
@@ -386,7 +386,7 @@ class Auth_OpenID_AX_FetchRequest extends Auth_OpenID_AX_Message {
* Auth_OpenID_AX_FetchRequest extracted from the request message if
* successful
*/
- function &fromOpenIDRequest($request)
+ static function fromOpenIDRequest($request)
{
$m = $request->message;
$obj = new Auth_OpenID_AX_FetchRequest();
@@ -484,7 +484,7 @@ class Auth_OpenID_AX_FetchRequest extends Auth_OpenID_AX_Message {
Auth_OpenID::arrayGet($ax_args, 'required'));
foreach ($required as $type_uri) {
- $attrib =& $this->requested_attributes[$type_uri];
+ $attrib = $this->requested_attributes[$type_uri];
$attrib->required = true;
}
@@ -587,7 +587,7 @@ class Auth_OpenID_AX_KeyValueMessage extends Auth_OpenID_AX_Message {
*
* @access private
*/
- function _getExtensionKVArgs(&$aliases)
+ function _getExtensionKVArgs($aliases)
{
if ($aliases === null) {
$aliases = new Auth_OpenID_NamespaceMap();
@@ -652,7 +652,7 @@ class Auth_OpenID_AX_KeyValueMessage extends Auth_OpenID_AX_Message {
foreach ($aliases->iteritems() as $pair) {
list($type_uri, $alias) = $pair;
- if (array_key_exists('count.' . $alias, $ax_args)) {
+ if (array_key_exists('count.' . $alias, $ax_args) && ($ax_args['count.' . $alias] !== Auth_OpenID_AX_UNLIMITED_VALUES)) {
$count_key = 'count.' . $alias;
$count_s = $ax_args[$count_key];
@@ -888,7 +888,7 @@ class Auth_OpenID_AX_FetchResponse extends Auth_OpenID_AX_KeyValueMessage {
$ax_args['update_url'] = $update_url;
}
- Auth_OpenID::update(&$ax_args, $kv_args);
+ Auth_OpenID::update($ax_args, $kv_args);
return $ax_args;
}
@@ -922,7 +922,7 @@ class Auth_OpenID_AX_FetchResponse extends Auth_OpenID_AX_KeyValueMessage {
* @return $response A FetchResponse containing the data from the
* OpenID message
*/
- function fromSuccessResponse($success_response, $signed=true)
+ static function fromSuccessResponse($success_response, $signed=true)
{
$obj = new Auth_OpenID_AX_FetchResponse();
if ($signed) {
@@ -960,7 +960,7 @@ class Auth_OpenID_AX_StoreRequest extends Auth_OpenID_AX_KeyValueMessage {
{
$ax_args = $this->_newArgs();
$kv_args = $this->_getExtensionKVArgs($aliases);
- Auth_OpenID::update(&$ax_args, $kv_args);
+ Auth_OpenID::update($ax_args, $kv_args);
return $ax_args;
}
}
@@ -980,7 +980,7 @@ class Auth_OpenID_AX_StoreResponse extends Auth_OpenID_AX_Message {
* Returns Auth_OpenID_AX_Error on error or an
* Auth_OpenID_AX_StoreResponse object on success.
*/
- function &make($succeeded=true, $error_message=null)
+ function make($succeeded=true, $error_message=null)
{
if (($succeeded) && ($error_message !== null)) {
return new Auth_OpenID_AX_Error('An error message may only be '.
@@ -1020,4 +1020,3 @@ class Auth_OpenID_AX_StoreResponse extends Auth_OpenID_AX_Message {
}
}
-?> \ No newline at end of file
diff --git a/extlib/Auth/OpenID/Association.php b/extlib/Auth/OpenID/Association.php
index 37ce0cbf4..7fdf399a3 100644
--- a/extlib/Auth/OpenID/Association.php
+++ b/extlib/Auth/OpenID/Association.php
@@ -94,7 +94,7 @@ class Auth_OpenID_Association {
* @return association An {@link Auth_OpenID_Association}
* instance.
*/
- function fromExpiresIn($expires_in, $handle, $secret, $assoc_type)
+ static function fromExpiresIn($expires_in, $handle, $secret, $assoc_type)
{
$issued = time();
$lifetime = $expires_in;
@@ -132,7 +132,7 @@ class Auth_OpenID_Association {
$handle, $secret, $issued, $lifetime, $assoc_type)
{
if (!in_array($assoc_type,
- Auth_OpenID_getSupportedAssociationTypes())) {
+ Auth_OpenID_getSupportedAssociationTypes(), true)) {
$fmt = 'Unsupported association type (%s)';
trigger_error(sprintf($fmt, $assoc_type), E_USER_ERROR);
}
@@ -206,7 +206,7 @@ class Auth_OpenID_Association {
* @param string $assoc_s Association as serialized by serialize()
* @return Auth_OpenID_Association $result instance of this class
*/
- function deserialize($class_name, $assoc_s)
+ static function deserialize($class_name, $assoc_s)
{
$pairs = Auth_OpenID_KVForm::toArray($assoc_s, $strict = true);
$keys = array();
@@ -327,7 +327,7 @@ class Auth_OpenID_Association {
*
* @access private
*/
- function _makePairs(&$message)
+ function _makePairs($message)
{
$signed = $message->getArg(Auth_OpenID_OPENID_NS, 'signed');
if (!$signed || Auth_OpenID::isFailure($signed)) {
@@ -352,7 +352,7 @@ class Auth_OpenID_Association {
*
* @access private
*/
- function getMessageSignature(&$message)
+ function getMessageSignature($message)
{
$pairs = $this->_makePairs($message);
return base64_encode($this->sign($pairs));
@@ -364,7 +364,7 @@ class Auth_OpenID_Association {
*
* @access private
*/
- function checkMessageSignature(&$message)
+ function checkMessageSignature($message)
{
$sig = $message->getArg(Auth_OpenID_OPENID_NS,
'sig');
@@ -374,7 +374,42 @@ class Auth_OpenID_Association {
}
$calculated_sig = $this->getMessageSignature($message);
- return $calculated_sig == $sig;
+
+ return $this->constantTimeCompare($calculated_sig, $sig);
+ }
+
+ /**
+ * String comparison function which will complete in a constant time
+ * for strings of any given matching length, to help prevent an attacker
+ * from distinguishing how much of a signature token they have guessed
+ * correctly.
+ *
+ * For this usage, it's assumed that the length of the string is known,
+ * so we may safely short-circuit on mismatched lengths which will be known
+ * to be invalid by the attacker.
+ *
+ * http://lists.openid.net/pipermail/openid-security/2010-July/001156.html
+ * http://rdist.root.org/2010/01/07/timing-independent-array-comparison/
+ */
+ private function constantTimeCompare($a, $b)
+ {
+ $len = strlen($a);
+ if (strlen($b) !== $len) {
+ // Short-circuit on length mismatch; attackers will already know
+ // the correct target length so this is safe.
+ return false;
+ }
+ if ($len == 0) {
+ // 0-length valid input shouldn't really happen. :)
+ return true;
+ }
+ $result = 0;
+ for ($i = 0; $i < strlen($a); $i++) {
+ // We use scary bitwise operations to avoid logical short-circuits
+ // in lower-level code.
+ $result |= ord($a{$i}) ^ ord($b{$i});
+ }
+ return ($result == 0);
}
}
@@ -469,18 +504,16 @@ function Auth_OpenID_getOnlyEncryptedOrder()
return $result;
}
-function &Auth_OpenID_getDefaultNegotiator()
+function Auth_OpenID_getDefaultNegotiator()
{
- $x = new Auth_OpenID_SessionNegotiator(
+ return new Auth_OpenID_SessionNegotiator(
Auth_OpenID_getDefaultAssociationOrder());
- return $x;
}
-function &Auth_OpenID_getEncryptedNegotiator()
+function Auth_OpenID_getEncryptedNegotiator()
{
- $x = new Auth_OpenID_SessionNegotiator(
+ return new Auth_OpenID_SessionNegotiator(
Auth_OpenID_getOnlyEncryptedOrder());
- return $x;
}
/**
@@ -610,4 +643,3 @@ class Auth_OpenID_SessionNegotiator {
}
}
-?> \ No newline at end of file
diff --git a/extlib/Auth/OpenID/BigMath.php b/extlib/Auth/OpenID/BigMath.php
index 45104947d..7fca2dc43 100644
--- a/extlib/Auth/OpenID/BigMath.php
+++ b/extlib/Auth/OpenID/BigMath.php
@@ -351,8 +351,7 @@ function Auth_OpenID_math_extensions()
'class' => 'Auth_OpenID_GmpMathWrapper');
}
- $result[] = array(
- 'modules' => array('bcmath', 'php_bcmath'),
+ $result[] = array('modules' => array('bcmath', 'php_bcmath'),
'extension' => 'bcmath',
'class' => 'Auth_OpenID_BcMathWrapper');
@@ -366,27 +365,9 @@ function Auth_OpenID_detectMathLibrary($exts)
{
$loaded = false;
+ $hasDl = function_exists('dl');
foreach ($exts as $extension) {
- // See if the extension specified is already loaded.
- if ($extension['extension'] &&
- extension_loaded($extension['extension'])) {
- $loaded = true;
- }
-
- // Try to load dynamic modules.
- if (!$loaded) {
- foreach ($extension['modules'] as $module) {
- if (@dl($module . "." . PHP_SHLIB_SUFFIX)) {
- $loaded = true;
- break;
- }
- }
- }
-
- // If the load succeeded, supply an instance of
- // Auth_OpenID_MathWrapper which wraps the specified
- // module's functionality.
- if ($loaded) {
+ if (extension_loaded($extension['extension'])) {
return $extension;
}
}
@@ -405,7 +386,7 @@ function Auth_OpenID_detectMathLibrary($exts)
* instance of a wrapper for that extension module. If no extension
* module is found, an instance of {@link Auth_OpenID_MathWrapper} is
* returned, which wraps the native PHP integer implementation. The
- * proper calling convention for this method is $lib =&
+ * proper calling convention for this method is $lib =
* Auth_OpenID_getMathLib().
*
* This function checks for the existence of specific long number
@@ -416,7 +397,7 @@ function Auth_OpenID_detectMathLibrary($exts)
*
* @package OpenID
*/
-function &Auth_OpenID_getMathLib()
+function Auth_OpenID_getMathLib()
{
// The instance of Auth_OpenID_MathWrapper that we choose to
// supply will be stored here, so that subseqent calls to this
@@ -468,4 +449,4 @@ function Auth_OpenID_noMathSupport()
return defined('Auth_OpenID_NO_MATH_SUPPORT');
}
-?>
+
diff --git a/extlib/Auth/OpenID/Consumer.php b/extlib/Auth/OpenID/Consumer.php
index 500890b65..021c03898 100644
--- a/extlib/Auth/OpenID/Consumer.php
+++ b/extlib/Auth/OpenID/Consumer.php
@@ -258,19 +258,19 @@ class Auth_OpenID_Consumer {
* when creating the internal consumer object. This is used for
* testing.
*/
- function Auth_OpenID_Consumer(&$store, $session = null,
+ function Auth_OpenID_Consumer($store, $session = null,
$consumer_cls = null)
{
if ($session === null) {
$session = new Auth_Yadis_PHPSession();
}
- $this->session =& $session;
+ $this->session = $session;
if ($consumer_cls !== null) {
- $this->consumer =& new $consumer_cls($store);
+ $this->consumer = new $consumer_cls($store);
} else {
- $this->consumer =& new Auth_OpenID_GenericConsumer($store);
+ $this->consumer = new Auth_OpenID_GenericConsumer($store);
}
$this->_token_key = $this->session_key_prefix . $this->_token_suffix;
@@ -281,7 +281,7 @@ class Auth_OpenID_Consumer {
*
* @access private
*/
- function getDiscoveryObject(&$session, $openid_url,
+ function getDiscoveryObject($session, $openid_url,
$session_key_prefix)
{
return new Auth_Yadis_Discovery($session, $openid_url,
@@ -339,7 +339,7 @@ class Auth_OpenID_Consumer {
$this->consumer->fetcher);
// Reset the 'stale' attribute of the manager.
- $m =& $disco->getManager();
+ $m = $disco->getManager();
if ($m) {
$m->stale = false;
$disco->session->set($disco->session_key,
@@ -370,7 +370,7 @@ class Auth_OpenID_Consumer {
* @return Auth_OpenID_AuthRequest $auth_request An OpenID
* authentication request object.
*/
- function &beginWithoutDiscovery($endpoint, $anonymous=false)
+ function beginWithoutDiscovery($endpoint, $anonymous=false)
{
$loader = new Auth_OpenID_ServiceEndpointLoader();
$auth_req = $this->consumer->begin($endpoint);
@@ -467,7 +467,7 @@ class Auth_OpenID_DiffieHellmanSHA1ConsumerSession {
function getRequest()
{
- $math =& Auth_OpenID_getMathLib();
+ $math = Auth_OpenID_getMathLib();
$cpub = $math->longToBase64($this->dh->public);
@@ -496,7 +496,7 @@ class Auth_OpenID_DiffieHellmanSHA1ConsumerSession {
return null;
}
- $math =& Auth_OpenID_getMathLib();
+ $math = Auth_OpenID_getMathLib();
$spub = $math->base64ToLong($response->getArg(Auth_OpenID_OPENID_NS,
'dh_server_public'));
@@ -611,11 +611,11 @@ class Auth_OpenID_GenericConsumer {
* in the module description. The default value is False, which
* disables immediate mode.
*/
- function Auth_OpenID_GenericConsumer(&$store)
+ function Auth_OpenID_GenericConsumer($store)
{
- $this->store =& $store;
- $this->negotiator =& Auth_OpenID_getDefaultNegotiator();
- $this->_use_assocs = ($this->store ? true : false);
+ $this->store = $store;
+ $this->negotiator = Auth_OpenID_getDefaultNegotiator();
+ $this->_use_assocs = (is_null($this->store) ? false : true);
$this->fetcher = Auth_Yadis_Yadis::getHTTPFetcher();
@@ -665,14 +665,14 @@ class Auth_OpenID_GenericConsumer {
$method = Auth_OpenID::arrayGet($mode_methods, $mode,
'_completeInvalid');
- return call_user_func_array(array(&$this, $method),
- array($message, $endpoint, $return_to));
+ return call_user_func_array(array($this, $method),
+ array($message, &$endpoint, $return_to));
}
/**
* @access private
*/
- function _completeInvalid($message, &$endpoint, $unused)
+ function _completeInvalid($message, $endpoint, $unused)
{
$mode = $message->getArg(Auth_OpenID_OPENID_NS, 'mode',
'<No mode set>');
@@ -684,7 +684,7 @@ class Auth_OpenID_GenericConsumer {
/**
* @access private
*/
- function _complete_cancel($message, &$endpoint, $unused)
+ function _complete_cancel($message, $endpoint, $unused)
{
return new Auth_OpenID_CancelResponse($endpoint);
}
@@ -692,7 +692,7 @@ class Auth_OpenID_GenericConsumer {
/**
* @access private
*/
- function _complete_error($message, &$endpoint, $unused)
+ function _complete_error($message, $endpoint, $unused)
{
$error = $message->getArg(Auth_OpenID_OPENID_NS, 'error');
$contact = $message->getArg(Auth_OpenID_OPENID_NS, 'contact');
@@ -705,7 +705,7 @@ class Auth_OpenID_GenericConsumer {
/**
* @access private
*/
- function _complete_setup_needed($message, &$endpoint, $unused)
+ function _complete_setup_needed($message, $endpoint, $unused)
{
if (!$message->isOpenID2()) {
return $this->_completeInvalid($message, $endpoint);
@@ -719,7 +719,7 @@ class Auth_OpenID_GenericConsumer {
/**
* @access private
*/
- function _complete_id_res($message, &$endpoint, $return_to)
+ function _complete_id_res($message, $endpoint, $return_to)
{
$user_setup_url = $message->getArg(Auth_OpenID_OPENID1_NS,
'user_setup_url');
@@ -1181,7 +1181,7 @@ class Auth_OpenID_GenericConsumer {
// oidutil.log('Performing discovery on %s' % (claimed_id,))
list($unused, $services) = call_user_func($this->discoverMethod,
$claimed_id,
- $this->fetcher);
+ &$this->fetcher);
if (!$services) {
return new Auth_OpenID_FailureResponse(null,
@@ -1197,7 +1197,7 @@ class Auth_OpenID_GenericConsumer {
* @access private
*/
function _verifyDiscoveryServices($claimed_id,
- &$services, &$to_match_endpoints)
+ $services, $to_match_endpoints)
{
// Search the services resulting from discovery to find one
// that matches the information from the assertion
@@ -1216,8 +1216,8 @@ class Auth_OpenID_GenericConsumer {
}
return new Auth_OpenID_FailureResponse(null,
- sprintf('No matching endpoint found after discovering %s',
- $claimed_id));
+ sprintf('No matching endpoint found after discovering %s: %s',
+ $claimed_id, $result->message));
}
/**
@@ -1397,7 +1397,7 @@ class Auth_OpenID_GenericConsumer {
*
* @access private
*/
- function _httpResponseToMessage($response, $server_url)
+ static function _httpResponseToMessage($response, $server_url)
{
// Should this function be named Message.fromHTTPResponse instead?
$response_message = Auth_OpenID_Message::fromKVForm($response->body);
@@ -1461,7 +1461,7 @@ class Auth_OpenID_GenericConsumer {
*
* @access private
*/
- function _extractSupportedAssociationType(&$server_error, &$endpoint,
+ function _extractSupportedAssociationType($server_error, $endpoint,
$assoc_type)
{
// Any error message whose code is not 'unsupported-type'
@@ -1566,7 +1566,7 @@ class Auth_OpenID_GenericConsumer {
/**
* @access private
*/
- function _extractAssociation(&$assoc_response, &$assoc_session)
+ function _extractAssociation($assoc_response, $assoc_session)
{
// Extract the common fields from the response, raising an
// exception if they are not found
@@ -1748,10 +1748,10 @@ class Auth_OpenID_AuthRequest {
* class. Instances of this class are created by the library when
* needed.
*/
- function Auth_OpenID_AuthRequest(&$endpoint, $assoc)
+ function Auth_OpenID_AuthRequest($endpoint, $assoc)
{
$this->assoc = $assoc;
- $this->endpoint =& $endpoint;
+ $this->endpoint = $endpoint;
$this->return_to_args = array();
$this->message = new Auth_OpenID_Message(
$endpoint->preferredNamespace());
@@ -1764,7 +1764,7 @@ class Auth_OpenID_AuthRequest {
* $extension_request: An object that implements the extension
* request interface for adding arguments to an OpenID message.
*/
- function addExtension(&$extension_request)
+ function addExtension($extension_request)
{
$extension_request->toMessage($this->message);
}
@@ -2089,7 +2089,7 @@ class Auth_OpenID_SuccessResponse extends Auth_OpenID_ConsumerResponse {
foreach ($msg_args as $key => $value) {
if (!$this->isSigned($ns_uri, $key)) {
- return null;
+ unset($msg_args[$key]);
}
}
@@ -2167,7 +2167,7 @@ class Auth_OpenID_ServerErrorContainer {
/**
* @access private
*/
- function fromMessage($message)
+ static function fromMessage($message)
{
$error_text = $message->getArg(
Auth_OpenID_OPENID_NS, 'error', '<no error message supplied>');
@@ -2227,4 +2227,4 @@ class Auth_OpenID_SetupNeededResponse extends Auth_OpenID_ConsumerResponse {
}
}
-?>
+
diff --git a/extlib/Auth/OpenID/CryptUtil.php b/extlib/Auth/OpenID/CryptUtil.php
index aacc3cd39..a92626777 100644
--- a/extlib/Auth/OpenID/CryptUtil.php
+++ b/extlib/Auth/OpenID/CryptUtil.php
@@ -37,7 +37,7 @@ class Auth_OpenID_CryptUtil {
* @param int $num_bytes The length of the return value
* @return string $bytes random bytes
*/
- function getBytes($num_bytes)
+ static function getBytes($num_bytes)
{
static $f = null;
$bytes = '';
@@ -77,7 +77,7 @@ class Auth_OpenID_CryptUtil {
* @return string $result A string of randomly-chosen characters
* from $chrs
*/
- function randomString($length, $population = null)
+ static function randomString($length, $population = null)
{
if ($population === null) {
return Auth_OpenID_CryptUtil::getBytes($length);
@@ -106,4 +106,3 @@ class Auth_OpenID_CryptUtil {
}
}
-?> \ No newline at end of file
diff --git a/extlib/Auth/OpenID/DatabaseConnection.php b/extlib/Auth/OpenID/DatabaseConnection.php
index 9db6e0eb3..0c7d08f91 100644
--- a/extlib/Auth/OpenID/DatabaseConnection.php
+++ b/extlib/Auth/OpenID/DatabaseConnection.php
@@ -128,4 +128,3 @@ class Auth_OpenID_DatabaseConnection {
}
}
-?> \ No newline at end of file
diff --git a/extlib/Auth/OpenID/DiffieHellman.php b/extlib/Auth/OpenID/DiffieHellman.php
index f4ded7eba..3e25b7dbb 100644
--- a/extlib/Auth/OpenID/DiffieHellman.php
+++ b/extlib/Auth/OpenID/DiffieHellman.php
@@ -51,9 +51,9 @@ class Auth_OpenID_DiffieHellman {
$private = null, $lib = null)
{
if ($lib === null) {
- $this->lib =& Auth_OpenID_getMathLib();
+ $this->lib = Auth_OpenID_getMathLib();
} else {
- $this->lib =& $lib;
+ $this->lib = $lib;
}
if ($mod === null) {
@@ -110,4 +110,4 @@ class Auth_OpenID_DiffieHellman {
}
}
-?>
+
diff --git a/extlib/Auth/OpenID/Discover.php b/extlib/Auth/OpenID/Discover.php
index 62aeb1d2b..7b0c640c5 100644
--- a/extlib/Auth/OpenID/Discover.php
+++ b/extlib/Auth/OpenID/Discover.php
@@ -28,8 +28,34 @@ function Auth_OpenID_getOpenIDTypeURIs()
Auth_OpenID_TYPE_2_0,
Auth_OpenID_TYPE_1_2,
Auth_OpenID_TYPE_1_1,
- Auth_OpenID_TYPE_1_0,
- Auth_OpenID_RP_RETURN_TO_URL_TYPE);
+ Auth_OpenID_TYPE_1_0);
+}
+
+function Auth_OpenID_getOpenIDConsumerTypeURIs()
+{
+ return array(Auth_OpenID_RP_RETURN_TO_URL_TYPE);
+}
+
+
+/*
+ * Provides a user-readable interpretation of a type uri.
+ * Useful for error messages.
+ */
+function Auth_OpenID_getOpenIDTypeName($type_uri) {
+ switch ($type_uri) {
+ case Auth_OpenID_TYPE_2_0_IDP:
+ return 'OpenID 2.0 IDP';
+ case Auth_OpenID_TYPE_2_0:
+ return 'OpenID 2.0';
+ case Auth_OpenID_TYPE_1_2:
+ return 'OpenID 1.2';
+ case Auth_OpenID_TYPE_1_1:
+ return 'OpenID 1.1';
+ case Auth_OpenID_TYPE_1_0:
+ return 'OpenID 1.0';
+ case Auth_OpenID_RP_RETURN_TO_URL_TYPE:
+ return 'OpenID relying party';
+ }
}
/**
@@ -124,7 +150,7 @@ class Auth_OpenID_ServiceEndpoint {
return in_array(Auth_OpenID_TYPE_2_0_IDP, $this->type_uris);
}
- function fromOPEndpointURL($op_endpoint_url)
+ static function fromOPEndpointURL($op_endpoint_url)
{
// Construct an OP-Identifier OpenIDServiceEndpoint object for
// a given OP Endpoint URL
@@ -172,17 +198,36 @@ class Auth_OpenID_ServiceEndpoint {
}
/*
- * Parse the given document as XRDS looking for OpenID services.
+ * Parse the given document as XRDS looking for OpenID consumer services.
*
* @return array of Auth_OpenID_ServiceEndpoint or null if the
* document cannot be parsed.
*/
- function fromXRDS($uri, $xrds_text)
+ function consumerFromXRDS($uri, $xrds_text)
{
$xrds =& Auth_Yadis_XRDS::parseXRDS($xrds_text);
if ($xrds) {
$yadis_services =
+ $xrds->services(array('filter_MatchesAnyOpenIDConsumerType'));
+ return Auth_OpenID_makeOpenIDEndpoints($uri, $yadis_services);
+ }
+
+ return null;
+ }
+
+ /*
+ * Parse the given document as XRDS looking for OpenID services.
+ *
+ * @return array of Auth_OpenID_ServiceEndpoint or null if the
+ * document cannot be parsed.
+ */
+ static function fromXRDS($uri, $xrds_text)
+ {
+ $xrds = Auth_Yadis_XRDS::parseXRDS($xrds_text);
+
+ if ($xrds) {
+ $yadis_services =
$xrds->services(array('filter_MatchesAnyOpenIDType'));
return Auth_OpenID_makeOpenIDEndpoints($uri, $yadis_services);
}
@@ -197,7 +242,7 @@ class Auth_OpenID_ServiceEndpoint {
* @return array of Auth_OpenID_ServiceEndpoint or null if
* endpoints cannot be created.
*/
- function fromDiscoveryResult($discoveryResult)
+ static function fromDiscoveryResult($discoveryResult)
{
if ($discoveryResult->isXRDS()) {
return Auth_OpenID_ServiceEndpoint::fromXRDS(
@@ -210,7 +255,7 @@ class Auth_OpenID_ServiceEndpoint {
}
}
- function fromHTML($uri, $html)
+ static function fromHTML($uri, $html)
{
$discovery_types = array(
array(Auth_OpenID_TYPE_2_0,
@@ -273,7 +318,7 @@ function Auth_OpenID_findOPLocalIdentifier($service, $type_uris)
$service->parser->registerNamespace('xrd',
Auth_Yadis_XMLNS_XRD_2_0);
- $parser =& $service->parser;
+ $parser = $service->parser;
$permitted_tags = array();
@@ -305,7 +350,7 @@ function Auth_OpenID_findOPLocalIdentifier($service, $type_uris)
return $local_id;
}
-function filter_MatchesAnyOpenIDType(&$service)
+function filter_MatchesAnyOpenIDType($service)
{
$uris = $service->getTypes();
@@ -318,6 +363,19 @@ function filter_MatchesAnyOpenIDType(&$service)
return false;
}
+function filter_MatchesAnyOpenIDConsumerType(&$service)
+{
+ $uris = $service->getTypes();
+
+ foreach ($uris as $uri) {
+ if (in_array($uri, Auth_OpenID_getOpenIDConsumerTypeURIs())) {
+ return true;
+ }
+ }
+
+ return false;
+}
+
function Auth_OpenID_bestMatchingService($service, $preferred_types)
{
// Return the index of the first matching type, or something
@@ -415,7 +473,7 @@ function Auth_OpenID_makeOpenIDEndpoints($uri, $yadis_services)
return $s;
}
-function Auth_OpenID_discoverWithYadis($uri, &$fetcher,
+function Auth_OpenID_discoverWithYadis($uri, $fetcher,
$endpoint_filter='Auth_OpenID_getOPOrUserServices',
$discover_function=null)
{
@@ -433,12 +491,12 @@ function Auth_OpenID_discoverWithYadis($uri, &$fetcher,
$openid_services = array();
$response = call_user_func_array($discover_function,
- array($uri, &$fetcher));
+ array($uri, $fetcher));
$yadis_url = $response->normalized_uri;
$yadis_services = array();
- if ($response->isFailure()) {
+ if ($response->isFailure() && !$response->isXRDS()) {
return array($uri, array());
}
@@ -460,18 +518,18 @@ function Auth_OpenID_discoverWithYadis($uri, &$fetcher,
}
$openid_services = call_user_func_array($endpoint_filter,
- array(&$openid_services));
+ array($openid_services));
return array($yadis_url, $openid_services);
}
-function Auth_OpenID_discoverURI($uri, &$fetcher)
+function Auth_OpenID_discoverURI($uri, $fetcher)
{
$uri = Auth_OpenID::normalizeUrl($uri);
return Auth_OpenID_discoverWithYadis($uri, $fetcher);
}
-function Auth_OpenID_discoverWithoutYadis($uri, &$fetcher)
+function Auth_OpenID_discoverWithoutYadis($uri, $fetcher)
{
$http_resp = @$fetcher->get($uri);
@@ -490,7 +548,7 @@ function Auth_OpenID_discoverWithoutYadis($uri, &$fetcher)
return array($identity_url, $openid_services);
}
-function Auth_OpenID_discoverXRI($iname, &$fetcher)
+function Auth_OpenID_discoverXRI($iname, $fetcher)
{
$resolver = new Auth_Yadis_ProxyResolver($fetcher);
list($canonicalID, $yadis_services) =
@@ -513,7 +571,7 @@ function Auth_OpenID_discoverXRI($iname, &$fetcher)
return array($iname, $openid_services);
}
-function Auth_OpenID_discover($uri, &$fetcher)
+function Auth_OpenID_discover($uri, $fetcher)
{
// If the fetcher (i.e., PHP) doesn't support SSL, we can't do
// discovery on an HTTPS URL.
@@ -545,4 +603,4 @@ function Auth_OpenID_discover($uri, &$fetcher)
return $result;
}
-?>
+
diff --git a/extlib/Auth/OpenID/DumbStore.php b/extlib/Auth/OpenID/DumbStore.php
index 22fd2d366..e8f29ace5 100644
--- a/extlib/Auth/OpenID/DumbStore.php
+++ b/extlib/Auth/OpenID/DumbStore.php
@@ -97,4 +97,3 @@ class Auth_OpenID_DumbStore extends Auth_OpenID_OpenIDStore {
}
}
-?> \ No newline at end of file
diff --git a/extlib/Auth/OpenID/Extension.php b/extlib/Auth/OpenID/Extension.php
index f362a4b38..c4e38c038 100644
--- a/extlib/Auth/OpenID/Extension.php
+++ b/extlib/Auth/OpenID/Extension.php
@@ -39,7 +39,7 @@ class Auth_OpenID_Extension {
*
* Returns the message with the extension arguments added.
*/
- function toMessage(&$message)
+ function toMessage($message)
{
$implicit = $message->isOpenID1();
$added = $message->namespaces->addAlias($this->ns_uri,
@@ -59,4 +59,3 @@ class Auth_OpenID_Extension {
}
}
-?> \ No newline at end of file
diff --git a/extlib/Auth/OpenID/FileStore.php b/extlib/Auth/OpenID/FileStore.php
index 29d8d20e7..074421a0b 100644
--- a/extlib/Auth/OpenID/FileStore.php
+++ b/extlib/Auth/OpenID/FileStore.php
@@ -367,7 +367,7 @@ class Auth_OpenID_FileStore extends Auth_OpenID_OpenIDStore {
}
if ( abs($timestamp - time()) > $Auth_OpenID_SKEW ) {
- return False;
+ return false;
}
if ($server_url) {
@@ -519,7 +519,7 @@ class Auth_OpenID_FileStore extends Auth_OpenID_OpenIDStore {
/**
* @access private
*/
- function _mkdtemp($dir)
+ static function _mkdtemp($dir)
{
foreach (range(0, 4) as $i) {
$name = $dir . strval(DIRECTORY_SEPARATOR) . strval(getmypid()) .
@@ -615,4 +615,4 @@ class Auth_OpenID_FileStore extends Auth_OpenID_OpenIDStore {
}
}
-?>
+
diff --git a/extlib/Auth/OpenID/HMAC.php b/extlib/Auth/OpenID/HMAC.php
index ec42db8df..e9779bd4e 100644
--- a/extlib/Auth/OpenID/HMAC.php
+++ b/extlib/Auth/OpenID/HMAC.php
@@ -96,4 +96,3 @@ if (function_exists('hash_hmac') &&
define('Auth_OpenID_HMACSHA256_SUPPORTED', false);
}
-?> \ No newline at end of file
diff --git a/extlib/Auth/OpenID/Interface.php b/extlib/Auth/OpenID/Interface.php
index f4c6062f8..eca6b9c50 100644
--- a/extlib/Auth/OpenID/Interface.php
+++ b/extlib/Auth/OpenID/Interface.php
@@ -194,4 +194,3 @@ class Auth_OpenID_OpenIDStore {
}
}
-?> \ No newline at end of file
diff --git a/extlib/Auth/OpenID/KVForm.php b/extlib/Auth/OpenID/KVForm.php
index fb342a001..dd02661d8 100644
--- a/extlib/Auth/OpenID/KVForm.php
+++ b/extlib/Auth/OpenID/KVForm.php
@@ -26,7 +26,7 @@ class Auth_OpenID_KVForm {
* @static
* @access private
*/
- function toArray($kvs, $strict=false)
+ static function toArray($kvs, $strict=false)
{
$lines = explode("\n", $kvs);
@@ -78,7 +78,7 @@ class Auth_OpenID_KVForm {
* @static
* @access private
*/
- function fromArray($values)
+ static function fromArray($values)
{
if ($values === null) {
return null;
@@ -109,4 +109,3 @@ class Auth_OpenID_KVForm {
}
}
-?> \ No newline at end of file
diff --git a/extlib/Auth/OpenID/MemcachedStore.php b/extlib/Auth/OpenID/MemcachedStore.php
index d357c6b11..fc10800b1 100644
--- a/extlib/Auth/OpenID/MemcachedStore.php
+++ b/extlib/Auth/OpenID/MemcachedStore.php
@@ -205,4 +205,3 @@ class Auth_OpenID_MemcachedStore extends Auth_OpenID_OpenIDStore {
}
}
-?> \ No newline at end of file
diff --git a/extlib/Auth/OpenID/Message.php b/extlib/Auth/OpenID/Message.php
index 5ab115a86..9aa1fa468 100644
--- a/extlib/Auth/OpenID/Message.php
+++ b/extlib/Auth/OpenID/Message.php
@@ -143,7 +143,7 @@ class Auth_OpenID_Mapping {
* Returns true if $thing is an Auth_OpenID_Mapping object; false
* if not.
*/
- function isA($thing)
+ static function isA($thing)
{
return (is_object($thing) &&
strtolower(get_class($thing)) == 'auth_openid_mapping');
@@ -442,7 +442,7 @@ class Auth_OpenID_Message {
return $this->getOpenIDNamespace() == Auth_OpenID_OPENID2_NS;
}
- function fromPostArgs($args)
+ static function fromPostArgs($args)
{
// Construct a Message containing a set of POST arguments
$obj = new Auth_OpenID_Message();
@@ -477,7 +477,7 @@ class Auth_OpenID_Message {
}
}
- function fromOpenIDArgs($openid_args)
+ static function fromOpenIDArgs($openid_args)
{
// Takes an array.
@@ -594,7 +594,7 @@ class Auth_OpenID_Message {
return $this->_openid_ns_uri;
}
- function fromKVForm($kvform_string)
+ static function fromKVForm($kvform_string)
{
// Create a Message from a KVForm string
return Auth_OpenID_Message::fromOpenIDArgs(
@@ -917,4 +917,4 @@ class Auth_OpenID_Message {
}
}
-?>
+
diff --git a/extlib/Auth/OpenID/MySQLStore.php b/extlib/Auth/OpenID/MySQLStore.php
index eb08af016..810f059f1 100644
--- a/extlib/Auth/OpenID/MySQLStore.php
+++ b/extlib/Auth/OpenID/MySQLStore.php
@@ -75,4 +75,3 @@ class Auth_OpenID_MySQLStore extends Auth_OpenID_SQLStore {
}
}
-?> \ No newline at end of file
diff --git a/extlib/Auth/OpenID/Nonce.php b/extlib/Auth/OpenID/Nonce.php
index effecac38..b83c5911f 100644
--- a/extlib/Auth/OpenID/Nonce.php
+++ b/extlib/Auth/OpenID/Nonce.php
@@ -106,4 +106,3 @@ function Auth_OpenID_mkNonce($when = null)
return $time_str . $salt;
}
-?> \ No newline at end of file
diff --git a/extlib/Auth/OpenID/PAPE.php b/extlib/Auth/OpenID/PAPE.php
index 62cba8a91..f08ca8bd0 100644
--- a/extlib/Auth/OpenID/PAPE.php
+++ b/extlib/Auth/OpenID/PAPE.php
@@ -21,7 +21,7 @@ define('PAPE_AUTH_PHISHING_RESISTANT',
'http://schemas.openid.net/pape/policies/2007/06/phishing-resistant');
define('PAPE_TIME_VALIDATOR',
- '^[0-9]{4,4}-[0-9][0-9]-[0-9][0-9]T[0-9][0-9]:[0-9][0-9]:[0-9][0-9]Z$');
+ '/^[0-9]{4,4}-[0-9][0-9]-[0-9][0-9]T[0-9][0-9]:[0-9][0-9]:[0-9][0-9]Z$/');
/**
* A Provider Authentication Policy request, sent from a relying party
* to a provider
@@ -82,7 +82,7 @@ class Auth_OpenID_PAPE_Request extends Auth_OpenID_Extension {
* Instantiate a Request object from the arguments in a checkid_*
* OpenID message
*/
- function fromOpenIDRequest($request)
+ static function fromOpenIDRequest($request)
{
$obj = new Auth_OpenID_PAPE_Request();
$args = $request->message->getArgs(Auth_OpenID_PAPE_NS_URI);
@@ -201,7 +201,7 @@ class Auth_OpenID_PAPE_Response extends Auth_OpenID_Extension {
* @returns: A provider authentication policy response from the
* data that was supplied with the id_res response.
*/
- function fromSuccessResponse($success_response)
+ static function fromSuccessResponse($success_response)
{
$obj = new Auth_OpenID_PAPE_Response();
@@ -262,7 +262,7 @@ class Auth_OpenID_PAPE_Response extends Auth_OpenID_Extension {
$auth_time = Auth_OpenID::arrayGet($args, 'auth_time');
if ($auth_time !== null) {
- if (ereg(PAPE_TIME_VALIDATOR, $auth_time)) {
+ if (preg_match(PAPE_TIME_VALIDATOR, $auth_time)) {
$this->auth_time = $auth_time;
} else if ($strict) {
return false;
@@ -287,7 +287,7 @@ class Auth_OpenID_PAPE_Response extends Auth_OpenID_Extension {
}
if ($this->auth_time !== null) {
- if (!ereg(PAPE_TIME_VALIDATOR, $this->auth_time)) {
+ if (!preg_match(PAPE_TIME_VALIDATOR, $this->auth_time)) {
return false;
}
@@ -298,4 +298,3 @@ class Auth_OpenID_PAPE_Response extends Auth_OpenID_Extension {
}
}
-?> \ No newline at end of file
diff --git a/extlib/Auth/OpenID/Parse.php b/extlib/Auth/OpenID/Parse.php
index 546f34f6b..6c2e72169 100644
--- a/extlib/Auth/OpenID/Parse.php
+++ b/extlib/Auth/OpenID/Parse.php
@@ -101,7 +101,7 @@ class Auth_OpenID_Parse {
* Starts with the tag name at a word boundary, where the tag name
* is not a namespace
*/
- var $_tag_expr = "<%s\b(?!:)([^>]*?)(?:\/>|>(.*?)(?:<\/?%s\s*>|\Z))";
+ var $_tag_expr = "<%s\b(?!:)([^>]*?)(?:\/>|>(.*)(?:<\/?%s\s*>|\Z))";
var $_attr_find = '\b(\w+)=("[^"]*"|\'[^\']*\'|[^\'"\s\/<>]+)';
@@ -215,11 +215,31 @@ class Auth_OpenID_Parse {
return $str;
}
}
+
+ function match($regexp, $text, &$match)
+ {
+ if (!is_callable('mb_ereg_search_init')) {
+ return preg_match($regexp, $text, $match);
+ }
+
+ $regexp = substr($regexp, 1, strlen($regexp) - 2 - strlen($this->_re_flags));
+ mb_ereg_search_init($text);
+ if (!mb_ereg_search($regexp)) {
+ return false;
+ }
+ list($match) = mb_ereg_search_getregs();
+ return true;
+ }
/**
* Find all link tags in a string representing a HTML document and
* return a list of their attributes.
*
+ * @todo This is quite ineffective and may fail with the default
+ * pcre.backtrack_limit of 100000 in PHP 5.2, if $html is big.
+ * It should rather use stripos (in PHP5) or strpos()+strtoupper()
+ * in PHP4 to manage this.
+ *
* @param string $html The text to parse
* @return array $list An array of arrays of attributes, one for each
* link tag
@@ -244,18 +264,23 @@ class Auth_OpenID_Parse {
$stripped = substr($stripped, $html_begin,
$html_end - $html_begin);
+ // Workaround to prevent PREG_BACKTRACK_LIMIT_ERROR:
+ $old_btlimit = ini_set( 'pcre.backtrack_limit', -1 );
+
// Try to find the <HEAD> tag.
$head_re = $this->headFind();
- $head_matches = array();
- if (!preg_match($head_re, $stripped, $head_matches)) {
- return array();
+ $head_match = '';
+ if (!$this->match($head_re, $stripped, $head_match)) {
+ ini_set( 'pcre.backtrack_limit', $old_btlimit );
+ return array();
}
$link_data = array();
$link_matches = array();
- if (!preg_match_all($this->_link_find, $head_matches[0],
+ if (!preg_match_all($this->_link_find, $head_match,
$link_matches)) {
+ ini_set( 'pcre.backtrack_limit', $old_btlimit );
return array();
}
@@ -273,6 +298,7 @@ class Auth_OpenID_Parse {
$link_data[] = $link_attrs;
}
+ ini_set( 'pcre.backtrack_limit', $old_btlimit );
return $link_data;
}
@@ -349,4 +375,3 @@ function Auth_OpenID_legacy_discover($html_text, $server_rel,
}
}
-?> \ No newline at end of file
diff --git a/extlib/Auth/OpenID/PostgreSQLStore.php b/extlib/Auth/OpenID/PostgreSQLStore.php
index 69d95e7b8..d90e43e00 100644
--- a/extlib/Auth/OpenID/PostgreSQLStore.php
+++ b/extlib/Auth/OpenID/PostgreSQLStore.php
@@ -110,4 +110,3 @@ class Auth_OpenID_PostgreSQLStore extends Auth_OpenID_SQLStore {
}
}
-?> \ No newline at end of file
diff --git a/extlib/Auth/OpenID/SQLStore.php b/extlib/Auth/OpenID/SQLStore.php
index da93c6aa2..c04059732 100644
--- a/extlib/Auth/OpenID/SQLStore.php
+++ b/extlib/Auth/OpenID/SQLStore.php
@@ -14,16 +14,6 @@
*/
/**
- * Require the PEAR DB module because we'll need it for the SQL-based
- * stores implemented here. We silence any errors from the inclusion
- * because it might not be present, and a user of the SQL stores may
- * supply an Auth_OpenID_DatabaseConnection instance that implements
- * its own storage.
- */
-global $__Auth_OpenID_PEAR_AVAILABLE;
-$__Auth_OpenID_PEAR_AVAILABLE = @include_once 'DB.php';
-
-/**
* @access private
*/
require_once 'Auth/OpenID/Interface.php';
@@ -89,8 +79,6 @@ class Auth_OpenID_SQLStore extends Auth_OpenID_OpenIDStore {
$associations_table = null,
$nonces_table = null)
{
- global $__Auth_OpenID_PEAR_AVAILABLE;
-
$this->associations_table_name = "oid_associations";
$this->nonces_table_name = "oid_nonces";
@@ -113,7 +101,7 @@ class Auth_OpenID_SQLStore extends Auth_OpenID_OpenIDStore {
// constant, so only try to use it if PEAR is present. Note
// that Auth_Openid_Databaseconnection instances need not
// implement ::setFetchMode for this reason.
- if ($__Auth_OpenID_PEAR_AVAILABLE) {
+ if (is_subclass_of($this->connection, 'db_common')) {
$this->connection->setFetchMode(DB_FETCHMODE_ASSOC);
}
@@ -482,7 +470,7 @@ class Auth_OpenID_SQLStore extends Auth_OpenID_OpenIDStore {
global $Auth_OpenID_SKEW;
if ( abs($timestamp - time()) > $Auth_OpenID_SKEW ) {
- return False;
+ return false;
}
return $this->_add_nonce($server_url, $timestamp, $salt);
@@ -566,4 +554,4 @@ class Auth_OpenID_SQLStore extends Auth_OpenID_OpenIDStore {
}
}
-?>
+
diff --git a/extlib/Auth/OpenID/SQLiteStore.php b/extlib/Auth/OpenID/SQLiteStore.php
index ec2bf58e4..4558fa1c3 100644
--- a/extlib/Auth/OpenID/SQLiteStore.php
+++ b/extlib/Auth/OpenID/SQLiteStore.php
@@ -68,4 +68,3 @@ class Auth_OpenID_SQLiteStore extends Auth_OpenID_SQLStore {
}
}
-?> \ No newline at end of file
diff --git a/extlib/Auth/OpenID/SReg.php b/extlib/Auth/OpenID/SReg.php
index 63280769f..5ece70724 100644
--- a/extlib/Auth/OpenID/SReg.php
+++ b/extlib/Auth/OpenID/SReg.php
@@ -94,7 +94,7 @@ Auth_OpenID_registerNamespaceAlias(Auth_OpenID_SREG_NS_URI_1_1, 'sreg');
* $endpoint: The endpoint object as returned by OpenID discovery.
* returns whether an sreg type was advertised by the endpoint
*/
-function Auth_OpenID_supportsSReg(&$endpoint)
+function Auth_OpenID_supportsSReg($endpoint)
{
return ($endpoint->usesExtension(Auth_OpenID_SREG_NS_URI_1_1) ||
$endpoint->usesExtension(Auth_OpenID_SREG_NS_URI_1_0));
@@ -122,7 +122,7 @@ class Auth_OpenID_SRegBase extends Auth_OpenID_Extension {
*
* @access private
*/
- function _getSRegNS(&$message)
+ static function _getSRegNS($message)
{
$alias = null;
$found_ns_uri = null;
@@ -173,7 +173,7 @@ class Auth_OpenID_SRegRequest extends Auth_OpenID_SRegBase {
/**
* Initialize an empty simple registration request.
*/
- function build($required=null, $optional=null,
+ static function build($required=null, $optional=null,
$policy_url=null,
$sreg_ns_uri=Auth_OpenID_SREG_NS_URI,
$cls='Auth_OpenID_SRegRequest')
@@ -213,7 +213,7 @@ class Auth_OpenID_SRegRequest extends Auth_OpenID_SRegBase {
*
* Returns the newly created simple registration request
*/
- function fromOpenIDRequest($request, $cls='Auth_OpenID_SRegRequest')
+ static function fromOpenIDRequest($request, $cls='Auth_OpenID_SRegRequest')
{
$obj = call_user_func_array(array($cls, 'build'),
@@ -442,7 +442,7 @@ class Auth_OpenID_SRegResponse extends Auth_OpenID_SRegBase {
* string (unicode) value. For instance, the nickname should be
* stored under the key 'nickname'.
*/
- function extractResponse($request, $data)
+ static function extractResponse($request, $data)
{
$obj = new Auth_OpenID_SRegResponse();
$obj->ns_uri = $request->ns_uri;
@@ -471,7 +471,7 @@ class Auth_OpenID_SRegResponse extends Auth_OpenID_SRegBase {
* Returns a simple registration response containing the data that
* was supplied with the C{id_res} response.
*/
- function fromSuccessResponse(&$success_response, $signed_only=true)
+ static function fromSuccessResponse($success_response, $signed_only=true)
{
global $Auth_OpenID_sreg_data_fields;
@@ -518,4 +518,4 @@ class Auth_OpenID_SRegResponse extends Auth_OpenID_SRegBase {
}
}
-?>
+
diff --git a/extlib/Auth/OpenID/Server.php b/extlib/Auth/OpenID/Server.php
index f1db4d872..cc8ba961c 100644
--- a/extlib/Auth/OpenID/Server.php
+++ b/extlib/Auth/OpenID/Server.php
@@ -43,7 +43,7 @@
* consumers to add extensions to their requests. For example, with
* sites using the Simple Registration
* Extension
- * (http://www.openidenabled.com/openid/simple-registration-extension/),
+ * (http://openid.net/specs/openid-simple-registration-extension-1_0.html),
* a user can agree to have their nickname and e-mail address sent to
* a site when they sign up.
*
@@ -365,7 +365,7 @@ class Auth_OpenID_CheckAuthRequest extends Auth_OpenID_Request {
$this->message = null;
}
- function fromMessage($message, $server=null)
+ static function fromMessage($message, $server=null)
{
$required_keys = array('assoc_handle', 'sig', 'signed');
@@ -396,7 +396,7 @@ class Auth_OpenID_CheckAuthRequest extends Auth_OpenID_Request {
return $result;
}
- function answer(&$signatory)
+ function answer($signatory)
{
$is_valid = $signatory->verify($this->assoc_handle, $this->signed);
@@ -436,7 +436,7 @@ class Auth_OpenID_PlainTextServerSession {
var $needs_math = false;
var $allowed_assoc_types = array('HMAC-SHA1', 'HMAC-SHA256');
- function fromMessage($unused_request)
+ static function fromMessage($unused_request)
{
return new Auth_OpenID_PlainTextServerSession();
}
@@ -469,7 +469,7 @@ class Auth_OpenID_DiffieHellmanSHA1ServerSession {
$this->consumer_pubkey = $consumer_pubkey;
}
- function getDH($message)
+ static function getDH($message)
{
$dh_modulus = $message->getArg(Auth_OpenID_OPENID_NS, 'dh_modulus');
$dh_gen = $message->getArg(Auth_OpenID_OPENID_NS, 'dh_gen');
@@ -489,7 +489,7 @@ class Auth_OpenID_DiffieHellmanSHA1ServerSession {
$missing);
}
- $lib =& Auth_OpenID_getMathLib();
+ $lib = Auth_OpenID_getMathLib();
if ($dh_modulus || $dh_gen) {
$dh_modulus = $lib->base64ToLong($dh_modulus);
@@ -523,7 +523,7 @@ class Auth_OpenID_DiffieHellmanSHA1ServerSession {
return array($dh, $consumer_pubkey);
}
- function fromMessage($message)
+ static function fromMessage($message)
{
$result = Auth_OpenID_DiffieHellmanSHA1ServerSession::getDH($message);
@@ -538,7 +538,7 @@ class Auth_OpenID_DiffieHellmanSHA1ServerSession {
function answer($secret)
{
- $lib =& Auth_OpenID_getMathLib();
+ $lib = Auth_OpenID_getMathLib();
$mac_key = $this->dh->xorSecret($this->consumer_pubkey, $secret,
$this->hash_func);
return array(
@@ -560,7 +560,7 @@ class Auth_OpenID_DiffieHellmanSHA256ServerSession
var $hash_func = 'Auth_OpenID_SHA256';
var $allowed_assoc_types = array('HMAC-SHA256');
- function fromMessage($message)
+ static function fromMessage($message)
{
$result = Auth_OpenID_DiffieHellmanSHA1ServerSession::getDH($message);
@@ -582,7 +582,7 @@ class Auth_OpenID_DiffieHellmanSHA256ServerSession
class Auth_OpenID_AssociateRequest extends Auth_OpenID_Request {
var $mode = "associate";
- function getSessionClasses()
+ static function getSessionClasses()
{
return array(
'no-encryption' => 'Auth_OpenID_PlainTextServerSession',
@@ -590,14 +590,14 @@ class Auth_OpenID_AssociateRequest extends Auth_OpenID_Request {
'DH-SHA256' => 'Auth_OpenID_DiffieHellmanSHA256ServerSession');
}
- function Auth_OpenID_AssociateRequest(&$session, $assoc_type)
+ function Auth_OpenID_AssociateRequest($session, $assoc_type)
{
- $this->session =& $session;
+ $this->session = $session;
$this->namespace = Auth_OpenID_OPENID2_NS;
$this->assoc_type = $assoc_type;
}
- function fromMessage($message, $server=null)
+ static function fromMessage($message, $server=null)
{
if ($message->isOpenID1()) {
$session_type = $message->getArg(Auth_OpenID_OPENID_NS,
@@ -696,7 +696,7 @@ class Auth_OpenID_AssociateRequest extends Auth_OpenID_Request {
'session_type',
$preferred_session_type);
}
-
+ $response->code = AUTH_OPENID_HTTP_ERROR;
return $response;
}
}
@@ -734,7 +734,7 @@ class Auth_OpenID_CheckIDRequest extends Auth_OpenID_Request {
*/
var $namespace;
- function make(&$message, $identity, $return_to, $trust_root = null,
+ static function make($message, $identity, $return_to, $trust_root = null,
$immediate = false, $assoc_handle = null, $server = null)
{
if ($server === null) {
@@ -752,7 +752,7 @@ class Auth_OpenID_CheckIDRequest extends Auth_OpenID_Request {
$assoc_handle, $server);
$r->namespace = $message->getOpenIDNamespace();
- $r->message =& $message;
+ $r->message = $message;
if (!$r->trustRootValid()) {
return new Auth_OpenID_UntrustedReturnURL($message,
@@ -778,7 +778,7 @@ class Auth_OpenID_CheckIDRequest extends Auth_OpenID_Request {
}
$this->return_to = $return_to;
$this->trust_root = $trust_root;
- $this->server =& $server;
+ $this->server = $server;
if ($immediate) {
$this->immediate = true;
@@ -817,11 +817,12 @@ class Auth_OpenID_CheckIDRequest extends Auth_OpenID_Request {
*/
function returnToVerified()
{
+ $fetcher = Auth_Yadis_Yadis::getHTTPFetcher();
return call_user_func_array($this->verifyReturnTo,
- array($this->trust_root, $this->return_to));
+ array($this->trust_root, $this->return_to, $fetcher));
}
-
- function fromMessage(&$message, $server)
+
+ static function fromMessage($message, $server)
{
$mode = $message->getArg(Auth_OpenID_OPENID_NS, 'mode');
$immediate = null;
@@ -1097,7 +1098,7 @@ class Auth_OpenID_CheckIDRequest extends Auth_OpenID_Request {
in OpenID 1.x immediate mode.');
}
- $setup_request =& new Auth_OpenID_CheckIDRequest(
+ $setup_request = new Auth_OpenID_CheckIDRequest(
$this->identity,
$this->return_to,
$this->trust_root,
@@ -1183,9 +1184,9 @@ class Auth_OpenID_CheckIDRequest extends Auth_OpenID_Request {
*/
class Auth_OpenID_ServerResponse {
- function Auth_OpenID_ServerResponse(&$request)
+ function Auth_OpenID_ServerResponse($request)
{
- $this->request =& $request;
+ $this->request = $request;
$this->fields = new Auth_OpenID_Message($this->request->namespace);
}
@@ -1310,10 +1311,10 @@ class Auth_OpenID_Signatory {
/**
* Create a new signatory using a given store.
*/
- function Auth_OpenID_Signatory(&$store)
+ function Auth_OpenID_Signatory($store)
{
// assert store is not None
- $this->store =& $store;
+ $this->store = $store;
}
/**
@@ -1447,7 +1448,7 @@ class Auth_OpenID_Encoder {
* Encode an {@link Auth_OpenID_ServerResponse} and return an
* {@link Auth_OpenID_WebResponse}.
*/
- function encode(&$response)
+ function encode($response)
{
$cls = $this->responseFactory;
@@ -1463,10 +1464,14 @@ class Auth_OpenID_Encoder {
array('location' => $location));
} else if ($encode_as == Auth_OpenID_ENCODE_HTML_FORM) {
$wr = new $cls(AUTH_OPENID_HTTP_OK, array(),
- $response->toFormMarkup());
+ $response->toHTML());
} else {
return new Auth_OpenID_EncodingError($response);
}
+ /* Allow the response to carry a custom error code (ex: for Association errors) */
+ if(isset($response->code)) {
+ $wr->code = $response->code;
+ }
return $wr;
}
}
@@ -1478,16 +1483,16 @@ class Auth_OpenID_Encoder {
*/
class Auth_OpenID_SigningEncoder extends Auth_OpenID_Encoder {
- function Auth_OpenID_SigningEncoder(&$signatory)
+ function Auth_OpenID_SigningEncoder($signatory)
{
- $this->signatory =& $signatory;
+ $this->signatory = $signatory;
}
/**
* Sign an {@link Auth_OpenID_ServerResponse} and return an
* {@link Auth_OpenID_WebResponse}.
*/
- function encode(&$response)
+ function encode($response)
{
// the isinstance is a bit of a kludge... it means there isn't
// really an adapter to make the interfaces quite match.
@@ -1516,9 +1521,9 @@ class Auth_OpenID_SigningEncoder extends Auth_OpenID_Encoder {
*/
class Auth_OpenID_Decoder {
- function Auth_OpenID_Decoder(&$server)
+ function Auth_OpenID_Decoder($server)
{
- $this->server =& $server;
+ $this->server = $server;
$this->handlers = array(
'checkid_setup' => 'Auth_OpenID_CheckIDRequest',
@@ -1599,9 +1604,9 @@ class Auth_OpenID_Decoder {
* @package OpenID
*/
class Auth_OpenID_EncodingError {
- function Auth_OpenID_EncodingError(&$response)
+ function Auth_OpenID_EncodingError($response)
{
- $this->response =& $response;
+ $this->response = $response;
}
}
@@ -1674,14 +1679,14 @@ class Auth_OpenID_UntrustedReturnURL extends Auth_OpenID_ServerError {
* @package OpenID
*/
class Auth_OpenID_Server {
- function Auth_OpenID_Server(&$store, $op_endpoint=null)
+ function Auth_OpenID_Server($store, $op_endpoint=null)
{
- $this->store =& $store;
- $this->signatory =& new Auth_OpenID_Signatory($this->store);
- $this->encoder =& new Auth_OpenID_SigningEncoder($this->signatory);
- $this->decoder =& new Auth_OpenID_Decoder($this);
+ $this->store = $store;
+ $this->signatory = new Auth_OpenID_Signatory($this->store);
+ $this->encoder = new Auth_OpenID_SigningEncoder($this->signatory);
+ $this->decoder = new Auth_OpenID_Decoder($this);
$this->op_endpoint = $op_endpoint;
- $this->negotiator =& Auth_OpenID_getDefaultNegotiator();
+ $this->negotiator = Auth_OpenID_getDefaultNegotiator();
}
/**
@@ -1699,7 +1704,7 @@ class Auth_OpenID_Server {
{
if (method_exists($this, "openid_" . $request->mode)) {
$handler = array($this, "openid_" . $request->mode);
- return call_user_func($handler, $request);
+ return call_user_func($handler, &$request);
}
return null;
}
@@ -1707,7 +1712,7 @@ class Auth_OpenID_Server {
/**
* The callback for 'check_authentication' messages.
*/
- function openid_check_authentication(&$request)
+ function openid_check_authentication($request)
{
return $request->answer($this->signatory);
}
@@ -1715,7 +1720,7 @@ class Auth_OpenID_Server {
/**
* The callback for 'associate' messages.
*/
- function openid_associate(&$request)
+ function openid_associate($request)
{
$assoc_type = $request->assoc_type;
$session_type = $request->session->session_type;
@@ -1738,7 +1743,7 @@ class Auth_OpenID_Server {
* Encodes as response in the appropriate format suitable for
* sending to the user agent.
*/
- function encodeResponse(&$response)
+ function encodeResponse($response)
{
return $this->encoder->encode($response);
}
@@ -1757,4 +1762,4 @@ class Auth_OpenID_Server {
}
}
-?>
+
diff --git a/extlib/Auth/OpenID/ServerRequest.php b/extlib/Auth/OpenID/ServerRequest.php
index 33a8556ce..69222a5e0 100644
--- a/extlib/Auth/OpenID/ServerRequest.php
+++ b/extlib/Auth/OpenID/ServerRequest.php
@@ -34,4 +34,3 @@ class Auth_OpenID_ServerRequest {
}
}
-?> \ No newline at end of file
diff --git a/extlib/Auth/OpenID/TrustRoot.php b/extlib/Auth/OpenID/TrustRoot.php
index 4919a6065..000440b58 100644
--- a/extlib/Auth/OpenID/TrustRoot.php
+++ b/extlib/Auth/OpenID/TrustRoot.php
@@ -58,7 +58,7 @@ class Auth_OpenID_TrustRoot {
* @return The URL upon which relying party discovery should be
* run in order to verify the return_to URL
*/
- function buildDiscoveryURL($realm)
+ static function buildDiscoveryURL($realm)
{
$parsed = Auth_OpenID_TrustRoot::_parse($realm);
@@ -93,7 +93,7 @@ class Auth_OpenID_TrustRoot {
* @return mixed $parsed Either an associative array of trust root
* parts or false if parsing failed.
*/
- function _parse($trust_root)
+ static function _parse($trust_root)
{
$trust_root = Auth_OpenID_urinorm($trust_root);
if ($trust_root === null) {
@@ -199,7 +199,7 @@ class Auth_OpenID_TrustRoot {
* @param string $trust_root The trust root to check
* @return bool $sanity Whether the trust root looks OK
*/
- function isSane($trust_root)
+ static function isSane($trust_root)
{
$parts = Auth_OpenID_TrustRoot::_parse($trust_root);
if ($parts === false) {
@@ -269,7 +269,7 @@ class Auth_OpenID_TrustRoot {
* @return bool $matches Whether the URL matches against the
* trust root
*/
- function match($trust_root, $url)
+ static function match($trust_root, $url)
{
$trust_root_parsed = Auth_OpenID_TrustRoot::_parse($trust_root);
$url_parsed = Auth_OpenID_TrustRoot::_parse($url);
@@ -341,7 +341,7 @@ class Auth_OpenID_TrustRoot {
* @returns: The endpoint URL or None if the endpoint is not a
* relying party endpoint.
*/
-function filter_extractReturnURL(&$endpoint)
+function filter_extractReturnURL($endpoint)
{
if ($endpoint->matchTypes(array(Auth_OpenID_RP_RETURN_TO_URL_TYPE))) {
return $endpoint;
@@ -394,14 +394,14 @@ function Auth_OpenID_returnToMatches($allowed_return_to_urls, $return_to)
* Given a relying party discovery URL return a list of return_to
* URLs.
*/
-function Auth_OpenID_getAllowedReturnURLs($relying_party_url, &$fetcher,
+function Auth_OpenID_getAllowedReturnURLs($relying_party_url, $fetcher,
$discover_function=null)
{
if ($discover_function === null) {
$discover_function = array('Auth_Yadis_Yadis', 'discover');
}
- $xrds_parse_cb = array('Auth_OpenID_ServiceEndpoint', 'fromXRDS');
+ $xrds_parse_cb = array('Auth_OpenID_ServiceEndpoint', 'consumerFromXRDS');
list($rp_url_after_redirects, $endpoints) =
Auth_Yadis_getServiceEndpoints($relying_party_url, $xrds_parse_cb,
@@ -413,7 +413,7 @@ function Auth_OpenID_getAllowedReturnURLs($relying_party_url, &$fetcher,
}
call_user_func_array($discover_function,
- array($relying_party_url, $fetcher));
+ array($relying_party_url, &$fetcher));
$return_to_urls = array();
$matching_endpoints = Auth_OpenID_extractReturnURL($endpoints);
@@ -435,7 +435,7 @@ function Auth_OpenID_getAllowedReturnURLs($relying_party_url, &$fetcher,
*
* @return true if the return_to URL is valid for the realm
*/
-function Auth_OpenID_verifyReturnTo($realm_str, $return_to, &$fetcher,
+function Auth_OpenID_verifyReturnTo($realm_str, $return_to, $fetcher,
$_vrfy='Auth_OpenID_getAllowedReturnURLs')
{
$disco_url = Auth_OpenID_TrustRoot::buildDiscoveryURL($realm_str);
@@ -445,7 +445,7 @@ function Auth_OpenID_verifyReturnTo($realm_str, $return_to, &$fetcher,
}
$allowable_urls = call_user_func_array($_vrfy,
- array($disco_url, &$fetcher));
+ array($disco_url, $fetcher));
// The realm_str could not be parsed.
if ($allowable_urls === false) {
@@ -459,4 +459,3 @@ function Auth_OpenID_verifyReturnTo($realm_str, $return_to, &$fetcher,
}
}
-?> \ No newline at end of file
diff --git a/extlib/Auth/OpenID/URINorm.php b/extlib/Auth/OpenID/URINorm.php
index f821d836a..c051b550a 100644
--- a/extlib/Auth/OpenID/URINorm.php
+++ b/extlib/Auth/OpenID/URINorm.php
@@ -246,4 +246,4 @@ function Auth_OpenID_urinorm($uri)
return $scheme . '://' . $authority . $path . $query . $fragment;
}
-?>
+
diff --git a/extlib/Auth/Yadis/HTTPFetcher.php b/extlib/Auth/Yadis/HTTPFetcher.php
index 963b9a49a..148cde1b2 100644
--- a/extlib/Auth/Yadis/HTTPFetcher.php
+++ b/extlib/Auth/Yadis/HTTPFetcher.php
@@ -115,12 +115,40 @@ class Auth_Yadis_HTTPFetcher {
/**
* @access private
*/
- function _findRedirect($headers)
+ function _findRedirect($headers, $url)
{
foreach ($headers as $line) {
if (strpos(strtolower($line), "location: ") === 0) {
$parts = explode(" ", $line, 2);
- return $parts[1];
+ $loc = $parts[1];
+ $ppos = strpos($loc, "://");
+ if ($ppos === false || $ppos > strpos($loc, "/")) {
+ /* no host; add it */
+ $hpos = strpos($url, "://");
+ $prt = substr($url, 0, $hpos+3);
+ $url = substr($url, $hpos+3);
+ if (substr($loc, 0, 1) == "/") {
+ /* absolute path */
+ $fspos = strpos($url, "/");
+ if ($fspos) $loc = $prt.substr($url, 0, $fspos).$loc;
+ else $loc = $prt.$url.$loc;
+ } else {
+ /* relative path */
+ $pp = $prt;
+ while (1) {
+ $xpos = strpos($url, "/");
+ if ($xpos === false) break;
+ $apos = strpos($url, "?");
+ if ($apos !== false && $apos < $xpos) break;
+ $apos = strpos($url, "&");
+ if ($apos !== false && $apos < $xpos) break;
+ $pp .= substr($url, 0, $xpos+1);
+ $url = substr($url, $xpos+1);
+ }
+ $loc = $pp.$loc;
+ }
+ }
+ return $loc;
}
}
return null;
@@ -144,4 +172,3 @@ class Auth_Yadis_HTTPFetcher {
}
}
-?> \ No newline at end of file
diff --git a/extlib/Auth/Yadis/Manager.php b/extlib/Auth/Yadis/Manager.php
index d50cf7ad6..ee6f68bcb 100644
--- a/extlib/Auth/Yadis/Manager.php
+++ b/extlib/Auth/Yadis/Manager.php
@@ -387,11 +387,11 @@ class Auth_Yadis_Discovery {
* @param string $session_key_suffix The optional session key
* suffix override.
*/
- function Auth_Yadis_Discovery(&$session, $url,
+ function Auth_Yadis_Discovery($session, $url,
$session_key_suffix = null)
{
/// Initialize a discovery object
- $this->session =& $session;
+ $this->session = $session;
$this->url = $url;
if ($session_key_suffix === null) {
$session_key_suffix = $this->DEFAULT_SUFFIX;
@@ -405,7 +405,7 @@ class Auth_Yadis_Discovery {
* Return the next authentication service for the pair of
* user_input and session. This function handles fallback.
*/
- function getNextService($discover_cb, &$fetcher)
+ function getNextService($discover_cb, $fetcher)
{
$manager = $this->getManager();
if (!$manager || (!$manager->services)) {
@@ -413,7 +413,7 @@ class Auth_Yadis_Discovery {
list($yadis_url, $services) = call_user_func($discover_cb,
$this->url,
- $fetcher);
+ &$fetcher);
$manager = $this->createManager($services, $yadis_url);
}
@@ -466,7 +466,7 @@ class Auth_Yadis_Discovery {
* @param $force True if the manager should be returned regardless
* of whether it's a manager for $this->url.
*/
- function &getManager($force=false)
+ function getManager($force=false)
{
// Extract the YadisServiceManager for this object's URL and
// suffix from the session.
@@ -481,16 +481,13 @@ class Auth_Yadis_Discovery {
if ($manager && ($manager->forURL($this->url) || $force)) {
return $manager;
- } else {
- $unused = null;
- return $unused;
}
}
/**
* @access private
*/
- function &createManager($services, $yadis_url = null)
+ function createManager($services, $yadis_url = null)
{
$key = $this->getSessionKey();
if ($this->getManager()) {
@@ -504,10 +501,6 @@ class Auth_Yadis_Discovery {
$this->session->set($this->session_key,
serialize($loader->toSession($manager)));
return $manager;
- } else {
- // Oh, PHP.
- $unused = null;
- return $unused;
}
}
@@ -526,4 +519,3 @@ class Auth_Yadis_Discovery {
}
}
-?> \ No newline at end of file
diff --git a/extlib/Auth/Yadis/Misc.php b/extlib/Auth/Yadis/Misc.php
index 1134a4ff4..a5afa8e9a 100644
--- a/extlib/Auth/Yadis/Misc.php
+++ b/extlib/Auth/Yadis/Misc.php
@@ -56,4 +56,3 @@ function Auth_Yadis_startswith($s, $stuff)
return strpos($s, $stuff) === 0;
}
-?> \ No newline at end of file
diff --git a/extlib/Auth/Yadis/ParanoidHTTPFetcher.php b/extlib/Auth/Yadis/ParanoidHTTPFetcher.php
index 6a418260e..4da7c94c0 100644
--- a/extlib/Auth/Yadis/ParanoidHTTPFetcher.php
+++ b/extlib/Auth/Yadis/ParanoidHTTPFetcher.php
@@ -109,9 +109,9 @@ class Auth_Yadis_ParanoidHTTPFetcher extends Auth_Yadis_HTTPFetcher {
}
curl_setopt($c, CURLOPT_WRITEFUNCTION,
- array(&$this, "_writeData"));
+ array($this, "_writeData"));
curl_setopt($c, CURLOPT_HEADERFUNCTION,
- array(&$this, "_writeHeader"));
+ array($this, "_writeHeader"));
if ($extra_headers) {
curl_setopt($c, CURLOPT_HTTPHEADER, $extra_headers);
@@ -128,6 +128,10 @@ class Auth_Yadis_ParanoidHTTPFetcher extends Auth_Yadis_HTTPFetcher {
curl_setopt($c, CURLOPT_TIMEOUT, $off);
curl_setopt($c, CURLOPT_URL, $url);
+ if (defined('Auth_OpenID_VERIFY_HOST')) {
+ curl_setopt($c, CURLOPT_SSL_VERIFYPEER, true);
+ curl_setopt($c, CURLOPT_SSL_VERIFYHOST, 2);
+ }
curl_exec($c);
$code = curl_getinfo($c, CURLINFO_HTTP_CODE);
@@ -142,12 +146,17 @@ class Auth_Yadis_ParanoidHTTPFetcher extends Auth_Yadis_HTTPFetcher {
}
if (in_array($code, array(301, 302, 303, 307))) {
- $url = $this->_findRedirect($headers);
+ $url = $this->_findRedirect($headers, $url);
$redir = true;
} else {
$redir = false;
curl_close($c);
+ if (defined('Auth_OpenID_VERIFY_HOST') &&
+ $this->isHTTPS($url)) {
+ Auth_OpenID::log('OpenID: Verified SSL host %s using '.
+ 'curl/get', $url);
+ }
$new_headers = array();
foreach ($headers as $header) {
@@ -190,7 +199,12 @@ class Auth_Yadis_ParanoidHTTPFetcher extends Auth_Yadis_HTTPFetcher {
curl_setopt($c, CURLOPT_TIMEOUT, $this->timeout);
curl_setopt($c, CURLOPT_URL, $url);
curl_setopt($c, CURLOPT_WRITEFUNCTION,
- array(&$this, "_writeData"));
+ array($this, "_writeData"));
+
+ if (defined('Auth_OpenID_VERIFY_HOST')) {
+ curl_setopt($c, CURLOPT_SSL_VERIFYPEER, true);
+ curl_setopt($c, CURLOPT_SSL_VERIFYHOST, 2);
+ }
curl_exec($c);
@@ -198,9 +212,15 @@ class Auth_Yadis_ParanoidHTTPFetcher extends Auth_Yadis_HTTPFetcher {
if (!$code) {
Auth_OpenID::log("Got no response code when fetching %s", $url);
+ Auth_OpenID::log("CURL error (%s): %s",
+ curl_errno($c), curl_error($c));
return null;
}
+ if (defined('Auth_OpenID_VERIFY_HOST') && $this->isHTTPS($url)) {
+ Auth_OpenID::log('OpenID: Verified SSL host %s using '.
+ 'curl/post', $url);
+ }
$body = $this->data;
curl_close($c);
@@ -223,4 +243,3 @@ class Auth_Yadis_ParanoidHTTPFetcher extends Auth_Yadis_HTTPFetcher {
}
}
-?> \ No newline at end of file
diff --git a/extlib/Auth/Yadis/ParseHTML.php b/extlib/Auth/Yadis/ParseHTML.php
index 297ccbd2c..6f0f8b7e2 100644
--- a/extlib/Auth/Yadis/ParseHTML.php
+++ b/extlib/Auth/Yadis/ParseHTML.php
@@ -256,4 +256,3 @@ class Auth_Yadis_ParseHTML {
}
}
-?> \ No newline at end of file
diff --git a/extlib/Auth/Yadis/PlainHTTPFetcher.php b/extlib/Auth/Yadis/PlainHTTPFetcher.php
index 3e0ca2bb0..26890539a 100644
--- a/extlib/Auth/Yadis/PlainHTTPFetcher.php
+++ b/extlib/Auth/Yadis/PlainHTTPFetcher.php
@@ -122,7 +122,7 @@ class Auth_Yadis_PlainHTTPFetcher extends Auth_Yadis_HTTPFetcher {
$code = $http_code[1];
if (in_array($code, array('301', '302'))) {
- $url = $this->_findRedirect($headers);
+ $url = $this->_findRedirect($headers, $url);
$redir = true;
} else {
$redir = false;
@@ -246,4 +246,3 @@ class Auth_Yadis_PlainHTTPFetcher extends Auth_Yadis_HTTPFetcher {
}
}
-?> \ No newline at end of file
diff --git a/extlib/Auth/Yadis/XML.php b/extlib/Auth/Yadis/XML.php
index 81b2ce221..cf1f5c41b 100644
--- a/extlib/Auth/Yadis/XML.php
+++ b/extlib/Auth/Yadis/XML.php
@@ -310,20 +310,16 @@ $__Auth_Yadis_defaultParser = null;
* @param Auth_Yadis_XMLParser $parser An instance of a
* Auth_Yadis_XMLParser subclass.
*/
-function Auth_Yadis_setDefaultParser(&$parser)
+function Auth_Yadis_setDefaultParser($parser)
{
global $__Auth_Yadis_defaultParser;
- $__Auth_Yadis_defaultParser =& $parser;
+ $__Auth_Yadis_defaultParser = $parser;
}
function Auth_Yadis_getSupportedExtensions()
{
- return array(
- 'dom' => array('classname' => 'Auth_Yadis_dom',
- 'libname' => array('dom.so', 'dom.dll')),
- 'domxml' => array('classname' => 'Auth_Yadis_domxml',
- 'libname' => array('domxml.so', 'php_domxml.dll')),
- );
+ return array('dom' => 'Auth_Yadis_dom',
+ 'domxml' => 'Auth_Yadis_domxml');
}
/**
@@ -332,43 +328,25 @@ function Auth_Yadis_getSupportedExtensions()
* Auth_Yadis_setDefaultParser has been called, the parser used in
* that call will be returned instead.
*/
-function &Auth_Yadis_getXMLParser()
+function Auth_Yadis_getXMLParser()
{
global $__Auth_Yadis_defaultParser;
-
+
if (isset($__Auth_Yadis_defaultParser)) {
return $__Auth_Yadis_defaultParser;
}
-
- $p = null;
- $classname = null;
-
- $extensions = Auth_Yadis_getSupportedExtensions();
-
- // Return a wrapper for the resident implementation, if any.
- foreach ($extensions as $name => $params) {
- if (!extension_loaded($name)) {
- foreach ($params['libname'] as $libname) {
- if (@dl($libname)) {
- $classname = $params['classname'];
- }
- }
- } else {
- $classname = $params['classname'];
- }
- if (isset($classname)) {
- $p = new $classname();
- return $p;
- }
- }
-
- if (!isset($p)) {
- trigger_error('No XML parser was found', E_USER_ERROR);
- } else {
+
+ foreach(Auth_Yadis_getSupportedExtensions() as $extension => $classname)
+ {
+ if (extension_loaded($extension))
+ {
+ $p = new $classname();
Auth_Yadis_setDefaultParser($p);
+ return $p;
+ }
}
-
- return $p;
+
+ return false;
}
-?>
+
diff --git a/extlib/Auth/Yadis/XRDS.php b/extlib/Auth/Yadis/XRDS.php
index f14a7948e..1f5af96fb 100644
--- a/extlib/Auth/Yadis/XRDS.php
+++ b/extlib/Auth/Yadis/XRDS.php
@@ -255,11 +255,11 @@ class Auth_Yadis_XRDS {
* Instantiate a Auth_Yadis_XRDS object. Requires an XPath
* instance which has been used to parse a valid XRDS document.
*/
- function Auth_Yadis_XRDS(&$xmlParser, &$xrdNodes)
+ function Auth_Yadis_XRDS($xmlParser, $xrdNodes)
{
- $this->parser =& $xmlParser;
+ $this->parser = $xmlParser;
$this->xrdNode = $xrdNodes[count($xrdNodes) - 1];
- $this->allXrdNodes =& $xrdNodes;
+ $this->allXrdNodes = $xrdNodes;
$this->serviceList = array();
$this->_parse();
}
@@ -273,7 +273,7 @@ class Auth_Yadis_XRDS {
* @return mixed $xrds An instance of Auth_Yadis_XRDS or null,
* depending on the validity of $xml_string
*/
- function &parseXRDS($xml_string, $extra_ns_map = null)
+ static function parseXRDS($xml_string, $extra_ns_map = null)
{
$_null = null;
@@ -352,9 +352,9 @@ class Auth_Yadis_XRDS {
$services = $this->parser->evalXPath('xrd:Service', $this->xrdNode);
foreach ($services as $node) {
- $s =& new Auth_Yadis_Service();
+ $s = new Auth_Yadis_Service();
$s->element = $node;
- $s->parser =& $this->parser;
+ $s->parser = $this->parser;
$priority = $s->getPriority();
@@ -428,7 +428,8 @@ class Auth_Yadis_XRDS {
$matches = 0;
foreach ($filters as $filter) {
- if (call_user_func_array($filter, array($service))) {
+
+ if (call_user_func_array($filter, array(&$service))) {
$matches++;
if ($filter_mode == SERVICES_YADIS_MATCH_ANY) {
@@ -475,4 +476,3 @@ class Auth_Yadis_XRDS {
}
}
-?> \ No newline at end of file
diff --git a/extlib/Auth/Yadis/XRI.php b/extlib/Auth/Yadis/XRI.php
index 4e3462317..0143a692e 100644
--- a/extlib/Auth/Yadis/XRI.php
+++ b/extlib/Auth/Yadis/XRI.php
@@ -190,7 +190,7 @@ function Auth_Yadis_getCanonicalID($iname, $xrds)
// Now nodes are in reverse order.
$xrd_list = array_reverse($xrds->allXrdNodes);
- $parser =& $xrds->parser;
+ $parser = $xrds->parser;
$node = $xrd_list[0];
$canonicalID_nodes = $parser->evalXPath('xrd:CanonicalID', $node);
@@ -231,4 +231,4 @@ function Auth_Yadis_getCanonicalID($iname, $xrds)
return $canonicalID;
}
-?>
+
diff --git a/extlib/Auth/Yadis/XRIRes.php b/extlib/Auth/Yadis/XRIRes.php
index 4e8e8d037..5e1158735 100644
--- a/extlib/Auth/Yadis/XRIRes.php
+++ b/extlib/Auth/Yadis/XRIRes.php
@@ -8,9 +8,9 @@ require_once 'Auth/Yadis/XRDS.php';
require_once 'Auth/Yadis/XRI.php';
class Auth_Yadis_ProxyResolver {
- function Auth_Yadis_ProxyResolver(&$fetcher, $proxy_url = null)
+ function Auth_Yadis_ProxyResolver($fetcher, $proxy_url = null)
{
- $this->fetcher =& $fetcher;
+ $this->fetcher = $fetcher;
$this->proxy_url = $proxy_url;
if (!$this->proxy_url) {
$this->proxy_url = Auth_Yadis_getDefaultProxy();
@@ -69,4 +69,4 @@ class Auth_Yadis_ProxyResolver {
}
}
-?>
+
diff --git a/extlib/Auth/Yadis/Yadis.php b/extlib/Auth/Yadis/Yadis.php
index d89f77c6d..9ea2db7f9 100644
--- a/extlib/Auth/Yadis/Yadis.php
+++ b/extlib/Auth/Yadis/Yadis.php
@@ -105,7 +105,7 @@ class Auth_Yadis_DiscoveryResult {
function usedYadisLocation()
{
// Was the Yadis protocol's indirection used?
- return $this->normalized_uri != $this->xrds_uri;
+ return ($this->xrds_uri && $this->normalized_uri != $this->xrds_uri);
}
function isXRDS()
@@ -141,7 +141,7 @@ function Auth_Yadis_getServiceEndpoints($input_url, $xrds_parse_func,
}
$yadis_result = call_user_func_array($discover_func,
- array($input_url, $fetcher));
+ array($input_url, &$fetcher));
if ($yadis_result === null) {
return array($input_url, array());
@@ -196,7 +196,7 @@ function Auth_Yadis_getServiceEndpoints($input_url, $xrds_parse_func,
* The filter functions (whose names appear in the array passed to
* services()) take the following form:
*
- * <pre> function myFilter(&$service) {
+ * <pre> function myFilter($service) {
* // Query $service object here. Return true if the service
* // matches your query; false if not.
* }</pre>
@@ -207,7 +207,7 @@ function Auth_Yadis_getServiceEndpoints($input_url, $xrds_parse_func,
* this contrived example):
*
* <pre>
- * function URIMatcher(&$service) {
+ * function URIMatcher($service) {
* foreach ($service->getElements('xrd:URI') as $uri) {
* if (preg_match("/some_pattern/",
* $service->parser->content($uri))) {
@@ -250,7 +250,7 @@ class Auth_Yadis_Yadis {
* If Auth_Yadis_CURL_OVERRIDE is defined, this method will always
* return a {@link Auth_Yadis_PlainHTTPFetcher}.
*/
- function getHTTPFetcher($timeout = 20)
+ static function getHTTPFetcher($timeout = 20)
{
if (Auth_Yadis_Yadis::curlPresent() &&
(!defined('Auth_Yadis_CURL_OVERRIDE'))) {
@@ -261,7 +261,7 @@ class Auth_Yadis_Yadis {
return $fetcher;
}
- function curlPresent()
+ static function curlPresent()
{
return function_exists('curl_init');
}
@@ -269,7 +269,7 @@ class Auth_Yadis_Yadis {
/**
* @access private
*/
- function _getHeader($header_list, $names)
+ static function _getHeader($header_list, $names)
{
foreach ($header_list as $name => $value) {
foreach ($names as $n) {
@@ -285,7 +285,7 @@ class Auth_Yadis_Yadis {
/**
* @access private
*/
- function _getContentType($content_type_header)
+ static function _getContentType($content_type_header)
{
if ($content_type_header) {
$parts = explode(";", $content_type_header);
@@ -317,7 +317,7 @@ class Auth_Yadis_Yadis {
* Auth_Yadis_Yadis, depending on whether the discovery
* succeeded.
*/
- function discover($uri, &$fetcher,
+ static function discover($uri, $fetcher,
$extra_ns_map = null, $timeout = 20)
{
$result = new Auth_Yadis_DiscoveryResult($uri);
@@ -379,4 +379,4 @@ class Auth_Yadis_Yadis {
}
}
-?>
+
diff --git a/extlib/OAuth.php b/extlib/OAuth.php
index 648627b57..04984d5fa 100644
--- a/extlib/OAuth.php
+++ b/extlib/OAuth.php
@@ -54,6 +54,24 @@ class OAuthSignatureMethod {/*{{{*/
public function check_signature(&$request, $consumer, $token, $signature) {
$built = $this->build_signature($request, $consumer, $token);
return $built == $signature;
+
+ // Check for zero length, although unlikely here
+ if (strlen($built) == 0 || strlen($signature) == 0) {
+ return false;
+ }
+
+ if (strlen($built) != strlen($signature)) {
+ return false;
+ }
+
+ $result = 0;
+
+ // Avoid a timing leak with a (hopefully) time insensitive compare
+ for ($i = 0; $i < strlen($signature); $i++) {
+ $result |= ord($built{$i}) ^ ord($signature{$i});
+ }
+
+ return $result == 0;
}
}/*}}}*/
diff --git a/extlib/libomb/base_url_xrds_mapper.php b/extlib/libomb/base_url_xrds_mapper.php
index 645459583..d45d6d69f 100755
--- a/extlib/libomb/base_url_xrds_mapper.php
+++ b/extlib/libomb/base_url_xrds_mapper.php
@@ -1,14 +1,6 @@
<?php
-
-require_once 'xrds_mapper.php';
-require_once 'constants.php';
-
/**
- * Map XRDS actions to URLs using base URLs.
- *
- * This interface specifies classes which write the XRDS file announcing
- * the OMB server. An instance of an implementing class should be passed to
- * OMB_Service_Provider->writeXRDS.
+ * This file is part of libomb
*
* PHP version 5
*
@@ -25,27 +17,56 @@ require_once 'constants.php';
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
- * @package OMB
- * @author Adrian Lang <mail@adrianlang.de>
- * @copyright 2009 Adrian Lang
- * @license http://www.gnu.org/licenses/agpl.html GNU AGPL 3.0
- **/
+ * @package OMB
+ * @author Adrian Lang <mail@adrianlang.de>
+ * @license http://www.gnu.org/licenses/agpl.html GNU AGPL 3.0
+ * @version 0.1a-20090828
+ * @link http://adrianlang.de/libomb
+ */
-class OMB_Base_URL_XRDS_Mapper implements OMB_XRDS_Mapper {
+require_once 'xrds_mapper.php';
+require_once 'constants.php';
- protected $urls;
+/**
+ * Map XRDS actions to URLs using base URLs
+ *
+ * This class realizes a simple mapping of action URIs to handler URLs. The
+ * target URLs are constructed using a base URL.
+ */
+class OMB_Base_URL_XRDS_Mapper implements OMB_XRDS_Mapper
+{
+ protected $urls;
- public function __construct($oauth_base, $omb_base) {
- $this->urls = array(
- OAUTH_ENDPOINT_REQUEST => $oauth_base . 'requesttoken',
- OAUTH_ENDPOINT_AUTHORIZE => $oauth_base . 'userauthorization',
- OAUTH_ENDPOINT_ACCESS => $oauth_base . 'accesstoken',
- OMB_ENDPOINT_POSTNOTICE => $omb_base . 'postnotice',
- OMB_ENDPOINT_UPDATEPROFILE => $omb_base . 'updateprofile');
- }
+ /**
+ * Constructor
+ *
+ * Initialize the XRDS mapper with base URLs for OAuth and OMB endpoints.
+ *
+ * @param string $oauth_base The base URL for OAuth endpoints
+ * @param string $omb_base The base URL for OMB endpoints
+ */
+ public function __construct($oauth_base, $omb_base)
+ {
+ $this->urls = array(
+ OAUTH_ENDPOINT_REQUEST => $oauth_base . 'requesttoken',
+ OAUTH_ENDPOINT_AUTHORIZE => $oauth_base . 'userauthorization',
+ OAUTH_ENDPOINT_ACCESS => $oauth_base . 'accesstoken',
+ OMB_ENDPOINT_POSTNOTICE => $omb_base . 'postnotice',
+ OMB_ENDPOINT_UPDATEPROFILE => $omb_base . 'updateprofile');
+ }
- public function getURL($action) {
- return $this->urls[$action];
- }
+ /**
+ * Fetch an URL for a specified action
+ *
+ * Returns the action URL for an action specified by the endpoint URI.
+ *
+ * @param string $action The endpoint URI
+ *
+ * @return string The action URL
+ */
+ public function getURL($action)
+ {
+ return $this->urls[$action];
+ }
}
?>
diff --git a/extlib/libomb/constants.php b/extlib/libomb/constants.php
index a097443ac..2f8c0e514 100644
--- a/extlib/libomb/constants.php
+++ b/extlib/libomb/constants.php
@@ -20,15 +20,16 @@
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
- * @package OMB
- * @author Adrian Lang <mail@adrianlang.de>
- * @copyright 2009 Adrian Lang
- * @license http://www.gnu.org/licenses/agpl.html GNU AGPL 3.0
- **/
+ * @package OMB
+ * @author Adrian Lang <mail@adrianlang.de>
+ * @license http://www.gnu.org/licenses/agpl.html GNU AGPL 3.0
+ * @version 0.1a-20090828
+ * @link http://adrianlang.de/libomb
+ */
/**
* The OMB constants.
- **/
+ */
define('OMB_VERSION_01', 'http://openmicroblogging.org/protocol/0.1');
@@ -40,7 +41,7 @@ define('OMB_ENDPOINT_POSTNOTICE', OMB_VERSION . '/postNotice');
/**
* The OAuth constants.
- **/
+ */
define('OAUTH_NAMESPACE', 'http://oauth.net/core/1.0/');
diff --git a/extlib/libomb/datastore.php b/extlib/libomb/datastore.php
index ab52de547..d67aafcc5 100755
--- a/extlib/libomb/datastore.php
+++ b/extlib/libomb/datastore.php
@@ -1,4 +1,28 @@
<?php
+/**
+ * This file is part of libomb
+ *
+ * PHP version 5
+ *
+ * LICENSE: This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * @package OMB
+ * @author Adrian Lang <mail@adrianlang.de>
+ * @license http://www.gnu.org/licenses/agpl.html GNU AGPL 3.0
+ * @version 0.1a-20090828
+ * @link http://adrianlang.de/libomb
+ */
require_once 'OAuth.php';
@@ -27,174 +51,162 @@ require_once 'OAuth.php';
* Most of the parameters passed to these methods are unescaped and unverified
* user input. Therefore they should be handled with extra care to avoid
* security problems like SQL injections.
- *
- * PHP version 5
- *
- * LICENSE: This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- * @package OMB
- * @author Adrian Lang <mail@adrianlang.de>
- * @copyright 2009 Adrian Lang
- * @license http://www.gnu.org/licenses/agpl.html GNU AGPL 3.0
- **/
-
-class OMB_Datastore extends OAuthDataStore {
+ */
+class OMB_Datastore extends OAuthDataStore
+{
- /*********
- * OAUTH *
- *********/
+ /*********
+ * OAUTH *
+ *********/
- /**
- * Revoke specified OAuth token
- *
- * Revokes the authorization token specified by $token_key.
- * Throws exceptions in case of error.
- *
- * @param string $token_key The key of the token to be revoked
- *
- * @access public
- **/
- public function revoke_token($token_key) {
- throw new Exception();
- }
+ /**
+ * Revoke specified OAuth token
+ *
+ * Revokes the authorization token specified by $token_key.
+ * Throws exceptions in case of error.
+ *
+ * @param string $token_key The key of the token to be revoked
+ *
+ * @access public
+ */
+ public function revoke_token($token_key)
+ {
+ throw new Exception();
+ }
- /**
- * Authorize specified OAuth token
- *
- * Authorizes the authorization token specified by $token_key.
- * Throws exceptions in case of error.
- *
- * @param string $token_key The key of the token to be authorized
- *
- * @access public
- **/
- public function authorize_token($token_key) {
- throw new Exception();
- }
+ /**
+ * Authorize specified OAuth token
+ *
+ * Authorizes the authorization token specified by $token_key.
+ * Throws exceptions in case of error.
+ *
+ * @param string $token_key The key of the token to be authorized
+ *
+ * @access public
+ */
+ public function authorize_token($token_key)
+ {
+ throw new Exception();
+ }
- /*********
- * OMB *
- *********/
+ /*********
+ * OMB *
+ *********/
- /**
- * Get profile by identifying URI
- *
- * Returns an OMB_Profile object representing the OMB profile identified by
- * $identifier_uri.
- * Returns null if there is no such OMB profile.
- * Throws exceptions in case of other error.
- *
- * @param string $identifier_uri The OMB identifier URI specifying the
- * requested profile
- *
- * @access public
- *
- * @return OMB_Profile The corresponding profile
- **/
- public function getProfile($identifier_uri) {
- throw new Exception();
- }
+ /**
+ * Get profile by identifying URI
+ *
+ * Returns an OMB_Profile object representing the OMB profile identified by
+ * $identifier_uri.
+ * Returns null if there is no such OMB profile.
+ * Throws exceptions in case of other error.
+ *
+ * @param string $identifier_uri The OMB identifier URI specifying the
+ * requested profile
+ *
+ * @access public
+ *
+ * @return OMB_Profile The corresponding profile
+ */
+ public function getProfile($identifier_uri)
+ {
+ throw new Exception();
+ }
- /**
- * Save passed profile
- *
- * Stores the OMB profile $profile. Overwrites an existing entry.
- * Throws exceptions in case of error.
- *
- * @param OMB_Profile $profile The OMB profile which should be saved
- *
- * @access public
- **/
- public function saveProfile($profile) {
- throw new Exception();
- }
+ /**
+ * Save passed profile
+ *
+ * Stores the OMB profile $profile. Overwrites an existing entry.
+ * Throws exceptions in case of error.
+ *
+ * @param OMB_Profile $profile The OMB profile which should be saved
+ *
+ * @access public
+ */
+ public function saveProfile($profile)
+ {
+ throw new Exception();
+ }
- /**
- * Save passed notice
- *
- * Stores the OMB notice $notice. The datastore may change the passed notice.
- * This might by neccessary for URIs depending on a database key. Note that
- * it is the user’s duty to present a mechanism for his OMB_Datastore to
- * appropriately change his OMB_Notice. TODO: Ugly.
- * Throws exceptions in case of error.
- *
- * @param OMB_Notice $notice The OMB notice which should be saved
- *
- * @access public
- **/
- public function saveNotice(&$notice) {
- throw new Exception();
- }
+ /**
+ * Save passed notice
+ *
+ * Stores the OMB notice $notice. The datastore may change the passed
+ * notice. This might by necessary for URIs depending on a database key.
+ * Note that it is the user’s duty to present a mechanism for his
+ * OMB_Datastore to appropriately change his OMB_Notice.
+ * Throws exceptions in case of error.
+ *
+ * @param OMB_Notice &$notice The OMB notice which should be saved
+ *
+ * @access public
+ */
+ public function saveNotice(&$notice)
+ {
+ throw new Exception();
+ }
- /**
- * Get subscriptions of a given profile
- *
- * Returns an array containing subscription informations for the specified
- * profile. Every array entry should in turn be an array with keys
- * 'uri´: The identifier URI of the subscriber
- * 'token´: The subscribe token
- * 'secret´: The secret token
- * Throws exceptions in case of error.
- *
- * @param string $subscribed_user_uri The OMB identifier URI specifying the
- * subscribed profile
- *
- * @access public
- *
- * @return mixed An array containing the subscriptions or 0 if no
- * subscription has been found.
- **/
- public function getSubscriptions($subscribed_user_uri) {
- throw new Exception();
- }
+ /**
+ * Get subscriptions of a given profile
+ *
+ * Returns an array containing subscription informations for the specified
+ * profile. Every array entry should in turn be an array with keys
+ * 'uri´: The identifier URI of the subscriber
+ * 'token´: The subscribe token
+ * 'secret´: The secret token
+ * Throws exceptions in case of error.
+ *
+ * @param string $subscribed_user_uri The OMB identifier URI specifying the
+ * subscribed profile
+ *
+ * @access public
+ *
+ * @return mixed An array containing the subscriptions or 0 if no
+ * subscription has been found.
+ */
+ public function getSubscriptions($subscribed_user_uri)
+ {
+ throw new Exception();
+ }
- /**
- * Delete a subscription
- *
- * Deletes the subscription from $subscriber_uri to $subscribed_user_uri.
- * Throws exceptions in case of error.
- *
- * @param string $subscriber_uri The OMB identifier URI specifying the
- * subscribing profile
- *
- * @param string $subscribed_user_uri The OMB identifier URI specifying the
- * subscribed profile
- *
- * @access public
- **/
- public function deleteSubscription($subscriber_uri, $subscribed_user_uri) {
- throw new Exception();
- }
+ /**
+ * Delete a subscription
+ *
+ * Deletes the subscription from $subscriber_uri to $subscribed_user_uri.
+ * Throws exceptions in case of error.
+ *
+ * @param string $subscriber_uri The OMB identifier URI specifying the
+ * subscribing profile
+ *
+ * @param string $subscribed_user_uri The OMB identifier URI specifying the
+ * subscribed profile
+ *
+ * @access public
+ */
+ public function deleteSubscription($subscriber_uri, $subscribed_user_uri)
+ {
+ throw new Exception();
+ }
- /**
- * Save a subscription
- *
- * Saves the subscription from $subscriber_uri to $subscribed_user_uri.
- * Throws exceptions in case of error.
- *
- * @param string $subscriber_uri The OMB identifier URI specifying
- * the subscribing profile
- *
- * @param string $subscribed_user_uri The OMB identifier URI specifying
- * the subscribed profile
- * @param OAuthToken $token The access token
- *
- * @access public
- **/
- public function saveSubscription($subscriber_uri, $subscribed_user_uri,
- $token) {
- throw new Exception();
- }
+ /**
+ * Save a subscription
+ *
+ * Saves the subscription from $subscriber_uri to $subscribed_user_uri.
+ * Throws exceptions in case of error.
+ *
+ * @param string $subscriber_uri The OMB identifier URI specifying
+ * the subscribing profile
+ *
+ * @param string $subscribed_user_uri The OMB identifier URI specifying
+ * the subscribed profile
+ * @param OAuthToken $token The access token
+ *
+ * @access public
+ */
+ public function saveSubscription($subscriber_uri, $subscribed_user_uri,
+ $token)
+ {
+ throw new Exception();
+ }
}
?>
diff --git a/extlib/libomb/helper.php b/extlib/libomb/helper.php
index a1f21f268..08e6e7ab4 100644
--- a/extlib/libomb/helper.php
+++ b/extlib/libomb/helper.php
@@ -1,11 +1,6 @@
<?php
-
-require_once 'Validate.php';
-
/**
- * Helper functions for libomb
- *
- * This file contains helper functions for libomb.
+ * This file is part of libomb
*
* PHP version 5
*
@@ -22,78 +17,88 @@ require_once 'Validate.php';
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
- * @package OMB
- * @author Adrian Lang <mail@adrianlang.de>
- * @copyright 2009 Adrian Lang
- * @license http://www.gnu.org/licenses/agpl.html GNU AGPL 3.0
- **/
+ * @package OMB
+ * @author Adrian Lang <mail@adrianlang.de>
+ * @license http://www.gnu.org/licenses/agpl.html GNU AGPL 3.0
+ * @version 0.1a-20090828
+ * @link http://adrianlang.de/libomb
+ */
-class OMB_Helper {
+require_once 'Validate.php';
- /**
- * Non-scalar constants
- *
- * The set of OMB and OAuth Services an OMB Server has to implement.
- */
+/**
+ * Helper functions for libomb
+ *
+ * This class contains helper functions for libomb.
+ */
+class OMB_Helper
+{
- public static $OMB_SERVICES =
- array(OMB_ENDPOINT_UPDATEPROFILE, OMB_ENDPOINT_POSTNOTICE);
- public static $OAUTH_SERVICES =
- array(OAUTH_ENDPOINT_REQUEST, OAUTH_ENDPOINT_AUTHORIZE, OAUTH_ENDPOINT_ACCESS);
+ /**
+ * Non-scalar constants
+ *
+ * The set of OMB and OAuth Services an OMB Server has to implement.
+ */
- /**
- * Validate URL
- *
- * Basic URL validation. Currently http, https, ftp and gopher are supported
- * schemes.
- *
- * @param string $url The URL which is to be validated.
- *
- * @return bool Whether URL is valid.
- *
- * @access public
- */
- public static function validateURL($url) {
- return Validate::uri($url, array('allowed_schemes' => array('http', 'https',
- 'gopher', 'ftp')));
- }
+ public static $OMB_SERVICES = array(OMB_ENDPOINT_UPDATEPROFILE,
+ OMB_ENDPOINT_POSTNOTICE);
+ public static $OAUTH_SERVICES = array(OAUTH_ENDPOINT_REQUEST,
+ OAUTH_ENDPOINT_AUTHORIZE,
+ OAUTH_ENDPOINT_ACCESS);
- /**
- * Validate Media type
- *
- * Basic Media type validation. Checks for valid maintype and correct format.
- *
- * @param string $mediatype The Media type which is to be validated.
- *
- * @return bool Whether media type is valid.
- *
- * @access public
- */
- public static function validateMediaType($mediatype) {
- if (0 === preg_match('/^(\w+)\/([\w\d-+.]+)$/', $mediatype, $subtypes)) {
- return false;
+ /**
+ * Validate URL
+ *
+ * Basic URL validation. Currently http, https, ftp and gopher are supported
+ * schemes.
+ *
+ * @param string $url The URL which is to be validated.
+ *
+ * @return bool Whether URL is valid.
+ *
+ * @access public
+ */
+ public static function validateURL($url)
+ {
+ return Validate::uri($url, array('allowed_schemes' => array('http',
+ 'https', 'gopher', 'ftp')));
}
- if (!in_array(strtolower($subtypes[1]), array('application', 'audio', 'image',
- 'message', 'model', 'multipart', 'text', 'video'))) {
- return false;
+
+ /**
+ * Validate Media type
+ *
+ * Basic Media type validation. Checks for valid maintype and correct
+ * format.
+ *
+ * @param string $mediatype The Media type which is to be validated.
+ *
+ * @return bool Whether media type is valid.
+ *
+ * @access public
+ */
+ public static function validateMediaType($mediatype)
+ {
+ return preg_match('/^(\w+)\/([\w\d-+.]+)$/', $mediatype, $subtypes) > 0
+ &&
+ in_array(strtolower($subtypes[1]), array('application', 'audio',
+ 'image', 'message', 'model', 'multipart', 'text', 'video'));
}
- return true;
- }
- /**
- * Remove escaping from request parameters
- *
- * Neutralise the evil effects of magic_quotes_gpc in the current request.
- * This is used before handing a request off to OAuthRequest::from_request.
- * Many thanks to Ciaran Gultnieks for this fix.
- *
- * @access public
- */
- public static function removeMagicQuotesFromRequest() {
- if(get_magic_quotes_gpc() == 1) {
- $_POST = array_map('stripslashes', $_POST);
- $_GET = array_map('stripslashes', $_GET);
+ /**
+ * Remove escaping from request parameters
+ *
+ * Neutralise the evil effects of magic_quotes_gpc in the current request.
+ * This is used before handing a request off to OAuthRequest::from_request.
+ * Many thanks to Ciaran Gultnieks for this fix.
+ *
+ * @access public
+ */
+ public static function removeMagicQuotesFromRequest()
+ {
+ if (get_magic_quotes_gpc() === 1) {
+ $_POST = array_map('stripslashes', $_POST);
+ $_GET = array_map('stripslashes', $_GET);
+ }
}
- }
}
?>
diff --git a/extlib/libomb/invalidparameterexception.php b/extlib/libomb/invalidparameterexception.php
index 163e1dd4c..d95c7022c 100755
--- a/extlib/libomb/invalidparameterexception.php
+++ b/extlib/libomb/invalidparameterexception.php
@@ -1,8 +1,6 @@
<?php
/**
- * Exception stating that a passed parameter is invalid
- *
- * This exception is raised when a parameter does not obey the OMB standard.
+ * This file is part of libomb
*
* PHP version 5
*
@@ -19,14 +17,36 @@
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
- * @package OMB
- * @author Adrian Lang <mail@adrianlang.de>
- * @copyright 2009 Adrian Lang
- * @license http://www.gnu.org/licenses/agpl.html GNU AGPL 3.0
- **/
-class OMB_InvalidParameterException extends Exception {
- public function __construct($value, $type, $parameter) {
- parent::__construct("Invalid value $value for parameter $parameter in $type");
- }
+ * @package OMB
+ * @author Adrian Lang <mail@adrianlang.de>
+ * @license http://www.gnu.org/licenses/agpl.html GNU AGPL 3.0
+ * @version 0.1a-20090828
+ * @link http://adrianlang.de/libomb
+ */
+
+/**
+ * Exception stating that a passed parameter is invalid
+ *
+ * This exception is raised when a parameter does not obey the OMB standard.
+ */
+class OMB_InvalidParameterException extends Exception
+{
+ /**
+ * Constructor
+ *
+ * Creates a new exception based on a parameter name, value, and object
+ * type.
+ *
+ * @param string $value The wrong value passed
+ * @param string $type The object type the parameter belongs to;
+ * Currently OMB uses profiles and notices
+ * @param string $parameter The name of the parameter the wrong value has
+ * been passed for
+ */
+ public function __construct($value, $type, $parameter)
+ {
+ parent::__construct("Invalid value ‘${value}’ for parameter " .
+ "‘${parameter}’ in $type");
+ }
}
?>
diff --git a/extlib/libomb/invalidyadisexception.php b/extlib/libomb/invalidyadisexception.php
index 797b7b95b..dc61a13ad 100755
--- a/extlib/libomb/invalidyadisexception.php
+++ b/extlib/libomb/invalidyadisexception.php
@@ -1,9 +1,6 @@
<?php
/**
- * Exception stating that a requested url does not resolve to a valid yadis
- *
- * This exception is raised when OMB_Service is not able to discover a valid
- * yadis location with XRDS.
+ * This file is part of libomb
*
* PHP version 5
*
@@ -20,12 +17,21 @@
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
- * @package OMB
- * @author Adrian Lang <mail@adrianlang.de>
- * @copyright 2009 Adrian Lang
- * @license http://www.gnu.org/licenses/agpl.html GNU AGPL 3.0
- **/
-class OMB_InvalidYadisException extends Exception {
+ * @package OMB
+ * @author Adrian Lang <mail@adrianlang.de>
+ * @license http://www.gnu.org/licenses/agpl.html GNU AGPL 3.0
+ * @version 0.1a-20090828
+ * @link http://adrianlang.de/libomb
+ */
+
+/**
+ * Exception stating that a requested url does not resolve to a valid yadis
+ *
+ * This exception is raised when OMB_Service is not able to discover a valid
+ * yadis location with XRDS.
+ */
+class OMB_InvalidYadisException extends Exception
+{
}
?>
diff --git a/extlib/libomb/notice.php b/extlib/libomb/notice.php
index 9ac36640a..4963597b2 100755
--- a/extlib/libomb/notice.php
+++ b/extlib/libomb/notice.php
@@ -1,15 +1,6 @@
<?php
-require_once 'invalidparameterexception.php';
-require_once 'Validate.php';
-require_once 'helper.php';
-
/**
- * OMB Notice representation
- *
- * This class represents an OMB notice.
- *
- * Do not call the setters with null values. Instead, if you want to delete a
- * field, pass an empty string. The getters will return null for empty fields.
+ * This file is part of libomb
*
* PHP version 5
*
@@ -26,247 +17,278 @@ require_once 'helper.php';
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
- * @package OMB
- * @author Adrian Lang <mail@adrianlang.de>
- * @copyright 2009 Adrian Lang
- * @license http://www.gnu.org/licenses/agpl.html GNU AGPL 3.0
- **/
-
-class OMB_Notice {
- protected $author;
- protected $uri;
- protected $content;
- protected $url;
- protected $license_url; /* url is an own addition for clarification. */
- protected $seealso_url; /* url is an own addition for clarification. */
- protected $seealso_disposition;
- protected $seealso_mediatype;
- protected $seealso_license_url; /* url is an addition for clarification. */
-
- /* The notice as OMB param array. Cached and rebuild on usage.
- false while outdated. */
- protected $param_array;
-
- /**
- * Constructor for OMB_Notice
- *
- * Initializes the OMB_Notice object with author, uri and content.
- * These parameters are mandatory for postNotice.
- *
- * @param object $author An OMB_Profile object representing the author of the
- * notice.
- * @param string $uri The notice URI as defined by the OMB. A unique and
- * unchanging identifier for a notice.
- * @param string $content The content of the notice. 140 chars recommended,
- * but there is no limit.
- *
- * @access public
- */
- public function __construct($author, $uri, $content) {
- $this->content = $content;
- if (is_null($author)) {
- throw new OMB_InvalidParameterException('', 'notice', 'omb_listenee');
- }
- $this->author = $author;
+ * @package OMB
+ * @author Adrian Lang <mail@adrianlang.de>
+ * @license http://www.gnu.org/licenses/agpl.html GNU AGPL 3.0
+ * @version 0.1a-20090828
+ * @link http://adrianlang.de/libomb
+ */
- if (!Validate::uri($uri)) {
- throw new OMB_InvalidParameterException($uri, 'notice', 'omb_notice');
- }
- $this->uri = $uri;
-
- $this->param_array = false;
- }
-
- /**
- * Returns the notice as array
- *
- * The method returns an array which contains the whole notice as array. The
- * array is cached and only rebuilt on changes of the notice.
- * Empty optional values are not passed.
- *
- * @access public
- * @returns array The notice as parameter array
- */
- public function asParameters() {
- if ($this->param_array !== false) {
- return $this->param_array;
+require_once 'invalidparameterexception.php';
+require_once 'Validate.php';
+require_once 'helper.php';
+
+/**
+ * OMB Notice representation
+ *
+ * This class represents an OMB notice.
+ *
+ * Do not call the setters with null values. Instead, if you want to delete a
+ * field, pass an empty string. The getters will return null for empty fields.
+ */
+class OMB_Notice
+{
+ protected $author;
+ protected $uri;
+ protected $content;
+ protected $url;
+ protected $license_url; /* url is an own addition for clarification. */
+ protected $seealso_url; /* url is an own addition for clarification. */
+ protected $seealso_disposition;
+ protected $seealso_mediatype;
+ protected $seealso_license_url; /* url is an addition for clarification. */
+
+ /* The notice as OMB param array. Cached and rebuild on usage.
+ false while outdated. */
+ protected $param_array;
+
+ /**
+ * Constructor for OMB_Notice
+ *
+ * Initializes the OMB_Notice object with author, uri and content.
+ * These parameters are mandatory for postNotice.
+ *
+ * @param object $author An OMB_Profile object representing the author of
+ * the notice.
+ * @param string $uri The notice URI as defined by the OMB. A unique and
+ * never changing identifier for a notice.
+ * @param string $content The content of the notice. 140 chars recommended,
+ * but there is no limit.
+ *
+ * @access public
+ */
+ public function __construct($author, $uri, $content)
+ {
+ $this->content = $content;
+ if (is_null($author)) {
+ throw new OMB_InvalidParameterException('', 'notice', 'omb_listenee');
+ }
+ $this->author = $author;
+
+ if (!Validate::uri($uri)) {
+ throw new OMB_InvalidParameterException($uri, 'notice', 'omb_notice');
+ }
+ $this->uri = $uri;
+
+ $this->param_array = false;
}
- $this->param_array = array(
- 'omb_notice' => $this->uri,
- 'omb_notice_content' => $this->content);
+ /**
+ * Return the notice as array
+ *
+ * Returns an array which contains the whole notice as array. The array is
+ * cached and only rebuilt on changes of the notice.
+ * Empty optional values are not passed.
+ *
+ * @access public
+ * @return array The notice as parameter array
+ */
+ public function asParameters()
+ {
+ if ($this->param_array !== false) {
+ return $this->param_array;
+ }
+
+ $this->param_array = array(
+ 'omb_notice' => $this->uri,
+ 'omb_notice_content' => $this->content);
+
+ if (!is_null($this->url))
+ $this->param_array['omb_notice_url'] = $this->url;
+
+ if (!is_null($this->license_url))
+ $this->param_array['omb_notice_license'] = $this->license_url;
+
+ if (!is_null($this->seealso_url)) {
+ $this->param_array['omb_seealso'] = $this->seealso_url;
+
+ /* This is actually a free interpretation of the OMB standard. We
+ assume that additional seealso parameters are not of any use if
+ seealso itself is not set. */
+ if (!is_null($this->seealso_disposition))
+ $this->param_array['omb_seealso_disposition'] =
+ $this->seealso_disposition;
+
+ if (!is_null($this->seealso_mediatype))
+ $this->param_array['omb_seealso_mediatype'] =
+ $this->seealso_mediatype;
- if (!is_null($this->url))
- $this->param_array['omb_notice_url'] = $this->url;
+ if (!is_null($this->seealso_license_url))
+ $this->param_array['omb_seealso_license'] =
+ $this->seealso_license_url;
+ }
+ return $this->param_array;
+ }
- if (!is_null($this->license_url))
- $this->param_array['omb_notice_license'] = $this->license_url;
+ /**
+ * Build an OMB_Notice object from array
+ *
+ * Builds an OMB_Notice object from the passed parameters array. The array
+ * MUST provide a notice URI and content. The array fields HAVE TO be named
+ * according to the OMB standard, i. e. omb_notice_* and omb_seealso_*.
+ * Values are handled as not passed if the corresponding array fields are
+ * not set or the empty string.
+ *
+ * @param object $author An OMB_Profile object representing the author
+ * of the notice.
+ * @param string $parameters An array containing the notice parameters.
+ *
+ * @access public
+ *
+ * @returns OMB_Notice The built OMB_Notice.
+ */
+ public static function fromParameters($author, $parameters)
+ {
+ $notice = new OMB_Notice($author, $parameters['omb_notice'],
+ $parameters['omb_notice_content']);
+
+ if (isset($parameters['omb_notice_url'])) {
+ $notice->setURL($parameters['omb_notice_url']);
+ }
+
+ if (isset($parameters['omb_notice_license'])) {
+ $notice->setLicenseURL($parameters['omb_notice_license']);
+ }
+
+ if (isset($parameters['omb_seealso'])) {
+ $notice->setSeealsoURL($parameters['omb_seealso']);
+ }
+
+ if (isset($parameters['omb_seealso_disposition'])) {
+ $notice->setSeealsoDisposition($parameters['omb_seealso_disposition']);
+ }
+
+ if (isset($parameters['omb_seealso_mediatype'])) {
+ $notice->setSeealsoMediatype($parameters['omb_seealso_mediatype']);
+ }
+
+ if (isset($parameters['omb_seealso_license'])) {
+ $notice->setSeealsoLicenseURL($parameters['omb_seealso_license']);
+ }
+ return $notice;
+ }
- if (!is_null($this->seealso_url)) {
- $this->param_array['omb_seealso'] = $this->seealso_url;
+ public function getAuthor()
+ {
+ return $this->author;
+ }
- /* This is actually a free interpretation of the OMB standard. We assume
- that additional seealso parameters are not of any use if seealso itself
- is not set. */
- if (!is_null($this->seealso_disposition))
- $this->param_array['omb_seealso_disposition'] =
- $this->seealso_disposition;
+ public function getIdentifierURI()
+ {
+ return $this->uri;
+ }
- if (!is_null($this->seealso_mediatype))
- $this->param_array['omb_seealso_mediatype'] = $this->seealso_mediatype;
+ public function getContent()
+ {
+ return $this->content;
+ }
- if (!is_null($this->seealso_license_url))
- $this->param_array['omb_seealso_license'] = $this->seealso_license_url;
+ public function getURL()
+ {
+ return $this->url;
}
- return $this->param_array;
- }
-
- /**
- * Builds an OMB_Notice object from array
- *
- * The method builds an OMB_Notice object from the passed parameters array.
- * The array MUST provide a notice URI and content. The array fields HAVE TO
- * be named according to the OMB standard, i. e. omb_notice_* and
- * omb_seealso_*. Values are handled as not passed if the corresponding array
- * fields are not set or the empty string.
- *
- * @param object $author An OMB_Profile object representing the author of
- * the notice.
- * @param string $parameters An array containing the notice parameters.
- *
- * @access public
- *
- * @returns OMB_Notice The built OMB_Notice.
- */
- public static function fromParameters($author, $parameters) {
- $notice = new OMB_Notice($author, $parameters['omb_notice'],
- $parameters['omb_notice_content']);
-
- if (isset($parameters['omb_notice_url'])) {
- $notice->setURL($parameters['omb_notice_url']);
+
+ public function getLicenseURL()
+ {
+ return $this->license_url;
}
- if (isset($parameters['omb_notice_license'])) {
- $notice->setLicenseURL($parameters['omb_notice_license']);
+ public function getSeealsoURL()
+ {
+ return $this->seealso_url;
}
- if (isset($parameters['omb_seealso'])) {
- $notice->setSeealsoURL($parameters['omb_seealso']);
+ public function getSeealsoDisposition()
+ {
+ return $this->seealso_disposition;
}
- if (isset($parameters['omb_seealso_disposition'])) {
- $notice->setSeealsoDisposition($parameters['omb_seealso_disposition']);
+ public function getSeealsoMediatype()
+ {
+ return $this->seealso_mediatype;
}
- if (isset($parameters['omb_seealso_mediatype'])) {
- $notice->setSeealsoMediatype($parameters['omb_seealso_mediatype']);
+ public function getSeealsoLicenseURL()
+ {
+ return $this->seealso_license_url;
}
- if (isset($parameters['omb_seealso_license'])) {
- $notice->setSeealsoLicenseURL($parameters['omb_seealso_license']);
+ public function setURL($url)
+ {
+ $this->setVal('notice_url', $url, 'OMB_Helper::validateURL', 'url');
}
- return $notice;
- }
-
- public function getAuthor() {
- return $this->author;
- }
-
- public function getIdentifierURI() {
- return $this->uri;
- }
-
- public function getContent() {
- return $this->content;
- }
-
- public function getURL() {
- return $this->url;
- }
-
- public function getLicenseURL() {
- return $this->license_url;
- }
-
- public function getSeealsoURL() {
- return $this->seealso_url;
- }
-
- public function getSeealsoDisposition() {
- return $this->seealso_disposition;
- }
-
- public function getSeealsoMediatype() {
- return $this->seealso_mediatype;
- }
-
- public function getSeealsoLicenseURL() {
- return $this->seealso_license_url;
- }
-
- public function setURL($url) {
- if ($url === '') {
- $url = null;
- } elseif (!OMB_Helper::validateURL($url)) {
- throw new OMB_InvalidParameterException($url, 'notice', 'omb_notice_url');
+
+ public function setLicenseURL($license_url)
+ {
+ $this->setVal('license', $license_url, 'OMB_Helper::validateURL',
+ 'license_url');
+ }
+
+ public function setSeealsoURL($seealso_url)
+ {
+ $this->setVal('seealso', $seealso_url, 'OMB_Helper::validateURL',
+ 'seealso_url');
}
- $this->url = $url;
- $this->param_array = false;
- }
-
- public function setLicenseURL($license_url) {
- if ($license_url === '') {
- $license_url = null;
- } elseif (!OMB_Helper::validateURL($license_url)) {
- throw new OMB_InvalidParameterException($license_url, 'notice',
- 'omb_notice_license');
+
+ public function setSeealsoDisposition($seealso_disposition)
+ {
+ $this->setVal('seealso_disposition', $seealso_disposition,
+ 'OMB_Notice::validateDisposition');
}
- $this->license_url = $license_url;
- $this->param_array = false;
- }
-
- public function setSeealsoURL($seealso_url) {
- if ($seealso_url === '') {
- $seealso_url = null;
- } elseif (!OMB_Helper::validateURL($seealso_url)) {
- throw new OMB_InvalidParameterException($seealso_url, 'notice',
- 'omb_seealso');
+
+ protected static function validateDisposition($str)
+ {
+ return in_array($str, array('link', 'inline'));
}
- $this->seealso_url = $seealso_url;
- $this->param_array = false;
- }
-
- public function setSeealsoDisposition($seealso_disposition) {
- if ($seealso_disposition === '') {
- $seealso_disposition = null;
- } elseif ($seealso_disposition !== 'link' && $seealso_disposition !== 'inline') {
- throw new OMB_InvalidParameterException($seealso_disposition, 'notice',
- 'omb_seealso_disposition');
+
+ public function setSeealsoMediatype($seealso_mediatype)
+ {
+ $this->setVal('seealso_mediatype', $seealso_mediatype,
+ 'OMB_Helper::validateMediaType');
}
- $this->seealso_disposition = $seealso_disposition;
- $this->param_array = false;
- }
-
- public function setSeealsoMediatype($seealso_mediatype) {
- if ($seealso_mediatype === '') {
- $seealso_mediatype = null;
- } elseif (!OMB_Helper::validateMediaType($seealso_mediatype)) {
- throw new OMB_InvalidParameterException($seealso_mediatype, 'notice',
- 'omb_seealso_mediatype');
+
+ public function setSeealsoLicenseURL($seealso_license_url)
+ {
+ $this->setVal('seealso_license', $seealso_license_url,
+ 'OMB_Helper::validateURL', 'seealso_license_url');
}
- $this->seealso_mediatype = $seealso_mediatype;
- $this->param_array = false;
- }
-
- public function setSeealsoLicenseURL($seealso_license_url) {
- if ($seealso_license_url === '') {
- $seealso_license_url = null;
- } elseif (!OMB_Helper::validateURL($seealso_license_url)) {
- throw new OMB_InvalidParameterException($seealso_license_url, 'notice',
- 'omb_seealso_license');
+
+ /**
+ * Set a value
+ *
+ * Updates a value specified by a parameter name and the new value.
+ *
+ * @param string $param The parameter name according to OMB
+ * @param string $value The new value
+ * @param callback $validator A validator function for the parameter
+ * @param string $field The name of the field in OMB_Notice
+ * @param bool $force Whether null values should be checked as well
+ */
+ protected function setVal($param, $value, $validator, $field = null,
+ $force = false)
+ {
+ if (is_null($field)) {
+ $field = $param;
+ }
+ if ($value === '' && !$force) {
+ $value = null;
+ } elseif (!call_user_func($validator, $value)) {
+ throw new OMB_InvalidParameterException($value, 'notice', $param);
+ }
+ if ($this->$field !== $value) {
+ $this->$field = $value;
+ $this->param_array = false;
+ }
}
- $this->seealso_license_url = $seealso_license_url;
- $this->param_array = false;
- }
}
?>
diff --git a/extlib/libomb/omb_yadis_xrds.php b/extlib/libomb/omb_yadis_xrds.php
index 89921203b..a05477c10 100755
--- a/extlib/libomb/omb_yadis_xrds.php
+++ b/extlib/libomb/omb_yadis_xrds.php
@@ -1,14 +1,6 @@
<?php
-
-require_once 'Auth/Yadis/Yadis.php';
-require_once 'unsupportedserviceexception.php';
-require_once 'invalidyadisexception.php';
-
/**
- * OMB XRDS representation
- *
- * This class represents a Yadis XRDS file for OMB. It adds some useful methods to
- * Auth_Yadis_XRDS.
+ * This file is part of libomb
*
* PHP version 5
*
@@ -25,172 +17,193 @@ require_once 'invalidyadisexception.php';
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
- * @package OMB
- * @author Adrian Lang <mail@adrianlang.de>
- * @copyright 2009 Adrian Lang
- * @license http://www.gnu.org/licenses/agpl.html GNU AGPL 3.0
- **/
-
-class OMB_Yadis_XRDS extends Auth_Yadis_XRDS {
-
- protected $fetcher;
-
- /**
- * Create an instance from URL
- *
- * Constructs an OMB_Yadis_XRDS object from a given URL. A full Yadis
- * discovery is performed on the URL and the XRDS is parsed.
- * Throws an OMB_InvalidYadisException when no Yadis is discovered or the
- * detected XRDS file is broken.
- *
- * @param string $url The URL on which Yadis discovery
- * should be performed on
- * @param Auth_Yadis_HTTPFetcher $fetcher A fetcher used to get HTTP
- * resources
- *
- * @access public
- *
- * @return OMB_Yadis_XRDS The initialized object representing the given
- * resource
- **/
- public static function fromYadisURL($url, $fetcher) {
- /* Perform a Yadis discovery. */
- $yadis = Auth_Yadis_Yadis::discover($url, $fetcher);
- if ($yadis->failed) {
- throw new OMB_InvalidYadisException($url);
- }
-
- /* Parse the XRDS file. */
- $xrds = OMB_Yadis_XRDS::parseXRDS($yadis->response_text);
- if ($xrds === null) {
- throw new OMB_InvalidYadisException($url);
- }
- $xrds->fetcher = $fetcher;
- return $xrds;
- }
-
- /**
- * Get a specific service
- *
- * Returns the Auth_Yadis_Service object corresponding to the given service
- * URI.
- * Throws an OMB_UnsupportedServiceException if the service is not available.
- *
- * @param string $service URI specifier of the requested service
- *
- * @access public
- *
- * @return Auth_Yadis_Service The object representing the requested service
- **/
- public function getService($service) {
- $match = $this->services(array( create_function('$s',
- "return in_array('$service', \$s->getTypes());")));
- if ($match === array()) {
- throw new OMB_UnsupportedServiceException($service);
- }
- return $match[0];
- }
-
- /**
- * Get a specific XRD
- *
- * Returns the OMB_Yadis_XRDS object corresponding to the given URI.
- * Throws an OMB_UnsupportedServiceException if the XRD is not available.
- * Note that getXRD tries to resolve external XRD parts as well.
- *
- * @param string $uri URI specifier of the requested XRD
- *
- * @access public
- *
- * @return OMB_Yadis_XRDS The object representing the requested XRD
- **/
- public function getXRD($uri) {
- $nexthash = strpos($uri, '#');
- if ($nexthash !== 0) {
- if ($nexthash !== false) {
- $cururi = substr($uri, 0, $nexthash);
- $nexturi = substr($uri, $nexthash);
- }
- return
- OMB_Yadis_XRDS::fromYadisURL($cururi, $this->fetcher)->getXRD($nexturi);
- }
-
- $id = substr($uri, 1);
- foreach ($this->allXrdNodes as $node) {
- $attrs = $this->parser->attributes($node);
- if (array_key_exists('xml:id', $attrs) && $attrs['xml:id'] == $id) {
- /* Trick the constructor into thinking this is the only node. */
- $bogus_nodes = array($node);
- return new OMB_Yadis_XRDS($this->parser, $bogus_nodes);
- }
- }
- throw new OMB_UnsupportedServiceException($uri);
- }
-
- /**
- * Parse an XML string containing a XRDS document
- *
- * Parse an XML string (XRDS document) and return either a
- * Auth_Yadis_XRDS object or null, depending on whether the
- * XRDS XML is valid.
- * Copy and paste from parent to select correct constructor.
- *
- * @param string $xml_string An XRDS XML string.
- *
- * @access public
- *
- * @return mixed An instance of OMB_Yadis_XRDS or null,
- * depending on the validity of $xml_string
- **/
-
- public function &parseXRDS($xml_string, $extra_ns_map = null) {
- $_null = null;
-
- if (!$xml_string) {
- return $_null;
- }
+ * @package OMB
+ * @author Adrian Lang <mail@adrianlang.de>
+ * @license http://www.gnu.org/licenses/agpl.html GNU AGPL 3.0
+ * @version 0.1a-20090828
+ * @link http://adrianlang.de/libomb
+ */
- $parser = Auth_Yadis_getXMLParser();
-
- $ns_map = Auth_Yadis_getNSMap();
-
- if ($extra_ns_map && is_array($extra_ns_map)) {
- $ns_map = array_merge($ns_map, $extra_ns_map);
- }
-
- if (!($parser && $parser->init($xml_string, $ns_map))) {
- return $_null;
- }
+require_once 'Auth/Yadis/Yadis.php';
+require_once 'unsupportedserviceexception.php';
+require_once 'invalidyadisexception.php';
- // Try to get root element.
- $root = $parser->evalXPath('/xrds:XRDS[1]');
- if (!$root) {
- return $_null;
+/**
+ * OMB XRDS representation
+ *
+ * This class represents a Yadis XRDS file for OMB. It adds some useful methods to
+ * Auth_Yadis_XRDS.
+ */
+class OMB_Yadis_XRDS extends Auth_Yadis_XRDS
+{
+
+ protected $fetcher;
+
+ /**
+ * Create an instance from URL
+ *
+ * Constructs an OMB_Yadis_XRDS object from a given URL. A full Yadis
+ * discovery is performed on the URL and the XRDS is parsed.
+ * Throws an OMB_InvalidYadisException when no Yadis is discovered or the
+ * detected XRDS file is broken.
+ *
+ * @param string $url The URL on which Yadis discovery
+ * should be performed on
+ * @param Auth_Yadis_HTTPFetcher $fetcher A fetcher used to get HTTP
+ * resources
+ *
+ * @access public
+ *
+ * @return OMB_Yadis_XRDS The initialized object representing the given
+ * resource
+ */
+ public static function fromYadisURL($url, $fetcher)
+ {
+ /* Perform a Yadis discovery. */
+ $yadis = Auth_Yadis_Yadis::discover($url, $fetcher);
+ if ($yadis->failed) {
+ throw new OMB_InvalidYadisException($url);
+ }
+
+ /* Parse the XRDS file. */
+ $xrds = OMB_Yadis_XRDS::parseXRDS($yadis->response_text);
+ if ($xrds === null) {
+ throw new OMB_InvalidYadisException($url);
+ }
+ $xrds->fetcher = $fetcher;
+ return $xrds;
}
- if (is_array($root)) {
- $root = $root[0];
+ /**
+ * Get a specific service
+ *
+ * Returns the Auth_Yadis_Service object corresponding to the given service
+ * URI.
+ * Throws an OMB_UnsupportedServiceException if the service is not
+ * available.
+ *
+ * @param string $service URI specifier of the requested service
+ *
+ * @access public
+ *
+ * @return Auth_Yadis_Service The object representing the requested service
+ */
+ public function getService($service)
+ {
+ $match = $this->services(array(create_function('$s',
+ "return in_array('$service', \$s->getTypes());")));
+ if ($match === array()) {
+ throw new OMB_UnsupportedServiceException($service);
+ }
+ return $match[0];
}
- $attrs = $parser->attributes($root);
-
- if (array_key_exists('xmlns:xrd', $attrs) &&
- $attrs['xmlns:xrd'] != Auth_Yadis_XMLNS_XRDS) {
- return $_null;
- } else if (array_key_exists('xmlns', $attrs) &&
- preg_match('/xri/', $attrs['xmlns']) &&
- $attrs['xmlns'] != Auth_Yadis_XMLNS_XRD_2_0) {
- return $_null;
+ /**
+ * Get a specific XRD
+ *
+ * Returns the OMB_Yadis_XRDS object corresponding to the given URI.
+ * Throws an OMB_UnsupportedServiceException if the XRD is not available.
+ * Note that getXRD tries to resolve external XRD parts as well.
+ *
+ * @param string $uri URI specifier of the requested XRD
+ *
+ * @access public
+ *
+ * @return OMB_Yadis_XRDS The object representing the requested XRD
+ */
+ public function getXRD($uri)
+ {
+ $nexthash = strpos($uri, '#');
+ if ($nexthash === false) {
+ throw new OMB_InvalidYadisException("‘$uri’ does not specify a " .
+ 'valid XML node.');
+ }
+
+ if ($nexthash > 0) {
+ $cururi = substr($uri, 0, $nexthash);
+ $nexturi = substr($uri, $nexthash);
+ return OMB_Yadis_XRDS::fromYadisURL($cururi, $this->fetcher)
+ ->getXRD($nexturi);
+ }
+
+ $id = substr($uri, 1);
+ foreach ($this->allXrdNodes as $node) {
+ $attrs = $this->parser->attributes($node);
+ if (array_key_exists('xml:id', $attrs) && $attrs['xml:id'] == $id) {
+ /* Trick the constructor into thinking this is the only node. */
+ $bogus_nodes = array($node);
+ return new OMB_Yadis_XRDS($this->parser, $bogus_nodes);
+ }
+ }
+ throw new OMB_UnsupportedServiceException($uri);
}
- // Get the last XRD node.
- $xrd_nodes = $parser->evalXPath('/xrds:XRDS[1]/xrd:XRD');
-
- if (!$xrd_nodes) {
- return $_null;
+ /**
+ * Parse an XML string containing a XRDS document
+ *
+ * Parses an XML string (XRDS document) and returns either an
+ * Auth_Yadis_XRDS object or null, depending on whether the XRDS XML is
+ * valid.
+ * This method is just copy and paste from the parent class to select the
+ * correct constructor.
+ *
+ * @param string $xml_string An XRDS XML string
+ * @param array $extra_ns_map Additional namespace declarations
+ *
+ * @access public
+ *
+ * @return mixed An instance of OMB_Yadis_XRDS or null,
+ * depending on the validity of $xml_string
+ */
+ public static function parseXRDS($xml_string, $extra_ns_map = null)
+ {
+ $_null = null;
+
+ if (!$xml_string) {
+ return $_null;
+ }
+
+ $parser = Auth_Yadis_getXMLParser();
+
+ $ns_map = Auth_Yadis_getNSMap();
+
+ if ($extra_ns_map && is_array($extra_ns_map)) {
+ $ns_map = array_merge($ns_map, $extra_ns_map);
+ }
+
+ if (!($parser && $parser->init($xml_string, $ns_map))) {
+ return $_null;
+ }
+
+ // Try to get root element.
+ $root = $parser->evalXPath('/xrds:XRDS[1]');
+ if (!$root) {
+ return $_null;
+ }
+
+ if (is_array($root)) {
+ $root = $root[0];
+ }
+
+ $attrs = $parser->attributes($root);
+
+ if (array_key_exists('xmlns:xrd', $attrs) &&
+ $attrs['xmlns:xrd'] != Auth_Yadis_XMLNS_XRDS) {
+ return $_null;
+ } else if (array_key_exists('xmlns', $attrs) &&
+ preg_match('/xri/', $attrs['xmlns']) &&
+ $attrs['xmlns'] != Auth_Yadis_XMLNS_XRD_2_0) {
+ return $_null;
+ }
+
+ // Get the last XRD node.
+ $xrd_nodes = $parser->evalXPath('/xrds:XRDS[1]/xrd:XRD');
+
+ if (!$xrd_nodes) {
+ return $_null;
+ }
+
+ $xrds = new OMB_Yadis_XRDS($parser, $xrd_nodes);
+ return $xrds;
}
-
- $xrds = new OMB_Yadis_XRDS($parser, $xrd_nodes);
- return $xrds;
- }
}
diff --git a/extlib/libomb/plain_xrds_writer.php b/extlib/libomb/plain_xrds_writer.php
index b4a6e990b..ba1027b61 100755
--- a/extlib/libomb/plain_xrds_writer.php
+++ b/extlib/libomb/plain_xrds_writer.php
@@ -1,13 +1,6 @@
<?php
-
-require_once 'xrds_writer.php';
-
/**
- * Write OMB-specific XRDS using XMLWriter.
- *
- * This class writes the XRDS file announcing the OMB server. It uses
- * OMB_XMLWriter, which is a subclass of XMLWriter. An instance of
- * OMB_Plain_XRDS_Writer should be passed to OMB_Service_Provider->writeXRDS.
+ * This file is part of libomb
*
* PHP version 5
*
@@ -24,25 +17,45 @@ require_once 'xrds_writer.php';
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
- * @package OMB
- * @author Adrian Lang <mail@adrianlang.de>
- * @copyright 2009 Adrian Lang
- * @license http://www.gnu.org/licenses/agpl.html GNU AGPL 3.0
- **/
+ * @package OMB
+ * @author Adrian Lang <mail@adrianlang.de>
+ * @license http://www.gnu.org/licenses/agpl.html GNU AGPL 3.0
+ * @version 0.1a-20090828
+ * @link http://adrianlang.de/libomb
+ */
+
+require_once 'xrds_writer.php';
-class OMB_Plain_XRDS_Writer implements OMB_XRDS_Writer {
- public function writeXRDS($user, $mapper) {
- header('Content-Type: application/xrds+xml');
- $xw = new XMLWriter();
- $xw->openURI('php://output');
- $xw->setIndent(true);
+/**
+ * Write OMB-specific XRDS using XMLWriter
+ *
+ * This class writes the XRDS file announcing the OMB server. It uses XMLWriter.
+ * An instance of OMB_Plain_XRDS_Writer should be passed to
+ * OMB_Service_Provider->writeXRDS.
+ */
+class OMB_Plain_XRDS_Writer implements OMB_XRDS_Writer
+{
+ /**
+ * Write XRDS using XMLWriter
+ *
+ * Outputs a XRDS document specifying an OMB service.
+ *
+ * @param OMB_profile $user The target user for the OMB service
+ * @param OMB_XRDS_Mapper $mapper An OMB_XRDS_Mapper providing endpoint URLs
+ */
+ public function writeXRDS($user, $mapper)
+ {
+ header('Content-Type: application/xrds+xml');
+ $xw = new XMLWriter();
+ $xw->openURI('php://output');
+ $xw->setIndent(true);
- $xw->startDocument('1.0', 'UTF-8');
- $this->writeFullElement($xw, 'XRDS', array('xmlns' => 'xri://$xrds'), array(
- array('XRD', array('xmlns' => 'xri://$xrd*($v*2.0)',
- 'xml:id' => 'oauth',
- 'xmlns:simple' => 'http://xrds-simple.net/core/1.0',
- 'version' => '2.0'), array(
+ $xw->startDocument('1.0', 'UTF-8');
+ $this->_writeFullElement($xw, 'XRDS', array('xmlns' => 'xri://$xrds'), array(
+ array('XRD', array('xmlns' => 'xri://$xrd*($v*2.0)',
+ 'xml:id' => 'oauth',
+ 'xmlns:simple' => 'http://xrds-simple.net/core/1.0',
+ 'version' => '2.0'), array(
array('Type', null, 'xri://$xrds*simple'),
array('Service', null, array(
array('Type', null, OAUTH_ENDPOINT_REQUEST),
@@ -73,10 +86,10 @@ class OMB_Plain_XRDS_Writer implements OMB_XRDS_Writer {
array('Type', null, OAUTH_HMAC_SHA1)
))
)),
- array('XRD', array('xmlns' => 'xri://$xrd*($v*2.0)',
- 'xml:id' => 'omb',
- 'xmlns:simple' => 'http://xrds-simple.net/core/1.0',
- 'version' => '2.0'), array(
+ array('XRD', array('xmlns' => 'xri://$xrd*($v*2.0)',
+ 'xml:id' => 'omb',
+ 'xmlns:simple' => 'http://xrds-simple.net/core/1.0',
+ 'version' => '2.0'), array(
array('Type', null, 'xri://$xrds*simple'),
array('Service', null, array(
array('Type', null, OMB_ENDPOINT_POSTNOTICE),
@@ -87,8 +100,8 @@ class OMB_Plain_XRDS_Writer implements OMB_XRDS_Writer {
array('URI', null, $mapper->getURL(OMB_ENDPOINT_UPDATEPROFILE))
))
)),
- array('XRD', array('xmlns' => 'xri://$xrd*($v*2.0)',
- 'version' => '2.0'), array(
+ array('XRD', array('xmlns' => 'xri://$xrd*($v*2.0)',
+ 'version' => '2.0'), array(
array('Type', null, 'xri://$xrds*simple'),
array('Service', null, array(
array('Type', null, OAUTH_DISCOVERY),
@@ -98,27 +111,40 @@ class OMB_Plain_XRDS_Writer implements OMB_XRDS_Writer {
array('Type', null, OMB_VERSION),
array('URI', null, '#omb')
))
- ))
- ));
- $xw->endDocument();
- $xw->flush();
- }
-
- public static function writeFullElement($xw, $tag, $attributes, $content) {
- $xw->startElement($tag);
- if (!is_null($attributes)) {
- foreach ($attributes as $name => $value) {
- $xw->writeAttribute($name, $value);
- }
+ ))));
+ $xw->endDocument();
+ $xw->flush();
}
- if (is_array($content)) {
- foreach ($content as $values) {
- OMB_Plain_XRDS_Writer::writeFullElement($xw, $values[0], $values[1], $values[2]);
- }
- } else {
- $xw->text($content);
+
+ /**
+ * Write a complex XML element
+ *
+ * Outputs a XML element with attributes and content.
+ *
+ * @param XMLWriter $xw The XMLWriter used to output the element
+ * @param string $tag The tag name
+ * @param array|null $attributes A map of XML attributes
+ * @param array|string $content The content of the element; either an
+ * array of child nodes each specified by a
+ * three entry-array ($tag, $attributes,
+ * $content) or a string
+ */
+ private function _writeFullElement($xw, $tag, $attributes, $content)
+ {
+ $xw->startElement($tag);
+ if (!is_null($attributes)) {
+ foreach ($attributes as $name => $value) {
+ $xw->writeAttribute($name, $value);
+ }
+ }
+ if (is_array($content)) {
+ foreach ($content as $val) {
+ $this->_writeFullElement($xw, $val[0], $val[1], $val[2]);
+ }
+ } else {
+ $xw->text($content);
+ }
+ $xw->fullEndElement();
}
- $xw->fullEndElement();
- }
}
?>
diff --git a/extlib/libomb/profile.php b/extlib/libomb/profile.php
index 13314d3e8..d732e10d7 100755
--- a/extlib/libomb/profile.php
+++ b/extlib/libomb/profile.php
@@ -1,15 +1,6 @@
<?php
-require_once 'invalidparameterexception.php';
-require_once 'Validate.php';
-require_once 'helper.php';
-
/**
- * OMB profile representation
- *
- * This class represents an OMB profile.
- *
- * Do not call the setters with null values. Instead, if you want to delete a
- * field, pass an empty string. The getters will return null for empty fields.
+ * This file is part of libomb
*
* PHP version 5
*
@@ -26,292 +17,329 @@ require_once 'helper.php';
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
- * @package OMB
- * @author Adrian Lang <mail@adrianlang.de>
- * @copyright 2009 Adrian Lang
- * @license http://www.gnu.org/licenses/agpl.html GNU AGPL 3.0
- **/
-
-class OMB_Profile {
- protected $identifier_uri;
- protected $profile_url;
- protected $nickname;
- protected $license_url;
- protected $fullname;
- protected $homepage;
- protected $bio;
- protected $location;
- protected $avatar_url;
-
- /* The profile as OMB param array. Cached and rebuild on usage.
- false while outdated. */
- protected $param_array;
-
- /**
- * Constructor for OMB_Profile
- *
- * Initializes the OMB_Profile object with an identifier uri.
- *
- * @param string $identifier_uri The profile URI as defined by the OMB. A unique
- * and unchanging identifier for a profile.
- *
- * @access public
- */
- public function __construct($identifier_uri) {
- if (!Validate::uri($identifier_uri)) {
- throw new OMB_InvalidParameterException($identifier_uri, 'profile',
+ * @package OMB
+ * @author Adrian Lang <mail@adrianlang.de>
+ * @license http://www.gnu.org/licenses/agpl.html GNU AGPL 3.0
+ * @version 0.1a-20090828
+ * @link http://adrianlang.de/libomb
+ */
+
+require_once 'invalidparameterexception.php';
+require_once 'Validate.php';
+require_once 'helper.php';
+
+/**
+ * OMB profile representation
+ *
+ * This class represents an OMB profile.
+ *
+ * Do not call the setters with null values. Instead, if you want to delete a
+ * field, pass an empty string. The getters will return null for empty fields.
+ */
+class OMB_Profile
+{
+ protected $identifier_uri;
+ protected $profile_url;
+ protected $nickname;
+ protected $license_url;
+ protected $fullname;
+ protected $homepage;
+ protected $bio;
+ protected $location;
+ protected $avatar_url;
+
+ /* The profile as OMB param array. Cached and rebuild on usage.
+ false while outdated. */
+ protected $param_array;
+
+ /**
+ * Constructor for OMB_Profile
+ *
+ * Initializes the OMB_Profile object with an identifier uri.
+ *
+ * @param string $identifier_uri The profile URI as defined by the OMB;
+ * A unique and never changing identifier for
+ * a profile
+ *
+ * @access public
+ */
+ public function __construct($identifier_uri)
+ {
+ if (!Validate::uri($identifier_uri)) {
+ throw new OMB_InvalidParameterException($identifier_uri, 'profile',
'omb_listenee or omb_listener');
+ }
+ $this->identifier_uri = $identifier_uri;
+ $this->param_array = false;
}
- $this->identifier_uri = $identifier_uri;
- $this->param_array = false;
- }
-
- /**
- * Returns the profile as array
- *
- * The method returns an array which contains the whole profile as array. The
- * array is cached and only rebuilt on changes of the profile.
- *
- * @param bool $force_all Specifies whether empty fields should be added to
- * the array as well. This is neccessary to clear
- * fields via updateProfile.
- *
- * @param string $prefix The common prefix to the key for all parameters.
- *
- * @access public
- *
- * @return array The profile as parameter array
- */
- public function asParameters($prefix, $force_all = false) {
- if ($this->param_array === false) {
- $this->param_array = array('' => $this->identifier_uri);
-
- if ($force_all || !is_null($this->profile_url)) {
- $this->param_array['_profile'] = $this->profile_url;
- }
-
- if ($force_all || !is_null($this->homepage)) {
- $this->param_array['_homepage'] = $this->homepage;
- }
-
- if ($force_all || !is_null($this->nickname)) {
- $this->param_array['_nickname'] = $this->nickname;
- }
-
- if ($force_all || !is_null($this->license_url)) {
- $this->param_array['_license'] = $this->license_url;
- }
-
- if ($force_all || !is_null($this->fullname)) {
- $this->param_array['_fullname'] = $this->fullname;
- }
-
- if ($force_all || !is_null($this->bio)) {
- $this->param_array['_bio'] = $this->bio;
- }
-
- if ($force_all || !is_null($this->location)) {
- $this->param_array['_location'] = $this->location;
- }
-
- if ($force_all || !is_null($this->avatar_url)) {
- $this->param_array['_avatar'] = $this->avatar_url;
- }
- }
- $ret = array();
- foreach ($this->param_array as $k => $v) {
- $ret[$prefix . $k] = $v;
- }
- return $ret;
- }
-
- /**
- * Builds an OMB_Profile object from array
- *
- * The method builds an OMB_Profile object from the passed parameters array. The
- * array MUST provide a profile URI. The array fields HAVE TO be named according
- * to the OMB standard. The prefix (omb_listener or omb_listenee) is passed as a
- * parameter.
- *
- * @param string $parameters An array containing the profile parameters.
- * @param string $prefix The common prefix of the profile parameter keys.
- *
- * @access public
- *
- * @returns OMB_Profile The built OMB_Profile.
- */
- public static function fromParameters($parameters, $prefix) {
- if (!isset($parameters[$prefix])) {
- throw new OMB_InvalidParameterException('', 'profile', $prefix);
+ /**
+ * Return the profile as array
+ *
+ * Returns an array which contains the whole profile as array.
+ * The array is cached and only rebuilt on changes of the profile.
+ *
+ * @param string $prefix The common prefix to the key for all parameters
+ * @param bool $force_all Specifies whether empty fields should be added
+ * to the array as well; This is necessary to
+ * clear fields via updateProfile
+ *
+ * @access public
+ *
+ * @return array The profile as parameter array
+ */
+ public function asParameters($prefix, $force_all = false)
+ {
+ if ($this->param_array === false) {
+ $this->param_array = array('' => $this->identifier_uri);
+
+ if ($force_all || !is_null($this->profile_url)) {
+ $this->param_array['_profile'] = $this->profile_url;
+ }
+
+ if ($force_all || !is_null($this->homepage)) {
+ $this->param_array['_homepage'] = $this->homepage;
+ }
+
+ if ($force_all || !is_null($this->nickname)) {
+ $this->param_array['_nickname'] = $this->nickname;
+ }
+
+ if ($force_all || !is_null($this->license_url)) {
+ $this->param_array['_license'] = $this->license_url;
+ }
+
+ if ($force_all || !is_null($this->fullname)) {
+ $this->param_array['_fullname'] = $this->fullname;
+ }
+
+ if ($force_all || !is_null($this->bio)) {
+ $this->param_array['_bio'] = $this->bio;
+ }
+
+ if ($force_all || !is_null($this->location)) {
+ $this->param_array['_location'] = $this->location;
+ }
+
+ if ($force_all || !is_null($this->avatar_url)) {
+ $this->param_array['_avatar'] = $this->avatar_url;
+ }
+
+ }
+ $ret = array();
+ foreach ($this->param_array as $k => $v) {
+ $ret[$prefix . $k] = $v;
+ }
+ return $ret;
}
- $profile = new OMB_Profile($parameters[$prefix]);
- $profile->updateFromParameters($parameters, $prefix);
- return $profile;
- }
-
- /**
- * Update from array
- *
- * Updates from the passed parameters array. The array does not have to
- * provide a profile URI. The array fields HAVE TO be named according to the
- * OMB standard. The prefix (omb_listener or omb_listenee) is passed as a
- * parameter.
- *
- * @param string $parameters An array containing the profile parameters.
- * @param string $prefix The common prefix of the profile parameter keys.
- *
- * @access public
- */
- public function updateFromParameters($parameters, $prefix) {
- if (isset($parameters[$prefix.'_profile'])) {
- $this->setProfileURL($parameters[$prefix.'_profile']);
+ /**
+ * Build an OMB_Profile object from array
+ *
+ * Builds an OMB_Profile object from the passed parameters array. The
+ * array MUST provide a profile URI. The array fields HAVE TO be named
+ * according to the OMB standard. The prefix (omb_listener or omb_listenee)
+ * is passed as a parameter.
+ *
+ * @param string $parameters An array containing the profile parameters
+ * @param string $prefix The common prefix of the profile parameter keys
+ *
+ * @access public
+ *
+ * @returns OMB_Profile The built OMB_Profile
+ */
+ public static function fromParameters($parameters, $prefix)
+ {
+ if (!isset($parameters[$prefix])) {
+ throw new OMB_InvalidParameterException('', 'profile', $prefix);
+ }
+
+ $profile = new OMB_Profile($parameters[$prefix]);
+ $profile->updateFromParameters($parameters, $prefix);
+ return $profile;
}
- if (isset($parameters[$prefix.'_license'])) {
- $this->setLicenseURL($parameters[$prefix.'_license']);
+ /**
+ * Update from array
+ *
+ * Updates from the passed parameters array. The array does not have to
+ * provide a profile URI. The array fields HAVE TO be named according to the
+ * OMB standard. The prefix (omb_listener or omb_listenee) is passed as a
+ * parameter.
+ *
+ * @param string $parameters An array containing the profile parameters
+ * @param string $prefix The common prefix of the profile parameter keys
+ *
+ * @access public
+ */
+ public function updateFromParameters($parameters, $prefix)
+ {
+ if (isset($parameters[$prefix.'_profile'])) {
+ $this->setProfileURL($parameters[$prefix.'_profile']);
+ }
+
+ if (isset($parameters[$prefix.'_license'])) {
+ $this->setLicenseURL($parameters[$prefix.'_license']);
+ }
+
+ if (isset($parameters[$prefix.'_nickname'])) {
+ $this->setNickname($parameters[$prefix.'_nickname']);
+ }
+
+ if (isset($parameters[$prefix.'_fullname'])) {
+ $this->setFullname($parameters[$prefix.'_fullname']);
+ }
+
+ if (isset($parameters[$prefix.'_homepage'])) {
+ $this->setHomepage($parameters[$prefix.'_homepage']);
+ }
+
+ if (isset($parameters[$prefix.'_bio'])) {
+ $this->setBio($parameters[$prefix.'_bio']);
+ }
+
+ if (isset($parameters[$prefix.'_location'])) {
+ $this->setLocation($parameters[$prefix.'_location']);
+ }
+
+ if (isset($parameters[$prefix.'_avatar'])) {
+ $this->setAvatarURL($parameters[$prefix.'_avatar']);
+ }
}
- if (isset($parameters[$prefix.'_nickname'])) {
- $this->setNickname($parameters[$prefix.'_nickname']);
+ public function getIdentifierURI()
+ {
+ return $this->identifier_uri;
}
- if (isset($parameters[$prefix.'_fullname'])) {
- $this->setFullname($parameters[$prefix.'_fullname']);
+ public function getProfileURL()
+ {
+ return $this->profile_url;
}
- if (isset($parameters[$prefix.'_homepage'])) {
- $this->setHomepage($parameters[$prefix.'_homepage']);
+ public function getHomepage()
+ {
+ return $this->homepage;
}
- if (isset($parameters[$prefix.'_bio'])) {
- $this->setBio($parameters[$prefix.'_bio']);
+ public function getNickname()
+ {
+ return $this->nickname;
}
- if (isset($parameters[$prefix.'_location'])) {
- $this->setLocation($parameters[$prefix.'_location']);
+ public function getLicenseURL()
+ {
+ return $this->license_url;
}
- if (isset($parameters[$prefix.'_avatar'])) {
- $this->setAvatarURL($parameters[$prefix.'_avatar']);
+ public function getFullname()
+ {
+ return $this->fullname;
}
- }
-
- public function getIdentifierURI() {
- return $this->identifier_uri;
- }
- public function getProfileURL() {
- return $this->profile_url;
- }
-
- public function getHomepage() {
- return $this->homepage;
- }
-
- public function getNickname() {
- return $this->nickname;
- }
-
- public function getLicenseURL() {
- return $this->license_url;
- }
+ public function getBio()
+ {
+ return $this->bio;
+ }
- public function getFullname() {
- return $this->fullname;
- }
+ public function getLocation()
+ {
+ return $this->location;
+ }
- public function getBio() {
- return $this->bio;
- }
+ public function getAvatarURL()
+ {
+ return $this->avatar_url;
+ }
- public function getLocation() {
- return $this->location;
- }
+ public function setProfileURL($profile_url)
+ {
+ $this->setVal('profile', $profile_url, 'OMB_Helper::validateURL',
+ 'profile_url');
+ }
- public function getAvatarURL() {
- return $this->avatar_url;
- }
+ public function setNickname($nickname)
+ {
+ $this->setVal('nickname', $nickname, 'OMB_Profile::validateNickname',
+ 'nickname', true);
+ }
- public function setProfileURL($profile_url) {
- if (!OMB_Helper::validateURL($profile_url)) {
- throw new OMB_InvalidParameterException($profile_url, 'profile',
- 'omb_listenee_profile or omb_listener_profile');
+ public function setLicenseURL($license_url)
+ {
+ $this->setVal('license', $license_url, 'OMB_Helper::validateURL',
+ 'license_url');
}
- $this->profile_url = $profile_url;
- $this->param_array = false;
- }
-
- public function setNickname($nickname) {
- if (!Validate::string($nickname,
- array('min_length' => 1,
- 'max_length' => 64,
- 'format' => VALIDATE_NUM . VALIDATE_ALPHA))) {
- throw new OMB_InvalidParameterException($nickname, 'profile', 'nickname');
+
+ public function setFullname($fullname)
+ {
+ $this->setVal('fullname', $fullname, 'OMB_Profile::validate255');
}
- $this->nickname = $nickname;
- $this->param_array = false;
- }
+ public function setHomepage($homepage)
+ {
+ $this->setVal('homepage', $homepage, 'OMB_Helper::validateURL');
+ }
- public function setLicenseURL($license_url) {
- if (!OMB_Helper::validateURL($license_url)) {
- throw new OMB_InvalidParameterException($license_url, 'profile',
- 'omb_listenee_license or omb_listener_license');
+ public function setBio($bio)
+ {
+ $this->setVal('bio', $bio, 'OMB_Profile::validate140');
}
- $this->license_url = $license_url;
- $this->param_array = false;
- }
-
- public function setFullname($fullname) {
- if ($fullname === '') {
- $fullname = null;
- } elseif (!Validate::string($fullname, array('max_length' => 255))) {
- throw new OMB_InvalidParameterException($fullname, 'profile', 'fullname');
+
+ public function setLocation($location)
+ {
+ $this->setVal('location', $location, 'OMB_Profile::validate255');
}
- $this->fullname = $fullname;
- $this->param_array = false;
- }
- public function setHomepage($homepage) {
- if ($homepage === '') {
- $homepage = null;
+ public function setAvatarURL($avatar_url)
+ {
+ $this->setVal('avatar', $avatar_url, 'OMB_Helper::validateURL',
+ 'avatar_url');
}
- $this->homepage = $homepage;
- $this->param_array = false;
- }
-
- public function setBio($bio) {
- if ($bio === '') {
- $bio = null;
- } elseif (!Validate::string($bio, array('max_length' => 140))) {
- throw new OMB_InvalidParameterException($bio, 'profile', 'fullname');
+
+ protected static function validate255($str)
+ {
+ return Validate::string($str, array('max_length' => 255));
}
- $this->bio = $bio;
- $this->param_array = false;
- }
-
- public function setLocation($location) {
- if ($location === '') {
- $location = null;
- } elseif (!Validate::string($location, array('max_length' => 255))) {
- throw new OMB_InvalidParameterException($location, 'profile', 'fullname');
+
+ protected static function validate140($str)
+ {
+ return Validate::string($str, array('max_length' => 140));
}
- $this->location = $location;
- $this->param_array = false;
- }
-
- public function setAvatarURL($avatar_url) {
- if ($avatar_url === '') {
- $avatar_url = null;
- } elseif (!OMB_Helper::validateURL($avatar_url)) {
- throw new OMB_InvalidParameterException($avatar_url, 'profile',
- 'omb_listenee_avatar or omb_listener_avatar');
+
+ protected static function validateNickname($str)
+ {
+ return Validate::string($str,
+ array('min_length' => 1,
+ 'max_length' => 64,
+ 'format' => VALIDATE_NUM . VALIDATE_ALPHA));
}
- $this->avatar_url = $avatar_url;
- $this->param_array = false;
- }
+ /**
+ * Set a value
+ *
+ * Updates a value specified by a parameter name and the new value.
+ *
+ * @param string $param The parameter name according to OMB
+ * @param string $value The new value
+ * @param callback $validator A validator function for the parameter
+ * @param string $field The name of the field in OMB_Profile
+ * @param bool $force Whether null values should be checked as well
+ */
+ protected function setVal($param, $value, $validator, $field = null,
+ $force = false)
+ {
+ if (is_null($field)) {
+ $field = $param;
+ }
+ if ($value === '' && !$force) {
+ $value = null;
+ } elseif (!call_user_func($validator, $value)) {
+ throw new OMB_InvalidParameterException($value, 'profile', $param);
+ }
+ if ($this->$field !== $value) {
+ $this->$field = $value;
+ $this->param_array = false;
+ }
+ }
}
?>
diff --git a/extlib/libomb/remoteserviceexception.php b/extlib/libomb/remoteserviceexception.php
index 374d15973..f8341e82b 100755
--- a/extlib/libomb/remoteserviceexception.php
+++ b/extlib/libomb/remoteserviceexception.php
@@ -1,9 +1,6 @@
<?php
/**
- * Exception stating that the remote service had a failure
- *
- * This exception is raised when a remote service failed to return a valid
- * response to a request or send a valid request.
+ * This file is part of libomb
*
* PHP version 5
*
@@ -20,23 +17,57 @@
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
- * @package OMB
- * @author Adrian Lang <mail@adrianlang.de>
- * @copyright 2009 Adrian Lang
- * @license http://www.gnu.org/licenses/agpl.html GNU AGPL 3.0
- **/
-class OMB_RemoteServiceException extends Exception {
- public static function fromYadis($request_uri, $result) {
- if ($result->status == 200) {
- $err = 'Got wrong response ' . $result->body;
- } else {
- $err = 'Got error code ' . $result->status . ' with response ' . $result->body;
+ * @package OMB
+ * @author Adrian Lang <mail@adrianlang.de>
+ * @license http://www.gnu.org/licenses/agpl.html GNU AGPL 3.0
+ * @version 0.1a-20090828
+ * @link http://adrianlang.de/libomb
+ */
+
+/**
+ * Exception stating that the remote service had a failure
+ *
+ * This exception is raised when a remote service failed to return a valid
+ * response to a request or send a valid request.
+ */
+class OMB_RemoteServiceException extends Exception
+{
+ /**
+ * Create exception from Yadis response
+ *
+ * Creates an exception from a passed yadis result.
+ *
+ * @param string $request_uri The target URI for the failed
+ * request
+ * @param Auth_Yadis_HTTPResponse $result The result of the failed
+ * request
+ *
+ * @return OMB_RemoteServiceException A new exception
+ */
+ public static function fromYadis($request_uri, $result)
+ {
+ if ($result->status == 200) {
+ $err = 'Got wrong response ' . $result->body;
+ } else {
+ $err = 'Got error code ' . $result->status . ' with response ' .
+ $result->body;
+ }
+ return OMB_RemoteServiceException::forRequest($request_uri, $err);
}
- return new OMB_RemoteServiceException($request_uri . ': ' . $err);
- }
- public static function forRequest($action_uri, $failure) {
- return new OMB_RemoteServiceException("Handler for $action_uri: " . $failure);
- }
+ /**
+ * Create exception for a call to a resource
+ *
+ * Creates an exception for a given error message and target URI.
+ *
+ * @param string $action_uri The target URI for the failed request
+ * @param string $failure An error message
+ *
+ * @return OMB_RemoteServiceException A new exception
+ */
+ public static function forRequest($action_uri, $failure)
+ {
+ return new OMB_RemoteServiceException("Handler for $action_uri: $failure");
+ }
}
?>
diff --git a/extlib/libomb/service_consumer.php b/extlib/libomb/service_consumer.php
index 273fd052e..33ebccc65 100755
--- a/extlib/libomb/service_consumer.php
+++ b/extlib/libomb/service_consumer.php
@@ -1,19 +1,6 @@
<?php
-
-require_once 'constants.php';
-require_once 'Validate.php';
-require_once 'Auth/Yadis/Yadis.php';
-require_once 'OAuth.php';
-require_once 'unsupportedserviceexception.php';
-require_once 'remoteserviceexception.php';
-require_once 'omb_yadis_xrds.php';
-require_once 'helper.php';
-
/**
- * OMB service representation
- *
- * This class represents a complete remote OMB service. It provides discovery
- * and execution of the service’s methods.
+ * This file is part of libomb
*
* PHP version 5
*
@@ -30,401 +17,445 @@ require_once 'helper.php';
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
- * @package OMB
- * @author Adrian Lang <mail@adrianlang.de>
- * @copyright 2009 Adrian Lang
- * @license http://www.gnu.org/licenses/agpl.html GNU AGPL 3.0
- **/
-
-class OMB_Service_Consumer {
- protected $url; /* The service URL */
- protected $services; /* An array of strings mapping service URI to
- service URL */
-
- protected $token; /* An OAuthToken */
-
- protected $listener_uri; /* The URI identifying the listener, i. e. the
- remote user. */
-
- protected $listenee_uri; /* The URI identifying the listenee, i. e. the
- local user during an auth request. */
-
- /**
- * According to OAuth Core 1.0, an user authorization request is no full-blown
- * OAuth request. nonce, timestamp, consumer_key and signature are not needed
- * in this step. See http://laconi.ca/trac/ticket/827 for more informations.
- *
- * Since Laconica up to version 0.7.2 performs a full OAuth request check, a
- * correct request would fail.
- **/
- public $performLegacyAuthRequest = true;
-
- /* Helper stuff we are going to need. */
- protected $fetcher;
- protected $oauth_consumer;
- protected $datastore;
-
- /**
- * Constructor for OMB_Service_Consumer
- *
- * Initializes an OMB_Service_Consumer object representing the OMB service
- * specified by $service_url. Performs a complete service discovery using
- * Yadis.
- * Throws OMB_UnsupportedServiceException if XRDS file does not specify a
- * complete OMB service.
- *
- * @param string $service_url The URL of the service
- * @param string $consumer_url An URL representing the consumer
- * @param OMB_Datastore $datastore An instance of a class implementing
- * OMB_Datastore
- *
- * @access public
- **/
- public function __construct ($service_url, $consumer_url, $datastore) {
- $this->url = $service_url;
- $this->fetcher = Auth_Yadis_Yadis::getHTTPFetcher();
- $this->datastore = $datastore;
- $this->oauth_consumer = new OAuthConsumer($consumer_url, '');
-
- $xrds = OMB_Yadis_XRDS::fromYadisURL($service_url, $this->fetcher);
-
- /* Detect our services. This performs a validation as well, since
- getService und getXRD throw exceptions on failure. */
- $this->services = array();
-
- foreach (array(OAUTH_DISCOVERY => OMB_Helper::$OAUTH_SERVICES,
- OMB_VERSION => OMB_Helper::$OMB_SERVICES)
- as $service_root => $targetservices) {
- $uris = $xrds->getService($service_root)->getURIs();
- $xrd = $xrds->getXRD($uris[0]);
- foreach ($targetservices as $targetservice) {
- $yadis_service = $xrd->getService($targetservice);
- if ($targetservice == OAUTH_ENDPOINT_REQUEST) {
- $localid = $yadis_service->getElements('xrd:LocalID');
- $this->listener_uri = $yadis_service->parser->content($localid[0]);
+ * @package OMB
+ * @author Adrian Lang <mail@adrianlang.de>
+ * @license http://www.gnu.org/licenses/agpl.html GNU AGPL 3.0
+ * @version 0.1a-20090828
+ * @link http://adrianlang.de/libomb
+ */
+
+require_once 'Validate.php';
+require_once 'Auth/Yadis/Yadis.php';
+require_once 'OAuth.php';
+require_once 'constants.php';
+require_once 'helper.php';
+require_once 'omb_yadis_xrds.php';
+require_once 'profile.php';
+require_once 'remoteserviceexception.php';
+require_once 'unsupportedserviceexception.php';
+
+/**
+ * OMB service representation
+ *
+ * This class represents a complete remote OMB service. It provides discovery
+ * and execution of the service’s methods.
+ */
+class OMB_Service_Consumer
+{
+ protected $url; /* The service URL */
+ protected $services; /* An array of strings mapping service URI to
+ service URL */
+
+ protected $token; /* An OAuthToken */
+
+ protected $listener_uri; /* The URI identifying the listener, i. e. the
+ remote user. */
+
+ protected $listenee_uri; /* The URI identifying the listenee, i. e. the
+ local user during an auth request. */
+
+ /**
+ * According to OAuth Core 1.0, an user authorization request is no
+ * full-blown OAuth request. nonce, timestamp, consumer_key and signature
+ * are not needed in this step. See http://laconi.ca/trac/ticket/827 for
+ * more informations.
+ *
+ * Since Laconica up to version 0.7.2 performs a full OAuth request check, a
+ * correct request would fail.
+ */
+ public $performLegacyAuthRequest = true;
+
+ /* Helper stuff we are going to need. */
+ protected $fetcher;
+ protected $oauth_consumer;
+ protected $datastore;
+
+ /**
+ * Constructor for OMB_Service_Consumer
+ *
+ * Initializes an OMB_Service_Consumer object representing the OMB service
+ * specified by $service_url. Performs a complete service discovery using
+ * Yadis.
+ * Throws OMB_UnsupportedServiceException if XRDS file does not specify a
+ * complete OMB service.
+ *
+ * @param string $service_url The URL of the service
+ * @param string $consumer_url An URL representing the consumer
+ * @param OMB_Datastore $datastore An instance of a class implementing
+ * OMB_Datastore
+ *
+ * @access public
+ */
+ public function __construct ($service_url, $consumer_url, $datastore)
+ {
+ $this->url = $service_url;
+ $this->fetcher = Auth_Yadis_Yadis::getHTTPFetcher();
+ $this->datastore = $datastore;
+ $this->oauth_consumer = new OAuthConsumer($consumer_url, '');
+
+ $xrds = OMB_Yadis_XRDS::fromYadisURL($service_url, $this->fetcher);
+
+ /* Detect our services. This performs a validation as well, since
+ getService und getXRD throw exceptions on failure. */
+ $this->services = array();
+
+ foreach (array(OAUTH_DISCOVERY => OMB_Helper::$OAUTH_SERVICES,
+ OMB_VERSION => OMB_Helper::$OMB_SERVICES)
+ as $service_root => $targetservices) {
+ $uris = $xrds->getService($service_root)->getURIs();
+ $xrd = $xrds->getXRD($uris[0]);
+ foreach ($targetservices as $targetservice) {
+ $yadis_service = $xrd->getService($targetservice);
+ if ($targetservice == OAUTH_ENDPOINT_REQUEST) {
+ $localid =
+ $yadis_service->getElements('xrd:LocalID');
+ $this->listener_uri =
+ $yadis_service->parser->content($localid[0]);
+ }
+ $uris = $yadis_service->getURIs();
+ $this->services[$targetservice] = $uris[0];
+ }
}
- $uris = $yadis_service->getURIs();
- $this->services[$targetservice] = $uris[0];
- }
}
- }
-
- /**
- * Get the handler URI for a service
- *
- * Returns the URI the remote web service has specified for the given
- * service.
- *
- * @param string $service The URI identifying the service
- *
- * @access public
- *
- * @return string The service handler URI
- **/
- public function getServiceURI($service) {
- return $this->services[$service];
- }
-
- /**
- * Get the remote user’s URI
- *
- * Returns the URI of the remote user, i. e. the listener.
- *
- * @access public
- *
- * @return string The remote user’s URI
- **/
- public function getRemoteUserURI() {
- return $this->listener_uri;
- }
-
- /**
- * Get the listenee’s URI
- *
- * Returns the URI of the user being subscribed to, i. e. the local user.
- *
- * @access public
- *
- * @return string The local user’s URI
- **/
- public function getListeneeURI() {
- return $this->listenee_uri;
- }
-
- /**
- * Request a request token
- *
- * Performs a token request on the service. Returns an OAuthToken on success.
- * Throws an exception if the request fails.
- *
- * @access public
- *
- * @return OAuthToken An unauthorized request token
- **/
- public function requestToken() {
- /* Set the token to null just in case the user called setToken. */
- $this->token = null;
-
- $result = $this->performAction(OAUTH_ENDPOINT_REQUEST,
- array('omb_listener' => $this->listener_uri));
- if ($result->status != 200) {
- throw OMB_RemoteServiceException::fromYadis(OAUTH_ENDPOINT_REQUEST,
- $result);
+
+ /**
+ * Get the handler URI for a service
+ *
+ * Returns the URI the remote web service has specified for the given
+ * service.
+ *
+ * @param string $service The URI identifying the service
+ *
+ * @access public
+ *
+ * @return string The service handler URI
+ */
+ public function getServiceURI($service)
+ {
+ return $this->services[$service];
}
- parse_str($result->body, $return);
- if (!isset($return['oauth_token']) || !isset($return['oauth_token_secret'])) {
- throw OMB_RemoteServiceException::fromYadis(OAUTH_ENDPOINT_REQUEST,
- $result);
+
+ /**
+ * Get the remote user’s URI
+ *
+ * Returns the URI of the remote user, i. e. the listener.
+ *
+ * @access public
+ *
+ * @return string The remote user’s URI
+ */
+ public function getRemoteUserURI()
+ {
+ return $this->listener_uri;
}
- $this->setToken($return['oauth_token'], $return['oauth_token_secret']);
- return $this->token;
- }
-
- /**
- *
- * Request authorization
- *
- * Returns an URL which equals to an authorization request. The end user
- * should be redirected to this location to perform authorization.
- * The $finish_url should be a local resource which invokes
- * OMB_Consumer::finishAuthorization on request.
- *
- * @param OMB_Profile $profile An OMB_Profile object representing the
- * soon-to-be subscribed (i. e. local) user
- * @param string $finish_url Target location after successful
- * authorization
- *
- * @access public
- *
- * @return string An URL representing an authorization request
- **/
- public function requestAuthorization($profile, $finish_url) {
- if ($this->performLegacyAuthRequest) {
- $params = $profile->asParameters('omb_listenee', false);
- $params['omb_listener'] = $this->listener_uri;
- $params['oauth_callback'] = $finish_url;
-
- $url = $this->prepareAction(OAUTH_ENDPOINT_AUTHORIZE, $params, 'GET')->to_url();
- } else {
-
- $params = array(
- 'oauth_callback' => $finish_url,
- 'oauth_token' => $this->token->key,
- 'omb_version' => OMB_VERSION,
- 'omb_listener' => $this->listener_uri);
-
- $params = array_merge($profile->asParameters('omb_listenee', false). $params);
-
- /* Build result URL. */
- $url = $this->services[OAUTH_ENDPOINT_AUTHORIZE];
- $url .= (strrpos($url, '?') === false ? '?' : '&');
- foreach ($params as $k => $v) {
- $url .= OAuthUtil::urlencode_rfc3986($k) . '=' . OAuthUtil::urlencode_rfc3986($v) . '&';
- }
+
+ /**
+ * Get the listenee’s URI
+ *
+ * Returns the URI of the user being subscribed to, i. e. the local user.
+ *
+ * @access public
+ *
+ * @return string The local user’s URI
+ */
+ public function getListeneeURI()
+ {
+ return $this->listenee_uri;
}
- $this->listenee_uri = $profile->getIdentifierURI();
-
- return $url;
- }
-
- /**
- * Finish authorization
- *
- * Finish the subscription process by converting the received and authorized
- * request token into an access token. After that, the subscriber’s profile
- * and the subscription are stored in the database.
- * Expects an OAuthRequest in query parameters.
- * Throws exceptions on failure.
- *
- * @access public
- **/
- public function finishAuthorization() {
- OMB_Helper::removeMagicQuotesFromRequest();
- $req = OAuthRequest::from_request();
- if ($req->get_parameter('oauth_token') !=
- $this->token->key) {
- /* That’s not the token I wanted to get authorized. */
- throw new OAuthException('The authorized token does not equal the ' .
- 'submitted token.');
+ /**
+ * Request a request token
+ *
+ * Performs a token request on the service. Returns an OAuthToken on success.
+ * Throws an exception if the request fails.
+ *
+ * @access public
+ *
+ * @return OAuthToken An unauthorized request token
+ */
+ public function requestToken()
+ {
+ /* Set the token to null just in case the user called setToken. */
+ $this->token = null;
+
+ $result = $this->performAction(OAUTH_ENDPOINT_REQUEST,
+ array('omb_listener' => $this->listener_uri));
+ if ($result->status != 200) {
+ throw OMB_RemoteServiceException::fromYadis(OAUTH_ENDPOINT_REQUEST,
+ $result);
+ }
+ parse_str($result->body, $return);
+ if (!isset($return['oauth_token']) ||
+ !isset($return['oauth_token_secret'])) {
+ throw OMB_RemoteServiceException::fromYadis(OAUTH_ENDPOINT_REQUEST,
+ $result);
+ }
+ $this->setToken($return['oauth_token'], $return['oauth_token_secret']);
+ return $this->token;
}
- if ($req->get_parameter('omb_version') != OMB_VERSION) {
- throw new OMB_RemoteServiceException('The remote service uses an ' .
- 'unsupported OMB version');
+ /**
+ * Request authorization
+ *
+ * Returns an URL which equals to an authorization request. The end user
+ * should be redirected to this location to perform authorization.
+ * The $finish_url should be a local resource which invokes
+ * OMB_Consumer::finishAuthorization on request.
+ *
+ * @param OMB_Profile $profile An OMB_Profile object representing the
+ * soon-to-be subscribed (i. e. local) user
+ * @param string $finish_url Target location after successful
+ * authorization
+ *
+ * @access public
+ *
+ * @return string An URL representing an authorization request
+ */
+ public function requestAuthorization($profile, $finish_url)
+ {
+ if ($this->performLegacyAuthRequest) {
+ $params = $profile->asParameters('omb_listenee',
+ false);
+ $params['omb_listener'] = $this->listener_uri;
+ $params['oauth_callback'] = $finish_url;
+
+ $url = $this->prepareAction(OAUTH_ENDPOINT_AUTHORIZE, $params,
+ 'GET')->to_url();
+ } else {
+ $params = array('oauth_callback' => $finish_url,
+ 'oauth_token' => $this->token->key,
+ 'omb_version' => OMB_VERSION,
+ 'omb_listener' => $this->listener_uri);
+
+ $params = array_merge($profile->asParameters('omb_listenee', false),
+ $params);
+
+ /* Build result URL. */
+ $url = $this->services[OAUTH_ENDPOINT_AUTHORIZE] .
+ (strrpos($url, '?') === false ? '?' : '&');
+ foreach ($params as $k => $v) {
+ $url .= OAuthUtil::urlencode_rfc3986($k) . '=' .
+ OAuthUtil::urlencode_rfc3986($v) . '&';
+ }
+ }
+
+ $this->listenee_uri = $profile->getIdentifierURI();
+
+ return $url;
}
- /* Construct the profile to validate it. */
+ /**
+ * Finish authorization
+ *
+ * Finish the subscription process by converting the received and authorized
+ * request token into an access token. After that, the subscriber’s profile
+ * and the subscription are stored in the database.
+ * Expects an OAuthRequest in query parameters.
+ * Throws exceptions on failure.
+ *
+ * @access public
+ */
+ public function finishAuthorization()
+ {
+ OMB_Helper::removeMagicQuotesFromRequest();
+ $req = OAuthRequest::from_request();
+ if ($req->get_parameter('oauth_token') != $this->token->key) {
+ /* That’s not the token I wanted to get authorized. */
+ throw new OAuthException('The authorized token does not equal ' .
+ 'the submitted token.');
+ }
+
+ if ($req->get_parameter('omb_version') != OMB_VERSION) {
+ throw new OMB_RemoteServiceException('The remote service uses an ' .
+ 'unsupported OMB version');
+ }
+
+ /* Construct the profile to validate it. */
+
+ /* Fix OMB bug. Listener URI is not passed. */
+ if ($_SERVER['REQUEST_METHOD'] == 'POST') {
+ $params = $_POST;
+ } else {
+ $params = $_GET;
+ }
+ $params['omb_listener'] = $this->listener_uri;
+
+ $listener = OMB_Profile::fromParameters($params, 'omb_listener');
- /* Fix OMB bug. Listener URI is not passed. */
- if ($_SERVER['REQUEST_METHOD'] == 'POST') {
- $params = $_POST;
- } else {
- $params = $_GET;
+ /* Ask the remote service to convert the authorized request token into
+ an access token. */
+
+ $result = $this->performAction(OAUTH_ENDPOINT_ACCESS, array());
+ if ($result->status != 200) {
+ throw new OAuthException('Could not get access token');
+ }
+
+ parse_str($result->body, $return);
+ if (!isset($return['oauth_token']) ||
+ !isset($return['oauth_token_secret'])) {
+ throw new OAuthException('Could not get access token');
+ }
+ $this->setToken($return['oauth_token'], $return['oauth_token_secret']);
+
+ /* Subscription is finished and valid. Now store the new subscriber and
+ the subscription in the database. */
+
+ $this->datastore->saveProfile($listener);
+ $this->datastore->saveSubscription($this->listener_uri,
+ $this->listenee_uri,
+ $this->token);
+ }
+
+ /**
+ * Return the URI identifying the listener
+ *
+ * Returns the URI for the OMB user who tries to subscribe or already has
+ * subscribed our user. This method is a workaround for a serious OMB flaw:
+ * The Listener URI is not passed in the finishauthorization call.
+ *
+ * @access public
+ *
+ * @return string the listener’s URI
+ */
+ public function getListenerURI()
+ {
+ return $this->listener_uri;
}
- $params['omb_listener'] = $this->listener_uri;
- require_once 'profile.php';
- $listener = OMB_Profile::fromParameters($params, 'omb_listener');
+ /**
+ * Inform the service about a profile update
+ *
+ * Sends an updated profile to the service.
+ *
+ * @param OMB_Profile $profile The profile that has changed
+ *
+ * @access public
+ */
+ public function updateProfile($profile)
+ {
+ $params = $profile->asParameters('omb_listenee', true);
+ $this->performOMBAction(OMB_ENDPOINT_UPDATEPROFILE, $params,
+ $profile->getIdentifierURI());
+ }
- /* Ask the remote service to convert the authorized request token into an
- access token. */
+ /**
+ * Inform the service about a new notice
+ *
+ * Sends a notice to the service.
+ *
+ * @param OMB_Notice $notice The notice
+ *
+ * @access public
+ */
+ public function postNotice($notice)
+ {
+ $params = $notice->asParameters();
+ $params['omb_listenee'] = $notice->getAuthor()->getIdentifierURI();
+ $this->performOMBAction(OMB_ENDPOINT_POSTNOTICE, $params,
+ $params['omb_listenee']);
+ }
- $result = $this->performAction(OAUTH_ENDPOINT_ACCESS, array());
- if ($result->status != 200) {
- throw new OAuthException('Could not get access token');
+ /**
+ * Set the token member variable
+ *
+ * Initializes the token based on given token and secret token.
+ *
+ * @param string $token The token
+ * @param string $secret The secret token
+ *
+ * @access public
+ */
+ public function setToken($token, $secret)
+ {
+ $this->token = new OAuthToken($token, $secret);
}
- parse_str($result->body, $return);
- if (!isset($return['oauth_token']) || !isset($return['oauth_token_secret'])) {
- throw new OAuthException('Could not get access token');
+ /**
+ * Prepare an OAuthRequest object
+ *
+ * Creates an OAuthRequest object mapping the request specified by the
+ * parameters.
+ *
+ * @param string $action_uri The URI specifying the target service
+ * @param array $params Additional parameters for the service call
+ * @param string $method The HTTP method used to call the service
+ * ('POST' or 'GET', usually)
+ *
+ * @access protected
+ *
+ * @return OAuthRequest the prepared request
+ */
+ protected function prepareAction($action_uri, $params, $method)
+ {
+ $url = $this->services[$action_uri];
+
+ $url_params = array();
+ parse_str(parse_url($url, PHP_URL_QUERY), $url_params);
+
+ /* Add OMB version. */
+ $url_params['omb_version'] = OMB_VERSION;
+
+ /* Add user-defined parameters. */
+ $url_params = array_merge($url_params, $params);
+
+ $req = OAuthRequest::from_consumer_and_token($this->oauth_consumer,
+ $this->token, $method,
+ $url, $url_params);
+
+ /* Sign the request. */
+ $req->sign_request(new OAuthSignatureMethod_HMAC_SHA1(),
+ $this->oauth_consumer, $this->token);
+
+ return $req;
}
- $this->setToken($return['oauth_token'], $return['oauth_token_secret']);
-
- /* Subscription is finished and valid. Now store the new subscriber and the
- subscription in the database. */
-
- $this->datastore->saveProfile($listener);
- $this->datastore->saveSubscription($this->listener_uri,
- $this->listenee_uri,
- $this->token);
- }
-
- /**
- * Return the URI identifying the listener
- *
- * Returns the URI for the OMB user who tries to subscribe or already has
- * subscribed our user. This method is a workaround for a serious OMB flaw:
- * The Listener URI is not passed in the finishauthorization call.
- *
- * @access public
- *
- * @return string the listener’s URI
- **/
- public function getListenerURI() {
- return $this->listener_uri;
- }
-
- /**
- * Inform the service about a profile update
- *
- * Sends an updated profile to the service.
- *
- * @param OMB_Profile $profile The profile that has changed
- *
- * @access public
- **/
- public function updateProfile($profile) {
- $params = $profile->asParameters('omb_listenee', true);
- $this->performOMBAction(OMB_ENDPOINT_UPDATEPROFILE, $params, $profile->getIdentifierURI());
- }
-
- /**
- * Inform the service about a new notice
- *
- * Sends a notice to the service.
- *
- * @param OMB_Notice $notice The notice
- *
- * @access public
- **/
- public function postNotice($notice) {
- $params = $notice->asParameters();
- $params['omb_listenee'] = $notice->getAuthor()->getIdentifierURI();
- $this->performOMBAction(OMB_ENDPOINT_POSTNOTICE, $params, $params['omb_listenee']);
- }
-
- /**
- * Set the token member variable
- *
- * Initializes the token based on given token and secret token.
- *
- * @param string $token The token
- * @param string $secret The secret token
- *
- * @access public
- **/
- public function setToken($token, $secret) {
- $this->token = new OAuthToken($token, $secret);
- }
-
- /**
- * Prepare an OAuthRequest object
- *
- * Creates an OAuthRequest object mapping the request specified by the
- * parameters.
- *
- * @param string $action_uri The URI specifying the target service
- * @param array $params Additional parameters for the service call
- * @param string $method The HTTP method used to call the service
- * ('POST' or 'GET', usually)
- *
- * @access protected
- *
- * @return OAuthRequest the prepared request
- **/
- protected function prepareAction($action_uri, $params, $method) {
- $url = $this->services[$action_uri];
-
- $url_params = array();
- parse_str(parse_url($url, PHP_URL_QUERY), $url_params);
-
- /* Add OMB version. */
- $url_params['omb_version'] = OMB_VERSION;
-
- /* Add user-defined parameters. */
- $url_params = array_merge($url_params, $params);
-
- $req = OAuthRequest::from_consumer_and_token($this->oauth_consumer,
- $this->token, $method, $url, $url_params);
-
- /* Sign the request. */
- $req->sign_request(new OAuthSignatureMethod_HMAC_SHA1(),
- $this->oauth_consumer, $this->token);
-
- return $req;
- }
-
- /**
- * Perform a service call
- *
- * Creates an OAuthRequest object and execute the mapped call as POST request.
- *
- * @param string $action_uri The URI specifying the target service
- * @param array $params Additional parameters for the service call
- *
- * @access protected
- *
- * @return Auth_Yadis_HTTPResponse The POST request response
- **/
- protected function performAction($action_uri, $params) {
- $req = $this->prepareAction($action_uri, $params, 'POST');
-
- /* Return result page. */
- return $this->fetcher->post($req->get_normalized_http_url(), $req->to_postdata(), array());
- }
-
- /**
- * Perform an OMB action
- *
- * Executes an OMB action – to date, it’s one of updateProfile or postNotice.
- *
- * @param string $action_uri The URI specifying the target service
- * @param array $params Additional parameters for the service call
- * @param string $listenee_uri The URI identifying the local user for whom
- * the action is performed
- *
- * @access protected
- **/
- protected function performOMBAction($action_uri, $params, $listenee_uri) {
- $result = $this->performAction($action_uri, $params);
- if ($result->status == 403) {
- /* The remote user unsubscribed us. */
- $this->datastore->deleteSubscription($this->listener_uri, $listenee_uri);
- } else if ($result->status != 200 ||
- strpos($result->body, 'omb_version=' . OMB_VERSION) === false) {
- /* The server signaled an error or sent an incorrect response. */
- throw OMB_RemoteServiceException::fromYadis($action_uri, $result);
+
+ /**
+ * Perform a service call
+ *
+ * Creates an OAuthRequest object and execute the mapped call as POST
+ * request.
+ *
+ * @param string $action_uri The URI specifying the target service
+ * @param array $params Additional parameters for the service call
+ *
+ * @access protected
+ *
+ * @return Auth_Yadis_HTTPResponse The POST request response
+ */
+ protected function performAction($action_uri, $params)
+ {
+ $req = $this->prepareAction($action_uri, $params, 'POST');
+
+ /* Return result page. */
+ return $this->fetcher->post($req->get_normalized_http_url(),
+ $req->to_postdata(), array());
+ }
+
+ /**
+ * Perform an OMB action
+ *
+ * Executes an OMB action – as of OMB 0.1, it’s one of updateProfile and
+ * postNotice.
+ *
+ * @param string $action_uri The URI specifying the target service
+ * @param array $params Additional parameters for the service call
+ * @param string $listenee_uri The URI identifying the local user for whom
+ * the action is performed
+ *
+ * @access protected
+ */
+ protected function performOMBAction($action_uri, $params, $listenee_uri)
+ {
+ $result = $this->performAction($action_uri, $params);
+ if ($result->status == 403) {
+ /* The remote user unsubscribed us. */
+ $this->datastore->deleteSubscription($this->listener_uri,
+ $listenee_uri);
+ } else if ($result->status != 200 ||
+ strpos($result->body, 'omb_version=' . OMB_VERSION) === false) {
+ /* The server signaled an error or sent an incorrect response. */
+ throw OMB_RemoteServiceException::fromYadis($action_uri, $result);
+ }
}
- }
}
+?>
diff --git a/extlib/libomb/service_provider.php b/extlib/libomb/service_provider.php
index a1c69e86f..9a1a488a6 100755
--- a/extlib/libomb/service_provider.php
+++ b/extlib/libomb/service_provider.php
@@ -1,13 +1,6 @@
<?php
-
-require_once 'constants.php';
-require_once 'remoteserviceexception.php';
-require_once 'helper.php';
-
/**
- * OMB service realization
- *
- * This class realizes a complete, simple OMB service.
+ * This file is part of libomb
*
* PHP version 5
*
@@ -24,406 +17,445 @@ require_once 'helper.php';
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
- * @package OMB
- * @author Adrian Lang <mail@adrianlang.de>
- * @copyright 2009 Adrian Lang
- * @license http://www.gnu.org/licenses/agpl.html GNU AGPL 3.0
- **/
-
-class OMB_Service_Provider {
- protected $user; /* An OMB_Profile representing the user */
- protected $datastore; /* AN OMB_Datastore */
-
- protected $remote_user; /* An OMB_Profile representing the remote user during
- the authorization process */
-
- protected $oauth_server; /* An OAuthServer; should only be accessed via
- getOAuthServer. */
-
- /**
- * Initialize an OMB_Service_Provider object
- *
- * Constructs an OMB_Service_Provider instance that provides OMB services
- * referring to a particular user.
- *
- * @param OMB_Profile $user An OMB_Profile; mandatory for XRDS
- * output, user auth handling and OMB
- * action performing
- * @param OMB_Datastore $datastore An OMB_Datastore; mandatory for
- * everything but XRDS output
- * @param OAuthServer $oauth_server An OAuthServer; used for token writing
- * and OMB action handling; will use
- * default value if not set
- *
- * @access public
- **/
- public function __construct ($user = null, $datastore = null, $oauth_server = null) {
- $this->user = $user;
- $this->datastore = $datastore;
- $this->oauth_server = $oauth_server;
- }
-
- public function getRemoteUser() {
- return $this->remote_user;
- }
-
- /**
- * Write a XRDS document
- *
- * Writes a XRDS document specifying the OMB service. Optionally uses a
- * given object of a class implementing OMB_XRDS_Writer for output. Else
- * OMB_Plain_XRDS_Writer is used.
- *
- * @param OMB_XRDS_Mapper $xrds_mapper An object mapping actions to URLs
- * @param OMB_XRDS_Writer $xrds_writer Optional; The OMB_XRDS_Writer used to
- * write the XRDS document
- *
- * @access public
- *
- * @return mixed Depends on the used OMB_XRDS_Writer; OMB_Plain_XRDS_Writer
- * returns nothing.
- **/
- public function writeXRDS($xrds_mapper, $xrds_writer = null) {
- if ($xrds_writer == null) {
- require_once 'plain_xrds_writer.php';
- $xrds_writer = new OMB_Plain_XRDS_Writer();
- }
- return $xrds_writer->writeXRDS($this->user, $xrds_mapper);
- }
-
- /**
- * Echo a request token
- *
- * Outputs an unauthorized request token for the query found in $_GET or
- * $_POST.
- *
- * @access public
- **/
- public function writeRequestToken() {
- OMB_Helper::removeMagicQuotesFromRequest();
- echo $this->getOAuthServer()->fetch_request_token(OAuthRequest::from_request());
- }
-
- /**
- * Handle an user authorization request.
- *
- * Parses an authorization request. This includes OAuth and OMB verification.
- * Throws exceptions on failures. Returns an OMB_Profile object representing
- * the remote user.
- *
- * The OMB_Profile passed to the constructor of OMB_Service_Provider should
- * not represent the user specified in the authorization request, but the one
- * currently logged in to the service. This condition being satisfied,
- * handleUserAuth will check whether the listener specified in the request is
- * identical to the logged in user.
- *
- * @access public
- *
- * @return OMB_Profile The profile of the soon-to-be subscribed, i. e. remote
- * user
- **/
- public function handleUserAuth() {
- OMB_Helper::removeMagicQuotesFromRequest();
-
- /* Verify the request token. */
-
- $this->token = $this->datastore->lookup_token(null, "request", $_GET['oauth_token']);
- if (is_null($this->token)) {
- throw new OAuthException('The given request token has not been issued ' .
- 'by this service.');
+ * @package OMB
+ * @author Adrian Lang <mail@adrianlang.de>
+ * @license http://www.gnu.org/licenses/agpl.html GNU AGPL 3.0
+ * @version 0.1a-20090828
+ * @link http://adrianlang.de/libomb
+ */
+
+require_once 'constants.php';
+require_once 'helper.php';
+require_once 'notice.php';
+require_once 'remoteserviceexception.php';
+
+/**
+ * OMB service realization
+ *
+ * This class realizes a complete, simple OMB service.
+ */
+class OMB_Service_Provider
+{
+ protected $user; /* An OMB_Profile representing the user */
+ protected $datastore; /* AN OMB_Datastore */
+
+ protected $remote_user; /* An OMB_Profile representing the remote user
+ during the authorization process */
+
+ protected $oauth_server; /* An OAuthServer; should only be accessed via
+ getOAuthServer. */
+
+ /**
+ * Initialize an OMB_Service_Provider object
+ *
+ * Constructs an OMB_Service_Provider instance that provides OMB services
+ * referring to a particular user.
+ *
+ * @param OMB_Profile $user An OMB_Profile; mandatory for XRDS
+ * output, user auth handling and OMB
+ * action performing
+ * @param OMB_Datastore $datastore An OMB_Datastore; mandatory for
+ * everything but XRDS output
+ * @param OAuthServer $oauth_server An OAuthServer; used for token writing
+ * and OMB action handling; will use
+ * default value if not set
+ *
+ * @access public
+ */
+ public function __construct ($user = null, $datastore = null,
+ $oauth_server = null)
+ {
+ $this->user = $user;
+ $this->datastore = $datastore;
+ $this->oauth_server = $oauth_server;
}
- /* Verify the OMB part. */
+ /**
+ * Return the remote user during user authorization
+ *
+ * Returns an OMB_Profile representing the remote user during the user
+ * authorization request.
+ *
+ * @return OMB_Profile The remote user
+ */
+ public function getRemoteUser()
+ {
+ return $this->remote_user;
+ }
- if ($_GET['omb_version'] !== OMB_VERSION) {
- throw OMB_RemoteServiceException::forRequest(OAUTH_ENDPOINT_AUTHORIZE,
- 'Wrong OMB version ' . $_GET['omb_version']);
+ /**
+ * Write a XRDS document
+ *
+ * Writes a XRDS document specifying the OMB service. Optionally uses a
+ * given object of a class implementing OMB_XRDS_Writer for output. Else
+ * OMB_Plain_XRDS_Writer is used.
+ *
+ * @param OMB_XRDS_Mapper $xrds_mapper An object mapping actions to URLs
+ * @param OMB_XRDS_Writer $xrds_writer Optional; The OMB_XRDS_Writer used to
+ * write the XRDS document
+ *
+ * @access public
+ *
+ * @return mixed Depends on the used OMB_XRDS_Writer; OMB_Plain_XRDS_Writer
+ * returns nothing.
+ */
+ public function writeXRDS($xrds_mapper, $xrds_writer = null)
+ {
+ if ($xrds_writer == null) {
+ require_once 'plain_xrds_writer.php';
+ $xrds_writer = new OMB_Plain_XRDS_Writer();
+ }
+ return $xrds_writer->writeXRDS($this->user, $xrds_mapper);
}
- if ($_GET['omb_listener'] !== $this->user->getIdentifierURI()) {
- throw OMB_RemoteServiceException::forRequest(OAUTH_ENDPOINT_AUTHORIZE,
- 'Wrong OMB listener ' . $_GET['omb_listener']);
+ /**
+ * Echo a request token
+ *
+ * Outputs an unauthorized request token for the query found in $_GET or
+ * $_POST.
+ *
+ * @access public
+ */
+ public function writeRequestToken()
+ {
+ OMB_Helper::removeMagicQuotesFromRequest();
+ echo $this->getOAuthServer()->fetch_request_token(
+ OAuthRequest::from_request());
}
- foreach (array('omb_listenee', 'omb_listenee_profile',
- 'omb_listenee_nickname', 'omb_listenee_license') as $param) {
- if (!isset($_GET[$param]) || is_null($_GET[$param])) {
- throw OMB_RemoteServiceException::forRequest(OAUTH_ENDPOINT_AUTHORIZE,
+ /**
+ * Handle an user authorization request.
+ *
+ * Parses an authorization request. This includes OAuth and OMB
+ * verification.
+ * Throws exceptions on failures. Returns an OMB_Profile object representing
+ * the remote user.
+ *
+ * The OMB_Profile passed to the constructor of OMB_Service_Provider should
+ * not represent the user specified in the authorization request, but the
+ * one currently logged in to the service. This condition being satisfied,
+ * handleUserAuth will check whether the listener specified in the request
+ * is identical to the logged in user.
+ *
+ * @access public
+ *
+ * @return OMB_Profile The profile of the soon-to-be subscribed, i. e.
+ * remote user
+ */
+ public function handleUserAuth()
+ {
+ OMB_Helper::removeMagicQuotesFromRequest();
+
+ /* Verify the request token. */
+
+ $this->token = $this->datastore->lookup_token(null, "request",
+ $_GET['oauth_token']);
+ if (is_null($this->token)) {
+ throw new OAuthException('The given request token has not been ' .
+ 'issued by this service.');
+ }
+
+ /* Verify the OMB part. */
+
+ if ($_GET['omb_version'] !== OMB_VERSION) {
+ throw OMB_RemoteServiceException::forRequest(OAUTH_ENDPOINT_AUTHORIZE,
+ 'Wrong OMB version ' .
+ $_GET['omb_version']);
+ }
+
+ if ($_GET['omb_listener'] !== $this->user->getIdentifierURI()) {
+ throw OMB_RemoteServiceException::forRequest(OAUTH_ENDPOINT_AUTHORIZE,
+ 'Wrong OMB listener ' .
+ $_GET['omb_listener']);
+ }
+
+ foreach (array('omb_listenee', 'omb_listenee_profile',
+ 'omb_listenee_nickname', 'omb_listenee_license') as $param) {
+ if (!isset($_GET[$param]) || is_null($_GET[$param])) {
+ throw OMB_RemoteServiceException::forRequest(
+ OAUTH_ENDPOINT_AUTHORIZE,
"Required parameter '$param' not found");
- }
- }
+ }
+ }
- /* Store given callback for later use. */
- if (isset($_GET['oauth_callback']) && $_GET['oauth_callback'] !== '') {
- $this->callback = $_GET['oauth_callback'];
- if (!OMB_Helper::validateURL($this->callback)) {
- throw OMB_RemoteServiceException::forRequest(OAUTH_ENDPOINT_AUTHORIZE,
- 'Invalid callback URL specified');
- }
+ /* Store given callback for later use. */
+ if (isset($_GET['oauth_callback']) && $_GET['oauth_callback'] !== '') {
+ $this->callback = $_GET['oauth_callback'];
+ if (!OMB_Helper::validateURL($this->callback)) {
+ throw OMB_RemoteServiceException::forRequest(
+ OAUTH_ENDPOINT_AUTHORIZE,
+ 'Invalid callback URL specified');
+ }
+ }
+ $this->remote_user = OMB_Profile::fromParameters($_GET, 'omb_listenee');
+
+ return $this->remote_user;
}
- $this->remote_user = OMB_Profile::fromParameters($_GET, 'omb_listenee');
-
- return $this->remote_user;
- }
-
- /**
- * Continue the OAuth dance after user authorization
- *
- * Performs the appropriate actions after user answered the authorization
- * request.
- *
- * @param bool $accepted Whether the user granted authorization
- *
- * @access public
- *
- * @return array A two-component array with the values:
- * - callback The callback URL or null if none given
- * - token The authorized request token or null if not
- * authorized.
- **/
- public function continueUserAuth($accepted) {
- $callback = $this->callback;
- if (!$accepted) {
- $this->datastore->revoke_token($this->token->key);
- $this->token = null;
- /* TODO: The handling is probably wrong in terms of OAuth 1.0 but the way
- laconica works. Moreover I don’t know the right way either. */
-
- } else {
- $this->datastore->authorize_token($this->token->key);
- $this->datastore->saveProfile($this->remote_user);
- $this->datastore->saveSubscription($this->user->getIdentifierURI(),
- $this->remote_user->getIdentifierURI(), $this->token);
-
- if (!is_null($this->callback)) {
- /* Callback wants to get some informations as well. */
- $params = $this->user->asParameters('omb_listener', false);
-
- $params['oauth_token'] = $this->token->key;
- $params['omb_version'] = OMB_VERSION;
-
- $callback .= (parse_url($this->callback, PHP_URL_QUERY) ? '&' : '?');
- foreach ($params as $k => $v) {
- $callback .= OAuthUtil::urlencode_rfc3986($k) . '=' .
- OAuthUtil::urlencode_rfc3986($v) . '&';
+
+ /**
+ * Continue the OAuth dance after user authorization
+ *
+ * Performs the appropriate actions after user answered the authorization
+ * request.
+ *
+ * @param bool $accepted Whether the user granted authorization
+ *
+ * @access public
+ *
+ * @return array A two-component array with the values:
+ * - callback The callback URL or null if none given
+ * - token The authorized request token or null if not
+ * authorized.
+ */
+ public function continueUserAuth($accepted)
+ {
+ $callback = $this->callback;
+ if (!$accepted) {
+ $this->datastore->revoke_token($this->token->key);
+ $this->token = null;
+
+ } else {
+ $this->datastore->authorize_token($this->token->key);
+ $this->datastore->saveProfile($this->remote_user);
+ $this->datastore->saveSubscription($this->user->getIdentifierURI(),
+ $this->remote_user->getIdentifierURI(),
+ $this->token);
+
+ if (!is_null($this->callback)) {
+ /* Callback wants to get some informations as well. */
+ $params = $this->user->asParameters('omb_listener', false);
+
+ $params['oauth_token'] = $this->token->key;
+ $params['omb_version'] = OMB_VERSION;
+
+ $callback .= (parse_url($this->callback, PHP_URL_QUERY) ? '&' : '?');
+ foreach ($params as $k => $v) {
+ $callback .= OAuthUtil::urlencode_rfc3986($k) . '=' .
+ OAuthUtil::urlencode_rfc3986($v) . '&';
+ }
+ }
}
- }
+ return array($callback, $this->token);
}
- return array($callback, $this->token);
- }
-
- /**
- * Echo an access token
- *
- * Outputs an access token for the query found in $_POST. OMB 0.1 specifies
- * that the access token request has to be a POST even if OAuth allows GET as
- * well.
- *
- * @access public
- **/
- public function writeAccessToken() {
- OMB_Helper::removeMagicQuotesFromRequest();
- echo $this->getOAuthServer()->fetch_access_token(
+
+ /**
+ * Echo an access token
+ *
+ * Outputs an access token for the query found in $_POST. OMB 0.1 specifies
+ * that the access token request has to be a POST even if OAuth allows GET
+ * as well.
+ *
+ * @access public
+ */
+ public function writeAccessToken()
+ {
+ OMB_Helper::removeMagicQuotesFromRequest();
+ echo $this->getOAuthServer()->fetch_access_token(
OAuthRequest::from_request('POST'));
- }
-
- /**
- * Handle an updateprofile request
- *
- * Handles an updateprofile request posted to this service. Updates the
- * profile through the OMB_Datastore.
- *
- * @access public
- *
- * @return OMB_Profile The updated profile
- **/
- public function handleUpdateProfile() {
- list($req, $profile) = $this->handleOMBRequest(OMB_ENDPOINT_UPDATEPROFILE);
- $profile->updateFromParameters($req->get_parameters(), 'omb_listenee');
- $this->datastore->saveProfile($profile);
- $this->finishOMBRequest();
- return $profile;
- }
-
- /**
- * Handle a postnotice request
- *
- * Handles a postnotice request posted to this service. Saves the notice
- * through the OMB_Datastore.
- *
- * @access public
- *
- * @return OMB_Notice The received notice
- **/
- public function handlePostNotice() {
- list($req, $profile) = $this->handleOMBRequest(OMB_ENDPOINT_POSTNOTICE);
- require_once 'notice.php';
- $notice = OMB_Notice::fromParameters($profile, $req->get_parameters());
- $this->datastore->saveNotice($notice);
- $this->finishOMBRequest();
- return $notice;
- }
-
- /**
- * Handle an OMB request
- *
- * Performs common OMB request handling.
- *
- * @param string $uri The URI defining the OMB endpoint being served
- *
- * @access protected
- *
- * @return array(OAuthRequest, OMB_Profile)
- **/
- protected function handleOMBRequest($uri) {
-
- OMB_Helper::removeMagicQuotesFromRequest();
- $req = OAuthRequest::from_request('POST');
- $listenee = $req->get_parameter('omb_listenee');
-
- try {
- list($consumer, $token) = $this->getOAuthServer()->verify_request($req);
- } catch (OAuthException $e) {
- header('HTTP/1.1 403 Forbidden');
- // @debug hack
- throw OMB_RemoteServiceException::forRequest($uri,
- 'Revoked accesstoken for ' . $listenee . ': ' . $e->getMessage());
- // @end debug
- throw OMB_RemoteServiceException::forRequest($uri,
- 'Revoked accesstoken for ' . $listenee);
}
- $version = $req->get_parameter('omb_version');
- if ($version !== OMB_VERSION) {
- header('HTTP/1.1 400 Bad Request');
- throw OMB_RemoteServiceException::forRequest($uri,
- 'Wrong OMB version ' . $version);
+ /**
+ * Handle an updateprofile request
+ *
+ * Handles an updateprofile request posted to this service. Updates the
+ * profile through the OMB_Datastore.
+ *
+ * @access public
+ *
+ * @return OMB_Profile The updated profile
+ */
+ public function handleUpdateProfile()
+ {
+ list($req, $profile) = $this->handleOMBRequest(OMB_ENDPOINT_UPDATEPROFILE);
+ $profile->updateFromParameters($req->get_parameters(), 'omb_listenee');
+ $this->datastore->saveProfile($profile);
+ $this->finishOMBRequest();
+ return $profile;
}
- $profile = $this->datastore->getProfile($listenee);
- if (is_null($profile)) {
- header('HTTP/1.1 400 Bad Request');
- throw OMB_RemoteServiceException::forRequest($uri,
- 'Unknown remote profile ' . $listenee);
+ /**
+ * Handle a postnotice request
+ *
+ * Handles a postnotice request posted to this service. Saves the notice
+ * through the OMB_Datastore.
+ *
+ * @access public
+ *
+ * @return OMB_Notice The received notice
+ */
+ public function handlePostNotice()
+ {
+ list($req, $profile) = $this->handleOMBRequest(OMB_ENDPOINT_POSTNOTICE);
+
+ $notice = OMB_Notice::fromParameters($profile, $req->get_parameters());
+ $this->datastore->saveNotice($notice);
+ $this->finishOMBRequest();
+
+ return $notice;
}
- $subscribers = $this->datastore->getSubscriptions($listenee);
- if (count($subscribers) === 0) {
- header('HTTP/1.1 403 Forbidden');
- throw OMB_RemoteServiceException::forRequest($uri,
- 'No subscriber for ' . $listenee);
- }
+ /**
+ * Handle an OMB request
+ *
+ * Performs common OMB request handling.
+ *
+ * @param string $uri The URI defining the OMB endpoint being served
+ *
+ * @access protected
+ *
+ * @return array(OAuthRequest, OMB_Profile)
+ */
+ protected function handleOMBRequest($uri)
+ {
+ OMB_Helper::removeMagicQuotesFromRequest();
+ $req = OAuthRequest::from_request('POST');
+ $listenee = $req->get_parameter('omb_listenee');
+
+ try {
+ list($consumer, $token) = $this->getOAuthServer()->verify_request($req);
+ } catch (OAuthException $e) {
+ header('HTTP/1.1 403 Forbidden');
+ throw OMB_RemoteServiceException::forRequest($uri,
+ 'Revoked accesstoken for ' . $listenee);
+ }
- return array($req, $profile);
- }
-
- /**
- * Finishes an OMB request handling
- *
- * Performs common OMB request handling finishing.
- *
- * @access protected
- **/
- protected function finishOMBRequest() {
- header('HTTP/1.1 200 OK');
- header('Content-type: text/plain');
- /* There should be no clutter but the version. */
- echo "omb_version=" . OMB_VERSION;
- }
-
- /**
- * Return an OAuthServer
- *
- * Checks whether the OAuthServer is null. If so, initializes it with a
- * default value. Returns the OAuth server.
- *
- * @access protected
- **/
- protected function getOAuthServer() {
- if (is_null($this->oauth_server)) {
- $this->oauth_server = new OAuthServer($this->datastore);
- $this->oauth_server->add_signature_method(
- new OAuthSignatureMethod_HMAC_SHA1());
+ $version = $req->get_parameter('omb_version');
+ if ($version !== OMB_VERSION) {
+ header('HTTP/1.1 400 Bad Request');
+ throw OMB_RemoteServiceException::forRequest($uri,
+ 'Wrong OMB version ' . $version);
+ }
+
+ $profile = $this->datastore->getProfile($listenee);
+ if (is_null($profile)) {
+ header('HTTP/1.1 400 Bad Request');
+ throw OMB_RemoteServiceException::forRequest($uri,
+ 'Unknown remote profile ' . $listenee);
+ }
+
+ $subscribers = $this->datastore->getSubscriptions($listenee);
+ if (count($subscribers) === 0) {
+ header('HTTP/1.1 403 Forbidden');
+ throw OMB_RemoteServiceException::forRequest($uri,
+ 'No subscriber for ' . $listenee);
+ }
+
+ return array($req, $profile);
}
- return $this->oauth_server;
- }
-
- /**
- * Publish a notice
- *
- * Posts an OMB notice. This includes storing the notice and posting it to
- * subscribed users.
- *
- * @param OMB_Notice $notice The new notice
- *
- * @access public
- *
- * @return array An array mapping subscriber URIs to the exception posting to
- * them has raised; Empty array if no exception occured
- **/
- public function postNotice($notice) {
- $uri = $this->user->getIdentifierURI();
-
- /* $notice is passed by reference and may change. */
- $this->datastore->saveNotice($notice);
- $subscribers = $this->datastore->getSubscriptions($uri);
-
- /* No one to post to. */
- if (is_null($subscribers)) {
- return array();
+
+ /**
+ * Finishes an OMB request handling
+ *
+ * Performs common OMB request handling finishing.
+ *
+ * @access protected
+ */
+ protected function finishOMBRequest()
+ {
+ header('HTTP/1.1 200 OK');
+ header('Content-type: text/plain');
+ /* There should be no clutter but the version. */
+ echo "omb_version=" . OMB_VERSION;
}
- require_once 'service_consumer.php';
-
- $err = array();
- foreach($subscribers as $subscriber) {
- try {
- $service = new OMB_Service_Consumer($subscriber['uri'], $uri, $this->datastore);
- $service->setToken($subscriber['token'], $subscriber['secret']);
- $service->postNotice($notice);
- } catch (Exception $e) {
- $err[$subscriber['uri']] = $e;
- continue;
- }
+ /**
+ * Return an OAuthServer
+ *
+ * Checks whether the OAuthServer is null. If so, initializes it with a
+ * default value. Returns the OAuth server.
+ *
+ * @access protected
+ */
+ protected function getOAuthServer()
+ {
+ if (is_null($this->oauth_server)) {
+ $this->oauth_server = new OAuthServer($this->datastore);
+ $this->oauth_server->add_signature_method(
+ new OAuthSignatureMethod_HMAC_SHA1());
+ }
+ return $this->oauth_server;
}
- return $err;
- }
-
- /**
- * Publish a profile update
- *
- * Posts the current profile as an OMB profile update. This includes updating
- * the stored profile and posting it to subscribed users.
- *
- * @access public
- *
- * @return array An array mapping subscriber URIs to the exception posting to
- * them has raised; Empty array if no exception occured
- **/
- public function updateProfile() {
- $uri = $this->user->getIdentifierURI();
-
- $this->datastore->saveProfile($this->user);
- $subscribers = $this->datastore->getSubscriptions($uri);
-
- /* No one to post to. */
- if (is_null($subscribers)) {
- return array();
+
+ /**
+ * Publish a notice
+ *
+ * Posts an OMB notice. This includes storing the notice and posting it to
+ * subscribed users.
+ *
+ * @param OMB_Notice $notice The new notice
+ *
+ * @access public
+ *
+ * @return array An array mapping subscriber URIs to the exception posting
+ * to them has raised; Empty array if no exception occured
+ */
+ public function postNotice($notice)
+ {
+ $uri = $this->user->getIdentifierURI();
+
+ /* $notice is passed by reference and may change. */
+ $this->datastore->saveNotice($notice);
+ $subscribers = $this->datastore->getSubscriptions($uri);
+
+ /* No one to post to. */
+ if (is_null($subscribers)) {
+ return array();
+ }
+
+ require_once 'service_consumer.php';
+
+ $err = array();
+ foreach ($subscribers as $subscriber) {
+ try {
+ $service = new OMB_Service_Consumer($subscriber['uri'], $uri,
+ $this->datastore);
+ $service->setToken($subscriber['token'], $subscriber['secret']);
+ $service->postNotice($notice);
+ } catch (Exception $e) {
+ $err[$subscriber['uri']] = $e;
+ continue;
+ }
+ }
+ return $err;
}
- require_once 'service_consumer.php';
-
- $err = array();
- foreach($subscribers as $subscriber) {
- try {
- $service = new OMB_Service_Consumer($subscriber['uri'], $uri, $this->datastore);
- $service->setToken($subscriber['token'], $subscriber['secret']);
- $service->updateProfile($this->user);
- } catch (Exception $e) {
- $err[$subscriber['uri']] = $e;
- continue;
- }
+ /**
+ * Publish a profile update
+ *
+ * Posts the current profile as an OMB profile update. This includes
+ * updating the stored profile and posting it to subscribed users.
+ *
+ * @access public
+ *
+ * @return array An array mapping subscriber URIs to the exception posting
+ * to them has raised; Empty array if no exception occured
+ */
+ public function updateProfile()
+ {
+ $uri = $this->user->getIdentifierURI();
+
+ $this->datastore->saveProfile($this->user);
+ $subscribers = $this->datastore->getSubscriptions($uri);
+
+ /* No one to post to. */
+ if (is_null($subscribers)) {
+ return array();
+ }
+
+ require_once 'service_consumer.php';
+
+ $err = array();
+ foreach ($subscribers as $subscriber) {
+ try {
+ $service = new OMB_Service_Consumer($subscriber['uri'], $uri,
+ $this->datastore);
+ $service->setToken($subscriber['token'], $subscriber['secret']);
+ $service->updateProfile($this->user);
+ } catch (Exception $e) {
+ $err[$subscriber['uri']] = $e;
+ continue;
+ }
+ }
+ return $err;
}
- return $err;
- }
}
diff --git a/extlib/libomb/unsupportedserviceexception.php b/extlib/libomb/unsupportedserviceexception.php
index 4dab63ebe..be30a1f69 100755
--- a/extlib/libomb/unsupportedserviceexception.php
+++ b/extlib/libomb/unsupportedserviceexception.php
@@ -1,9 +1,6 @@
<?php
/**
- * Exception stating that a requested service is not available
- *
- * This exception is raised when OMB_Service is asked to call a service the remote
- * server does not provide.
+ * This file is part of libomb
*
* PHP version 5
*
@@ -20,12 +17,20 @@
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
- * @package OMB
- * @author Adrian Lang <mail@adrianlang.de>
- * @copyright 2009 Adrian Lang
- * @license http://www.gnu.org/licenses/agpl.html GNU AGPL 3.0
- **/
-class OMB_UnsupportedServiceException extends Exception {
+ * @package OMB
+ * @author Adrian Lang <mail@adrianlang.de>
+ * @license http://www.gnu.org/licenses/agpl.html GNU AGPL 3.0
+ * @version 0.1a-20090828
+ * @link http://adrianlang.de/libomb
+ */
+/**
+ * Exception stating that a requested service is not available
+ *
+ * This exception is raised when OMB_Service is asked to call a service the
+ * remote server does not provide.
+ */
+class OMB_UnsupportedServiceException extends Exception
+{
}
?>
diff --git a/extlib/libomb/xrds_mapper.php b/extlib/libomb/xrds_mapper.php
index 7552154e5..8fbe65249 100755
--- a/extlib/libomb/xrds_mapper.php
+++ b/extlib/libomb/xrds_mapper.php
@@ -1,10 +1,6 @@
<?php
/**
- * Map XRDS actions to URLs
- *
- * This interface specifies classes which write the XRDS file announcing
- * the OMB server. An instance of an implementing class should be passed to
- * OMB_Service_Provider->writeXRDS.
+ * This file is part of libomb
*
* PHP version 5
*
@@ -21,13 +17,31 @@
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
- * @package OMB
- * @author Adrian Lang <mail@adrianlang.de>
- * @copyright 2009 Adrian Lang
- * @license http://www.gnu.org/licenses/agpl.html GNU AGPL 3.0
- **/
+ * @package OMB
+ * @author Adrian Lang <mail@adrianlang.de>
+ * @license http://www.gnu.org/licenses/agpl.html GNU AGPL 3.0
+ * @version 0.1a-20090828
+ * @link http://adrianlang.de/libomb
+ */
-interface OMB_XRDS_Mapper {
- public function getURL($action);
+/**
+ * Map XRDS actions to URLs
+ *
+ * This interface specifies classes which write the XRDS file announcing
+ * the OMB server. An instance of an implementing class should be passed to
+ * OMB_Service_Provider->writeXRDS.
+ */
+interface OMB_XRDS_Mapper
+{
+ /**
+ * Fetch an URL for a specified action
+ *
+ * Returns the action URL for an action specified by the endpoint URI.
+ *
+ * @param string $action The endpoint URI
+ *
+ * @return string The action URL
+ */
+ public function getURL($action);
}
?>
diff --git a/extlib/libomb/xrds_writer.php b/extlib/libomb/xrds_writer.php
index 31b451b9c..c7939d60a 100755
--- a/extlib/libomb/xrds_writer.php
+++ b/extlib/libomb/xrds_writer.php
@@ -1,10 +1,6 @@
<?php
/**
- * Write OMB-specific XRDS
- *
- * This interface specifies classes which write the XRDS file announcing
- * the OMB server. An instance of an implementing class should be passed to
- * OMB_Service_Provider->writeXRDS.
+ * This file is part of libomb
*
* PHP version 5
*
@@ -21,13 +17,30 @@
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
- * @package OMB
- * @author Adrian Lang <mail@adrianlang.de>
- * @copyright 2009 Adrian Lang
- * @license http://www.gnu.org/licenses/agpl.html GNU AGPL 3.0
- **/
+ * @package OMB
+ * @author Adrian Lang <mail@adrianlang.de>
+ * @license http://www.gnu.org/licenses/agpl.html GNU AGPL 3.0
+ * @version 0.1a-20090828
+ * @link http://adrianlang.de/libomb
+ */
-interface OMB_XRDS_Writer {
- public function writeXRDS($user, $mapper);
+/**
+ * Write OMB-specific XRDS
+ *
+ * This interface specifies classes which write the XRDS file announcing
+ * the OMB server. An instance of an implementing class should be passed to
+ * OMB_Service_Provider->writeXRDS.
+ */
+interface OMB_XRDS_Writer
+{
+ /**
+ * Write XRDS
+ *
+ * Outputs a XRDS document specifying an OMB service.
+ *
+ * @param OMB_profile $user The target user for the OMB service
+ * @param OMB_XRDS_Mapper $mapper An OMB_XRDS_Mapper providing endpoint URLs
+ */
+ public function writeXRDS($user, $mapper);
}
?>
diff --git a/js/util.js b/js/util.js
index 29b33097b..6a67da4bc 100644
--- a/js/util.js
+++ b/js/util.js
@@ -258,9 +258,10 @@ var SN = { // StatusNet
form.append('<p class="form_response success">'+result+'</p>');
}
else {
+ // New notice post was successful. If on our timeline, show it!
+ var notice = document._importNode($('li', data)[0], true);
var notices = $('#notices_primary .notices');
- if (notices.length > 0) {
- var notice = document._importNode($('li', data)[0], true);
+ if (notices.length > 0 && SN.U.belongsOnTimeline(notice)) {
if ($('#'+notice.id).length === 0) {
var notice_irt_value = $('#'+SN.C.S.NoticeInReplyTo).val();
var notice_irt = '#notices_primary #notice-'+notice_irt_value;
@@ -281,6 +282,8 @@ var SN = { // StatusNet
}
}
else {
+ // Not on a timeline that this belongs on?
+ // Just show a success message.
result = document._importNode($('title', data)[0], true);
result_title = result.textContent || result.innerHTML;
form.append('<p class="form_response success">'+result_title+'</p>');
@@ -707,6 +710,38 @@ var SN = { // StatusNet
Delete: function() {
$.cookie(SN.C.S.StatusNetInstance, null);
}
+ },
+
+ /**
+ * Check if the current page is a timeline where the current user's
+ * posts should be displayed immediately on success.
+ *
+ * @fixme this should be done in a saner way, with machine-readable
+ * info about what page we're looking at.
+ */
+ belongsOnTimeline: function(notice) {
+ var action = $("body").attr('id');
+ if (action == 'public') {
+ return true;
+ }
+
+ var profileLink = $('#nav_profile a').attr('href');
+ if (profileLink) {
+ var authorUrl = $(notice).find('.entry-title .author a.url').attr('href');
+ if (authorUrl == profileLink) {
+ if (action == 'all' || action == 'showstream') {
+ // Posts always show on your own friends and profile streams.
+ return true;
+ }
+ }
+ }
+
+ // @fixme tag, group, reply timelines should be feasible as well.
+ // Mismatch between id-based and name-based user/group links currently complicates
+ // the lookup, since all our inline mentions contain the absolute links but the
+ // UI links currently on the page use malleable names.
+
+ return false;
}
},
diff --git a/lib/activitycontext.php b/lib/activitycontext.php
index 2df7613f7..5afbb7fd2 100644
--- a/lib/activitycontext.php
+++ b/lib/activitycontext.php
@@ -51,6 +51,7 @@ class ActivityContext
const POINT = 'point';
const ATTENTION = 'ostatus:attention';
+ const MENTIONED = 'mentioned';
const CONVERSATION = 'ostatus:conversation';
function __construct($element)
@@ -76,8 +77,12 @@ class ActivityContext
$linkRel = $link->getAttribute(ActivityUtils::REL);
+ // XXX: Deprecate this in favour of "mentioned" from Salmon spec
+ // http://salmon-protocol.googlecode.com/svn/trunk/draft-panzer-salmon-00.html#SALR
if ($linkRel == self::ATTENTION) {
$this->attention[] = $link->getAttribute(self::HREF);
+ } elseif ($linkRel == self::MENTIONED) {
+ $this->attention[] = $link->getAttribute(self::HREF);
}
}
}
diff --git a/lib/activityutils.php b/lib/activityutils.php
index 401fd7fc2..dd38d4e14 100644
--- a/lib/activityutils.php
+++ b/lib/activityutils.php
@@ -257,6 +257,12 @@ class ActivityUtils
*/
static function validateUri($uri)
{
+ // Check mailto: URIs first
+
+ if (preg_match('/^mailto:(.*)$/', $uri, $match)) {
+ return Validate::email($match[1], common_config('email', 'check_domain'));
+ }
+
if (Validate::uri($uri)) {
return true;
}
diff --git a/lib/apiaction.php b/lib/apiaction.php
index e6b516453..432b32453 100644
--- a/lib/apiaction.php
+++ b/lib/apiaction.php
@@ -27,7 +27,7 @@
* @author Jeffery To <jeffery.to@gmail.com>
* @author Toby Inkster <mail@tobyinkster.co.uk>
* @author Zach Copley <zach@status.net>
- * @copyright 2009 StatusNet, Inc.
+ * @copyright 2009-2010 StatusNet, Inc.
* @copyright 2009 Free Software Foundation, Inc http://www.fsf.org
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
* @link http://status.net/
@@ -128,6 +128,7 @@ class ApiAction extends Action
var $max_id = null;
var $since_id = null;
var $source = null;
+ var $callback = null;
var $access = self::READ_ONLY; // read (default) or read-write
@@ -147,6 +148,7 @@ class ApiAction extends Action
parent::prepare($args);
$this->format = $this->arg('format');
+ $this->callback = $this->arg('callback');
$this->page = (int)$this->arg('page', 1);
$this->count = (int)$this->arg('count', 20);
$this->max_id = (int)$this->arg('max_id', 0);
@@ -463,6 +465,7 @@ class ApiAction extends Action
function twitterRssEntryArray($notice)
{
$profile = $notice->getProfile();
+
$entry = array();
// We trim() to avoid extraneous whitespace in the output
@@ -735,14 +738,16 @@ class ApiAction extends Action
'xmlns:statusnet' => 'http://status.net/schema/api/1/'));
if (is_array($notice)) {
- foreach ($notice as $n) {
- $twitter_status = $this->twitterStatusArray($n);
- $this->showTwitterXmlStatus($twitter_status);
- }
- } else {
- while ($notice->fetch()) {
+ $notice = new ArrayWrapper($notice);
+ }
+
+ while ($notice->fetch()) {
+ try {
$twitter_status = $this->twitterStatusArray($notice);
$this->showTwitterXmlStatus($twitter_status);
+ } catch (Exception $e) {
+ common_log(LOG_ERR, $e->getMessage());
+ continue;
}
}
@@ -790,14 +795,16 @@ class ApiAction extends Action
$this->element('ttl', null, '40');
if (is_array($notice)) {
- foreach ($notice as $n) {
- $entry = $this->twitterRssEntryArray($n);
- $this->showTwitterRssItem($entry);
- }
- } else {
- while ($notice->fetch()) {
+ $notice = new ArrayWrapper($notice);
+ }
+
+ while ($notice->fetch()) {
+ try {
$entry = $this->twitterRssEntryArray($notice);
$this->showTwitterRssItem($entry);
+ } catch (Exception $e) {
+ common_log(LOG_ERR, $e->getMessage());
+ // continue on exceptions
}
}
@@ -833,12 +840,15 @@ class ApiAction extends Action
$this->element('subtitle', null, $subtitle);
if (is_array($notice)) {
- foreach ($notice as $n) {
- $this->raw($n->asAtomEntry());
- }
- } else {
- while ($notice->fetch()) {
+ $notice = new ArrayWrapper($notice);
+ }
+
+ while ($notice->fetch()) {
+ try {
$this->raw($notice->asAtomEntry());
+ } catch (Exception $e) {
+ common_log(LOG_ERR, $e->getMessage());
+ continue;
}
}
@@ -1033,14 +1043,16 @@ class ApiAction extends Action
$statuses = array();
if (is_array($notice)) {
- foreach ($notice as $n) {
- $twitter_status = $this->twitterStatusArray($n);
- array_push($statuses, $twitter_status);
- }
- } else {
- while ($notice->fetch()) {
+ $notice = new ArrayWrapper($notice);
+ }
+
+ while ($notice->fetch()) {
+ try {
$twitter_status = $this->twitterStatusArray($notice);
array_push($statuses, $twitter_status);
+ } catch (Exception $e) {
+ common_log(LOG_ERR, $e->getMessage());
+ continue;
}
}
@@ -1177,9 +1189,8 @@ class ApiAction extends Action
header('Content-Type: application/json; charset=utf-8');
// Check for JSONP callback
- $callback = $this->arg('callback');
- if ($callback) {
- print $callback . '(';
+ if (isset($this->callback)) {
+ print $this->callback . '(';
}
break;
case 'rss':
@@ -1208,8 +1219,7 @@ class ApiAction extends Action
case 'json':
// Check for JSONP callback
- $callback = $this->arg('callback');
- if ($callback) {
+ if (isset($this->callback)) {
print ')';
}
break;
@@ -1239,7 +1249,10 @@ class ApiAction extends Action
$status_string = ClientErrorAction::$status[$code];
- header('HTTP/1.1 '.$code.' '.$status_string);
+ // Do not emit error header for JSONP
+ if (!isset($this->callback)) {
+ header('HTTP/1.1 '.$code.' '.$status_string);
+ }
if ($format == 'xml') {
$this->initDocument('xml');
@@ -1272,7 +1285,10 @@ class ApiAction extends Action
$status_string = ServerErrorAction::$status[$code];
- header('HTTP/1.1 '.$code.' '.$status_string);
+ // Do not emit error header for JSONP
+ if (!isset($this->callback)) {
+ header('HTTP/1.1 '.$code.' '.$status_string);
+ }
if ($content_type == 'xml') {
$this->initDocument('xml');
@@ -1376,6 +1392,34 @@ class ApiAction extends Action
}
}
+ function getTargetProfile($id)
+ {
+ if (empty($id)) {
+
+ // Twitter supports these other ways of passing the user ID
+ if (is_numeric($this->arg('id'))) {
+ return Profile::staticGet($this->arg('id'));
+ } else if ($this->arg('id')) {
+ $nickname = common_canonical_nickname($this->arg('id'));
+ return Profile::staticGet('nickname', $nickname);
+ } else if ($this->arg('user_id')) {
+ // This is to ensure that a non-numeric user_id still
+ // overrides screen_name even if it doesn't get used
+ if (is_numeric($this->arg('user_id'))) {
+ return Profile::staticGet('id', $this->arg('user_id'));
+ }
+ } else if ($this->arg('screen_name')) {
+ $nickname = common_canonical_nickname($this->arg('screen_name'));
+ return Profile::staticGet('nickname', $nickname);
+ }
+ } else if (is_numeric($id)) {
+ return Profile::staticGet($id);
+ } else {
+ $nickname = common_canonical_nickname($id);
+ return Profile::staticGet('nickname', $nickname);
+ }
+ }
+
function getTargetGroup($id)
{
if (empty($id)) {
diff --git a/lib/apiauth.php b/lib/apiauth.php
index 91cb64262..cf7a2692c 100644
--- a/lib/apiauth.php
+++ b/lib/apiauth.php
@@ -227,7 +227,7 @@ class ApiAuthAction extends ApiAction
} catch (OAuthException $e) {
common_log(LOG_WARNING, 'API OAuthException - ' . $e->getMessage());
- $this->showAuthError();
+ $this->clientError($e->getMessage(), 401, $this->format);
exit;
}
}
@@ -265,7 +265,7 @@ class ApiAuthAction extends ApiAction
// show error if the user clicks 'cancel'
- $this->showAuthError();
+ $this->clientError("Could not authenticate you.", 401, $this->format);
exit;
} else {
@@ -298,7 +298,7 @@ class ApiAuthAction extends ApiAction
$proxy,
$ip);
common_log(LOG_WARNING, $msg);
- $this->showAuthError();
+ $this->clientError("Could not authenticate you.", 401, $this->format);
exit;
}
}
@@ -345,36 +345,4 @@ class ApiAuthAction extends ApiAction
}
}
}
-
- /**
- * Output an authentication error message. Use XML or JSON if one
- * of those formats is specified, otherwise output plain text
- *
- * @return void
- */
-
- function showAuthError()
- {
- header('HTTP/1.1 401 Unauthorized');
- $msg = 'Could not authenticate you.';
-
- if ($this->format == 'xml') {
- header('Content-Type: application/xml; charset=utf-8');
- $this->startXML();
- $this->elementStart('hash');
- $this->element('error', null, $msg);
- $this->element('request', null, $_SERVER['REQUEST_URI']);
- $this->elementEnd('hash');
- $this->endXML();
- } elseif ($this->format == 'json') {
- header('Content-Type: application/json; charset=utf-8');
- $error_array = array('error' => $msg,
- 'request' => $_SERVER['REQUEST_URI']);
- print(json_encode($error_array));
- } else {
- header('Content-type: text/plain');
- print "$msg\n";
- }
- }
-
}
diff --git a/lib/atomnoticefeed.php b/lib/atomnoticefeed.php
index 6ed803ce4..b88217291 100644
--- a/lib/atomnoticefeed.php
+++ b/lib/atomnoticefeed.php
@@ -125,12 +125,17 @@ class AtomNoticeFeed extends Atom10Feed
*/
function addEntryFromNotice($notice)
{
- $source = $this->showSource();
- $author = $this->showAuthor();
+ try {
+ $source = $this->showSource();
+ $author = $this->showAuthor();
- $cur = empty($this->cur) ? common_current_user() : $this->cur;
+ $cur = empty($this->cur) ? common_current_user() : $this->cur;
- $this->addEntryRaw($notice->asAtomEntry(false, $source, $author, $cur));
+ $this->addEntryRaw($notice->asAtomEntry(false, $source, $author, $cur));
+ } catch (Exception $e) {
+ common_log(LOG_ERR, $e->getMessage());
+ // we continue on exceptions
+ }
}
function showSource()
diff --git a/lib/common.php b/lib/common.php
index 72a1b7075..f04bd64b7 100644
--- a/lib/common.php
+++ b/lib/common.php
@@ -22,10 +22,10 @@ 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.2');
+define('STATUSNET_VERSION', '0.9.3');
define('LACONICA_VERSION', STATUSNET_VERSION); // compatibility
-define('STATUSNET_CODENAME', 'King of Birds');
+define('STATUSNET_CODENAME', 'Half a World Away');
define('AVATAR_PROFILE_SIZE', 96);
define('AVATAR_STREAM_SIZE', 48);
diff --git a/lib/installer.php b/lib/installer.php
index bd9d69cd4..ff2bed140 100644
--- a/lib/installer.php
+++ b/lib/installer.php
@@ -91,7 +91,7 @@ abstract class Installer
}
if (version_compare(PHP_VERSION, '5.2.3', '<')) {
- $errors[] = 'Require PHP version 5.2.3 or greater.';
+ $this->warning('Require PHP version 5.2.3 or greater.');
$pass = false;
}
diff --git a/lib/language.php b/lib/language.php
index 1805707ad..d93e4e0ad 100644
--- a/lib/language.php
+++ b/lib/language.php
@@ -213,16 +213,16 @@ function _mdomain($backtrace)
$plug = strpos($path, '/plugins/');
if ($plug === false) {
// We're not in a plugin; return default domain.
- return 'statusnet';
+ $final = 'statusnet';
} else {
$cut = $plug + 9;
$cut2 = strpos($path, '/', $cut);
if ($cut2) {
- $cached[$path] = substr($path, $cut, $cut2 - $cut);
+ $final = substr($path, $cut, $cut2 - $cut);
} else {
// We might be running directly from the plugins dir?
// If so, there's no place to store locale info.
- return 'statusnet';
+ $final = 'statusnet';
}
}
$cached[$path] = $final;
@@ -307,6 +307,7 @@ function get_all_languages() {
'br' => array('q' => 0.8, 'lang' => 'br', 'name' => 'Breton', 'direction' => 'ltr'),
'ca' => array('q' => 0.5, 'lang' => 'ca', 'name' => 'Catalan', 'direction' => 'ltr'),
'cs' => array('q' => 0.5, 'lang' => 'cs', 'name' => 'Czech', 'direction' => 'ltr'),
+ 'da' => array('q' => 0.8, 'lang' => 'da', 'name' => 'Danish', 'direction' => 'ltr'),
'de' => array('q' => 0.8, 'lang' => 'de', 'name' => 'German', 'direction' => 'ltr'),
'el' => array('q' => 0.1, 'lang' => 'el', 'name' => 'Greek', 'direction' => 'ltr'),
'en-us' => array('q' => 1, 'lang' => 'en', 'name' => 'English (US)', 'direction' => 'ltr'),
diff --git a/lib/mysqlschema.php b/lib/mysqlschema.php
index 455695366..464c718f9 100644
--- a/lib/mysqlschema.php
+++ b/lib/mysqlschema.php
@@ -50,21 +50,6 @@ 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
diff --git a/lib/noticelist.php b/lib/noticelist.php
index 432ea78d5..17adf3a49 100644
--- a/lib/noticelist.php
+++ b/lib/noticelist.php
@@ -96,8 +96,14 @@ class NoticeList extends Widget
break;
}
- $item = $this->newListItem($this->notice);
- $item->show();
+ try {
+ $item = $this->newListItem($this->notice);
+ $item->show();
+ } catch (Exception $e) {
+ // we log exceptions and continue
+ common_log(LOG_ERR, $e->getMessage());
+ continue;
+ }
}
$this->out->elementEnd('ol');
@@ -463,12 +469,14 @@ class NoticeListItem extends Widget
$this->out->elementEnd('span');
}
+ /**
+ * @param number $dec decimal degrees
+ * @return array split into 'deg', 'min', and 'sec'
+ */
function decimalDegreesToDMS($dec)
{
-
- $vars = explode(".",$dec);
- $deg = $vars[0];
- $tempma = "0.".$vars[1];
+ $deg = intval($dec);
+ $tempma = abs($dec) - abs($deg);
$tempma = $tempma * 3600;
$min = floor($tempma / 60);
diff --git a/lib/rssaction.php b/lib/rssaction.php
index 62e3f21b6..f366db972 100644
--- a/lib/rssaction.php
+++ b/lib/rssaction.php
@@ -178,7 +178,13 @@ class Rss10Action extends Action
if (count($this->notices)) {
foreach ($this->notices as $n) {
- $this->showItem($n);
+ try {
+ $this->showItem($n);
+ } catch (Exception $e) {
+ // log exceptions and continue
+ common_log(LOG_ERR, $e->getMessage());
+ continue;
+ }
}
}
@@ -232,7 +238,7 @@ class Rss10Action extends Action
function showItem($notice)
{
- $profile = Profile::staticGet($notice->profile_id);
+ $profile = $notice->getProfile();
$nurl = common_local_url('shownotice', array('notice' => $notice->id));
$creator_uri = common_profile_uri($profile);
$this->elementStart('item', array('rdf:about' => $notice->uri,
diff --git a/lib/schema.php b/lib/schema.php
index 1503c96d4..e5def514e 100644
--- a/lib/schema.php
+++ b/lib/schema.php
@@ -47,40 +47,47 @@ if (!defined('STATUSNET')) {
class Schema
{
- static $_single = null;
+ static $_static = null;
protected $conn = null;
/**
* Constructor. Only run once for singleton object.
*/
- protected function __construct()
+ protected function __construct($conn = null)
{
- // XXX: there should be an easier way to do this.
- $user = new User();
-
- $this->conn = $user->getDatabaseConnection();
-
- $user->free();
+ if (is_null($conn)) {
+ // XXX: there should be an easier way to do this.
+ $user = new User();
+ $conn = $user->getDatabaseConnection();
+ $user->free();
+ unset($user);
+ }
- unset($user);
+ $this->conn = $conn;
}
/**
* Main public entry point. Use this to get
- * the singleton object.
+ * the schema object.
*
- * @return Schema the (single) Schema object
+ * @return Schema the Schema object for the connection
*/
- static function get()
+ static function get($conn = null)
{
+ if (is_null($conn)) {
+ $key = 'default';
+ } else {
+ $key = md5(serialize($conn->dsn));
+ }
+
$type = common_config('db', 'type');
- if (empty(self::$_single)) {
+ if (empty(self::$_static[$key])) {
$schemaClass = ucfirst($type).'Schema';
- self::$_single = new $schemaClass();
+ self::$_static[$key] = new $schemaClass($conn);
}
- return self::$_single;
+ return self::$_static[$key];
}
/**
diff --git a/lib/util.php b/lib/util.php
index d8fb3b65e..8eff4e568 100644
--- a/lib/util.php
+++ b/lib/util.php
@@ -88,8 +88,8 @@ function common_init_language()
// don't do the job. en_US.UTF-8 should be there most of the
// time, but not guaranteed.
$ok = common_init_locale("en_US");
- if (!$ok) {
- // Try to find a complete, working locale...
+ if (!$ok && strtolower(substr(PHP_OS, 0, 3)) != 'win') {
+ // Try to find a complete, working locale on Unix/Linux...
// @fixme shelling out feels awfully inefficient
// but I don't think there's a more standard way.
$all = `locale -a`;
@@ -101,9 +101,9 @@ function common_init_language()
}
}
}
- if (!$ok) {
- common_log(LOG_ERR, "Unable to find a UTF-8 locale on this system; UI translations may not work.");
- }
+ }
+ if (!$ok) {
+ common_log(LOG_ERR, "Unable to find a UTF-8 locale on this system; UI translations may not work.");
}
$locale_set = common_init_locale($language);
}
diff --git a/locale/af/LC_MESSAGES/statusnet.po b/locale/af/LC_MESSAGES/statusnet.po
index aa82c30f6..a1a8a6801 100644
--- a/locale/af/LC_MESSAGES/statusnet.po
+++ b/locale/af/LC_MESSAGES/statusnet.po
@@ -8,12 +8,12 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-06-16 22:18+0000\n"
-"PO-Revision-Date: 2010-06-21 18:02:38+0000\n"
+"POT-Creation-Date: 2010-08-03 13:21+0000\n"
+"PO-Revision-Date: 2010-08-03 13:21:38+0000\n"
"Language-Team: Afrikaans\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.17alpha (r68367); Translate extension (2010-06-12)\n"
+"X-Generator: MediaWiki 1.17alpha (r70381); Translate extension (2010-07-21)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: af\n"
"X-Message-Group: out-statusnet\n"
@@ -98,7 +98,7 @@ msgstr "Hierdie bladsy bestaan nie"
#: actions/apidirectmessagenew.php:74 actions/apigroupcreate.php:113
#: actions/apigroupismember.php:91 actions/apigroupjoin.php:100
#: actions/apigroupleave.php:100 actions/apigrouplist.php:73
-#: actions/apistatusesupdate.php:228 actions/apisubscriptions.php:87
+#: actions/apistatusesupdate.php:229 actions/apisubscriptions.php:87
#: actions/apitimelinefavorites.php:72 actions/apitimelinefriends.php:174
#: actions/apitimelinehome.php:80 actions/apitimelinementions.php:80
#: actions/apitimelineuser.php:82 actions/avatarbynickname.php:75
@@ -167,15 +167,15 @@ msgstr ""
#: actions/all.php:146
#, 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)."
+"You can try to [nudge %1$s](../%2$s) from their profile or [post something "
+"to them](%%%%action.newnotice%%%%?status_textarea=%3$s)."
msgstr ""
#: actions/all.php:149 actions/replies.php:210 actions/showstream.php:211
#, php-format
msgid ""
"Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
-"post a notice to his or her attention."
+"post a notice to them."
msgstr ""
#. TRANS: H1 text
@@ -208,7 +208,7 @@ msgstr "Opdaterings van %1$s en vriende op %2$s."
#: actions/apistatusesshow.php:109 actions/apistatusnetconfig.php:141
#: actions/apistatusnetversion.php:93 actions/apisubscriptions.php:111
#: actions/apitimelinefavorites.php:174 actions/apitimelinefriends.php:271
-#: actions/apitimelinegroup.php:152 actions/apitimelinehome.php:175
+#: actions/apitimelinegroup.php:154 actions/apitimelinehome.php:175
#: actions/apitimelinementions.php:174 actions/apitimelinepublic.php:241
#: actions/apitimelineretweetedtome.php:121
#: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161
@@ -256,7 +256,7 @@ msgstr "Kon nie die profiel stoor nie."
#: actions/apiaccountupdateprofilebackgroundimage.php:108
#: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80
-#: actions/apistatusesupdate.php:211 actions/avatarsettings.php:257
+#: actions/apistatusesupdate.php:212 actions/avatarsettings.php:257
#: actions/designadminpanel.php:123 actions/editapplication.php:118
#: actions/newapplication.php:101 actions/newnotice.php:94
#: lib/designsettings.php:283
@@ -355,7 +355,8 @@ msgstr ""
"Dit was nie moontlik om die boodskap van u gunstelinge te verwyder nie."
#: actions/apifriendshipscreate.php:109
-msgid "Could not follow user: User not found."
+#, fuzzy
+msgid "Could not follow user: profile not found."
msgstr "U kan nie die gebruiker volg nie: die gebruiker bestaan nie."
#: actions/apifriendshipscreate.php:118
@@ -373,8 +374,8 @@ msgstr ""
msgid "You cannot unfollow yourself."
msgstr "U kan nie ophou om uself te volg nie."
-#: actions/apifriendshipsexists.php:94
-msgid "Two user ids or screen_names must be supplied."
+#: actions/apifriendshipsexists.php:91
+msgid "Two valid IDs or screen_names must be supplied."
msgstr ""
#: actions/apifriendshipsshow.php:134
@@ -505,6 +506,11 @@ msgstr "%s groepe"
msgid "groups on %s"
msgstr "groepe op %s"
+#: actions/apimediaupload.php:99
+#, fuzzy
+msgid "Upload failed."
+msgstr "Die deblokkering van die gebruiker het gefaal."
+
#: actions/apioauthauthorize.php:101
msgid "No oauth_token parameter provided."
msgstr ""
@@ -643,22 +649,26 @@ msgstr "Die status is verwyder."
msgid "No status with that ID found."
msgstr "Geen status met die ID gevind nie."
-#: actions/apistatusesupdate.php:241 actions/newnotice.php:155
+#: actions/apistatusesupdate.php:221
+msgid "Client must provide a 'status' parameter with a value."
+msgstr ""
+
+#: actions/apistatusesupdate.php:242 actions/newnotice.php:155
#: lib/mailhandler.php:60
#, php-format
msgid "That's too long. Max notice size is %d chars."
msgstr "Die kennisgewing is te lank. Gebruik maksimum %d karakters."
-#: actions/apistatusesupdate.php:282 actions/apiusershow.php:96
+#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96
msgid "Not found."
msgstr "Nie gevind nie."
-#: actions/apistatusesupdate.php:305 actions/newnotice.php:178
+#: actions/apistatusesupdate.php:306 actions/newnotice.php:178
#, php-format
msgid "Max notice size is %d chars, including attachment URL."
msgstr ""
-#: actions/apisubscriptions.php:231 actions/apisubscriptions.php:261
+#: actions/apisubscriptions.php:232 actions/apisubscriptions.php:262
msgid "Unsupported format."
msgstr "Nie-ondersteunde formaat."
@@ -712,6 +722,10 @@ msgstr ""
msgid "Updates tagged with %1$s on %2$s!"
msgstr ""
+#: actions/apitrends.php:87
+msgid "API method under construction."
+msgstr ""
+
#: actions/attachment.php:73
msgid "No such attachment."
msgstr "Die aanhangsel bestaan nie."
@@ -764,7 +778,7 @@ msgid "Preview"
msgstr "Voorskou"
#: actions/avatarsettings.php:149 actions/showapplication.php:252
-#: lib/deleteuserform.php:66 lib/noticelist.php:648
+#: lib/deleteuserform.php:66 lib/noticelist.php:656
msgid "Delete"
msgstr "Skrap"
@@ -1039,7 +1053,7 @@ msgid "Do not delete this notice"
msgstr "Moenie hierdie kennisgewing verwyder nie"
#. TRANS: Submit button title for 'Yes' when deleting a notice.
-#: actions/deletenotice.php:158 lib/noticelist.php:648
+#: actions/deletenotice.php:158 lib/noticelist.php:656
msgid "Delete this notice"
msgstr "Verwyder hierdie kennisgewing"
@@ -1314,7 +1328,8 @@ msgstr "Ongeldige alias: \"%s\""
msgid "Could not update group."
msgstr "Dit was nie moontlik om die groep by te werk nie."
-#: actions/editgroup.php:264 classes/User_group.php:496
+#. TRANS: Server exception thrown when creating group aliases failed.
+#: actions/editgroup.php:264 classes/User_group.php:514
msgid "Could not create aliases."
msgstr "Dit was nie moontlik om die aliasse te skep nie."
@@ -2400,7 +2415,7 @@ msgstr ""
#: actions/nudge.php:85
msgid ""
-"This user doesn't allow nudges or hasn't confirmed or set his email yet."
+"This user doesn't allow nudges or hasn't confirmed or set their email yet."
msgstr ""
#: actions/nudge.php:94
@@ -2476,8 +2491,8 @@ msgid "Only %s URLs over plain HTTP please."
msgstr ""
#. TRANS: Client error on an API request with an unsupported data format.
-#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1179
-#: lib/apiaction.php:1208 lib/apiaction.php:1325
+#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1204
+#: lib/apiaction.php:1232 lib/apiaction.php:1355
msgid "Not a supported data format."
msgstr ""
@@ -3332,7 +3347,7 @@ msgstr ""
msgid "You already repeated that notice."
msgstr ""
-#: actions/repeat.php:114 lib/noticelist.php:667
+#: actions/repeat.php:114 lib/noticelist.php:675
msgid "Repeated"
msgstr "Herhalend"
@@ -3367,11 +3382,13 @@ msgid "Replies feed for %s (Atom)"
msgstr ""
#: actions/replies.php:199
-#, php-format
+#, fuzzy, php-format
msgid ""
"This is the timeline showing replies to %1$s but %2$s hasn't received a "
-"notice to his attention yet."
+"notice to them yet."
msgstr ""
+"Hierdie is die tydslyn vir %s en vriende, maar niemand het nog iets gepos "
+"nie."
#: actions/replies.php:204
#, php-format
@@ -3383,8 +3400,8 @@ msgstr ""
#: actions/replies.php:206
#, php-format
msgid ""
-"You can try to [nudge %1$s](../%2$s) or [post something to his or her "
-"attention](%%%%action.newnotice%%%%?status_textarea=%3$s)."
+"You can try to [nudge %1$s](../%2$s) or [post something to them](%%%%action."
+"newnotice%%%%?status_textarea=%3$s)."
msgstr ""
#: actions/repliesrss.php:72
@@ -3473,7 +3490,7 @@ msgstr "Organisasie"
msgid "Description"
msgstr "Beskrywing"
-#: actions/showapplication.php:192 actions/showgroup.php:444
+#: actions/showapplication.php:192 actions/showgroup.php:436
#: lib/profileaction.php:187
msgid "Statistics"
msgstr "Statistieke"
@@ -3558,16 +3575,16 @@ msgstr ""
#: actions/showfavorites.php:208
#, php-format
msgid ""
-"%s hasn't added any notices to his favorites yet. Post something interesting "
-"they would add to their favorites :)"
+"%s hasn't added any favorite notices yet. Post something interesting they "
+"would add to their favorites :)"
msgstr ""
#: actions/showfavorites.php:212
#, php-format
msgid ""
-"%s hasn't added any notices to his favorites yet. Why not [register an "
-"account](%%%%action.register%%%%) and then post something interesting they "
-"would add to their favorites :)"
+"%s hasn't added any favorite notices yet. Why not [register an account](%%%%"
+"action.register%%%%) and then post something interesting they would add to "
+"their favorites :)"
msgstr ""
#: actions/showfavorites.php:243
@@ -3626,7 +3643,7 @@ msgstr ""
msgid "FOAF for %s group"
msgstr "Vriend van 'n vriend vir die groep %s"
-#: actions/showgroup.php:393 actions/showgroup.php:453 lib/groupnav.php:91
+#: actions/showgroup.php:393 actions/showgroup.php:445 lib/groupnav.php:91
msgid "Members"
msgstr "Lede"
@@ -3640,11 +3657,11 @@ msgstr "(geen)"
msgid "All members"
msgstr "Alle lede"
-#: actions/showgroup.php:447
+#: actions/showgroup.php:439
msgid "Created"
msgstr "Geskep"
-#: actions/showgroup.php:463
+#: actions/showgroup.php:455
#, php-format
msgid ""
"**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3654,7 +3671,7 @@ msgid ""
"of this group and many more! ([Read more](%%%%doc.help%%%%))"
msgstr ""
-#: actions/showgroup.php:469
+#: actions/showgroup.php:461
#, php-format
msgid ""
"**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3663,7 +3680,7 @@ msgid ""
"their life and interests. "
msgstr ""
-#: actions/showgroup.php:497
+#: actions/showgroup.php:489
msgid "Admins"
msgstr "Administrateurs"
@@ -3738,8 +3755,8 @@ msgstr ""
#: 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)."
+"You can try to nudge %1$s or [post something to them](%%%%action.newnotice%%%"
+"%?status_textarea=%2$s)."
msgstr ""
#: actions/showstream.php:243
@@ -4112,7 +4129,8 @@ msgstr ""
msgid "You are not subscribed to that profile."
msgstr ""
-#: actions/subedit.php:83 classes/Subscription.php:132
+#. TRANS: Exception thrown when a subscription could not be stored on the server.
+#: actions/subedit.php:83 classes/Subscription.php:136
msgid "Could not save subscription."
msgstr ""
@@ -4276,10 +4294,6 @@ msgstr ""
msgid "No such tag."
msgstr "Onbekende etiket."
-#: actions/twitapitrends.php:85
-msgid "API method under construction."
-msgstr ""
-
#: actions/unblock.php:59
msgid "You haven't blocked that user."
msgstr ""
@@ -4566,146 +4580,248 @@ msgstr "Weergawe"
msgid "Author(s)"
msgstr "Outeur(s)"
-#: classes/File.php:185
+#. TRANS: Server exception thrown when a URL cannot be processed.
+#: classes/File.php:143
+#, php-format
+msgid "Cannot process URL '%s'"
+msgstr ""
+
+#. TRANS: Server exception thrown when... Robin thinks something is impossible!
+#: classes/File.php:175
+msgid "Robin thinks something is impossible."
+msgstr ""
+
+#. TRANS: Message given if an upload is larger than the configured maximum.
+#. TRANS: %1$d is the byte limit for uploads, %2$d is the byte count for the uploaded file.
+#: classes/File.php:190
#, php-format
msgid ""
-"No file may be larger than %d bytes and the file you sent was %d bytes. Try "
-"to upload a smaller version."
+"No file may be larger than %1$d bytes and the file you sent was %2$d bytes. "
+"Try to upload a smaller version."
msgstr ""
-#: classes/File.php:195
+#. TRANS: Message given if an upload would exceed user quota.
+#. TRANS: %d (number) is the user quota in bytes.
+#: classes/File.php:202
#, php-format
msgid "A file this large would exceed your user quota of %d bytes."
msgstr ""
-#: classes/File.php:202
+#. TRANS: Message given id an upload would exceed a user's monthly quota.
+#. TRANS: $d (number) is the monthly user quota in bytes.
+#: classes/File.php:211
#, php-format
msgid "A file this large would exceed your monthly quota of %d bytes."
msgstr ""
-#: classes/Group_member.php:41
+#. TRANS: Client exception thrown if a file upload does not have a valid name.
+#: classes/File.php:248 classes/File.php:263
+#, fuzzy
+msgid "Invalid filename."
+msgstr "Ongeldige grootte."
+
+#. TRANS: Exception thrown when joining a group fails.
+#: classes/Group_member.php:42
msgid "Group join failed."
msgstr ""
-#: classes/Group_member.php:53
+#. TRANS: Exception thrown when trying to leave a group the user is not a member of.
+#: classes/Group_member.php:55
msgid "Not part of group."
msgstr "Nie lid van die groep nie."
-#: classes/Group_member.php:60
+#. TRANS: Exception thrown when trying to leave a group fails.
+#: classes/Group_member.php:63
msgid "Group leave failed."
msgstr ""
-#: classes/Local_group.php:41
+#. TRANS: Server exception thrown when updating a local group fails.
+#: classes/Local_group.php:42
msgid "Could not update local group."
msgstr ""
-#: classes/Login_token.php:76
+#. TRANS: Exception thrown when trying creating a login token failed.
+#. TRANS: %s is the user nickname for which token creation failed.
+#: classes/Login_token.php:78
#, php-format
msgid "Could not create login token for %s"
msgstr ""
-#: classes/Message.php:45
+#. TRANS: Exception thrown when database name or Data Source Name could not be found.
+#: classes/Memcached_DataObject.php:533
+msgid "No database name or DSN found anywhere."
+msgstr ""
+
+#. TRANS: Client exception thrown when a user tries to send a direct message while being banned from sending them.
+#: classes/Message.php:46
msgid "You are banned from sending direct messages."
msgstr ""
-#: classes/Message.php:61
+#. TRANS: Message given when a message could not be stored on the server.
+#: classes/Message.php:63
msgid "Could not insert message."
msgstr ""
-#: classes/Message.php:71
+#. TRANS: Message given when a message could not be updated on the server.
+#: classes/Message.php:74
msgid "Could not update message with new URI."
msgstr ""
+#. TRANS: Server exception thrown when a user profile for a notice cannot be found.
+#. TRANS: %1$d is a profile ID (number), %2$d is a notice ID (number).
+#: classes/Notice.php:98
+#, php-format
+msgid "No such profile (%1$d) for notice (%2$d)."
+msgstr ""
+
#. TRANS: Server exception. %s are the error details.
-#: classes/Notice.php:182
+#: classes/Notice.php:190
#, php-format
msgid "Database error inserting hashtag: %s"
msgstr ""
-#: classes/Notice.php:251
+#. TRANS: Client exception thrown if a notice contains too many characters.
+#: classes/Notice.php:260
msgid "Problem saving notice. Too long."
msgstr ""
-#: classes/Notice.php:255
+#. TRANS: Client exception thrown when trying to save a notice for an unknown user.
+#: classes/Notice.php:265
msgid "Problem saving notice. Unknown user."
msgstr ""
-#: classes/Notice.php:260
+#. TRANS: Client exception thrown when a user tries to post too many notices in a given time frame.
+#: classes/Notice.php:271
msgid ""
"Too many notices too fast; take a breather and post again in a few minutes."
msgstr ""
-#: classes/Notice.php:266
+#. TRANS: Client exception thrown when a user tries to post too many duplicate notices in a given time frame.
+#: classes/Notice.php:278
msgid ""
"Too many duplicate messages too quickly; take a breather and post again in a "
"few minutes."
msgstr ""
-#: classes/Notice.php:272
+#. TRANS: Client exception thrown when a user tries to post while being banned.
+#: classes/Notice.php:286
msgid "You are banned from posting notices on this site."
msgstr ""
-#: classes/Notice.php:338 classes/Notice.php:364
+#. TRANS: Server exception thrown when a notice cannot be saved.
+#. TRANS: Server exception thrown when a notice cannot be updated.
+#: classes/Notice.php:353 classes/Notice.php:380
msgid "Problem saving notice."
msgstr ""
-#: classes/Notice.php:973
+#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups().
+#: classes/Notice.php:892
+msgid "Bad type provided to saveKnownGroups"
+msgstr ""
+
+#. TRANS: Server exception thrown when an update for a group inbox fails.
+#: classes/Notice.php:991
msgid "Problem saving group inbox."
msgstr ""
#. TRANS: Message used to repeat a notice. RT is the abbreviation of 'retweet'.
#. TRANS: %1$s is the repeated user's name, %2$s is the repeated notice.
-#: classes/Notice.php:1564
+#: classes/Notice.php:1614
#, php-format
msgid "RT @%1$s %2$s"
msgstr "RT @%1$s %2$s"
-#: classes/Subscription.php:74 lib/oauthstore.php:465
+#. TRANS: Exception thrown when trying to revoke an existing role for a user that does not exist.
+#. TRANS: %1$s is the role name, %2$s is the user ID (number).
+#: classes/Profile.php:740
+#, php-format
+msgid "Cannot revoke role \"%1$s\" for user #%2$d; does not exist."
+msgstr ""
+
+#. TRANS: Exception thrown when trying to revoke a role for a user with a failing database query.
+#. TRANS: %1$s is the role name, %2$s is the user ID (number).
+#: classes/Profile.php:749
+#, php-format
+msgid "Cannot revoke role \"%1$s\" for user #%2$d; database error."
+msgstr ""
+
+#. TRANS: Exception thrown when a right for a non-existing user profile is checked.
+#: classes/Remote_profile.php:54
+#, fuzzy
+msgid "Missing profile."
+msgstr "Hierdie gebruiker het nie 'n profiel nie."
+
+#. TRANS: Exception thrown when a tag cannot be saved.
+#: classes/Status_network.php:346
+#, fuzzy
+msgid "Unable to save tag."
+msgstr "Dit was nie moontlik om u ontwerp-instellings te stoor nie."
+
+#. TRANS: Exception thrown when trying to subscribe while being banned from subscribing.
+#: classes/Subscription.php:75 lib/oauthstore.php:465
msgid "You have been banned from subscribing."
msgstr ""
-#: classes/Subscription.php:78
+#. TRANS: Exception thrown when trying to subscribe while already subscribed.
+#: classes/Subscription.php:80
msgid "Already subscribed!"
msgstr ""
-#: classes/Subscription.php:82
+#. TRANS: Exception thrown when trying to subscribe to a user who has blocked the subscribing user.
+#: classes/Subscription.php:85
msgid "User has blocked you."
msgstr ""
-#: classes/Subscription.php:167
+#. TRANS: Exception thrown when trying to unsibscribe without a subscription.
+#: classes/Subscription.php:171
msgid "Not subscribed!"
msgstr ""
-#: classes/Subscription.php:173
-msgid "Couldn't delete self-subscription."
+#. TRANS: Exception thrown when trying to unsubscribe a user from themselves.
+#: classes/Subscription.php:178
+#, fuzzy
+msgid "Could not delete self-subscription."
msgstr ""
+"Dit was nie moontlik om die boodskap van u gunstelinge te verwyder nie."
-#: classes/Subscription.php:200
-msgid "Couldn't delete subscription OMB token."
+#. TRANS: Exception thrown when the OMB token for a subscription could not deleted on the server.
+#: classes/Subscription.php:206
+#, fuzzy
+msgid "Could not delete subscription OMB token."
msgstr ""
+"Dit was nie moontlik om die boodskap van u gunstelinge te verwyder nie."
-#: classes/Subscription.php:211
-msgid "Couldn't delete subscription."
+#. TRANS: Exception thrown when a subscription could not be deleted on the server.
+#: classes/Subscription.php:218
+#, fuzzy
+msgid "Could not delete subscription."
msgstr ""
+"Dit was nie moontlik om die boodskap van u gunstelinge te verwyder nie."
-#: classes/User.php:363
+#. TRANS: Notice given on user registration.
+#. TRANS: %1$s is the sitename, $2$s is the registering user's nickname.
+#: classes/User.php:365
#, php-format
msgid "Welcome to %1$s, @%2$s!"
msgstr "Welkom by %1$s, @%2$s!"
-#: classes/User_group.php:480
+#. TRANS: Server exception thrown when creating a group failed.
+#: classes/User_group.php:496
msgid "Could not create group."
msgstr "Kon nie die groep skep nie."
-#: classes/User_group.php:489
+#. TRANS: Server exception thrown when updating a group URI failed.
+#: classes/User_group.php:506
msgid "Could not set group URI."
msgstr ""
-#: classes/User_group.php:510
+#. TRANS: Server exception thrown when setting group membership failed.
+#: classes/User_group.php:529
msgid "Could not set group membership."
msgstr ""
-#: classes/User_group.php:524
+#. TRANS: Server exception thrown when saving local group information failed.
+#: classes/User_group.php:544
msgid "Could not save local group info."
msgstr ""
@@ -6015,7 +6131,7 @@ msgid ""
"users in conversation. People can send you messages for your eyes only."
msgstr ""
-#: lib/mailbox.php:227 lib/noticelist.php:497
+#: lib/mailbox.php:227 lib/noticelist.php:505
msgid "from"
msgstr "van"
@@ -6070,24 +6186,24 @@ msgstr ""
msgid "File upload stopped by extension."
msgstr ""
-#: lib/mediafile.php:179 lib/mediafile.php:216
+#: lib/mediafile.php:179 lib/mediafile.php:217
msgid "File exceeds user's quota."
msgstr ""
-#: lib/mediafile.php:196 lib/mediafile.php:233
+#: lib/mediafile.php:197 lib/mediafile.php:234
msgid "File could not be moved to destination directory."
msgstr ""
-#: lib/mediafile.php:201 lib/mediafile.php:237
+#: lib/mediafile.php:202 lib/mediafile.php:238
msgid "Could not determine file's MIME type."
msgstr ""
-#: lib/mediafile.php:270
+#: lib/mediafile.php:318
#, php-format
msgid " Try using another %s format."
msgstr ""
-#: lib/mediafile.php:275
+#: lib/mediafile.php:323
#, php-format
msgid "%s is not a supported file type on this server."
msgstr ""
@@ -6141,51 +6257,51 @@ msgid ""
msgstr ""
#. TRANS: Used in coordinates as abbreviation of north
-#: lib/noticelist.php:430
+#: lib/noticelist.php:436
msgid "N"
msgstr "N"
#. TRANS: Used in coordinates as abbreviation of south
-#: lib/noticelist.php:432
+#: lib/noticelist.php:438
msgid "S"
msgstr "S"
#. TRANS: Used in coordinates as abbreviation of east
-#: lib/noticelist.php:434
+#: lib/noticelist.php:440
msgid "E"
msgstr "O"
#. TRANS: Used in coordinates as abbreviation of west
-#: lib/noticelist.php:436
+#: lib/noticelist.php:442
msgid "W"
msgstr "W"
-#: lib/noticelist.php:438
+#: lib/noticelist.php:444
#, php-format
msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
msgstr "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
-#: lib/noticelist.php:447
+#: lib/noticelist.php:453
msgid "at"
msgstr "op"
-#: lib/noticelist.php:559
+#: lib/noticelist.php:567
msgid "in context"
msgstr "in konteks"
-#: lib/noticelist.php:594
+#: lib/noticelist.php:602
msgid "Repeated by"
msgstr "Herhaal deur"
-#: lib/noticelist.php:621
+#: lib/noticelist.php:629
msgid "Reply to this notice"
msgstr ""
-#: lib/noticelist.php:622
+#: lib/noticelist.php:630
msgid "Reply"
msgstr "Antwoord"
-#: lib/noticelist.php:666
+#: lib/noticelist.php:674
msgid "Notice repeated"
msgstr ""
@@ -6443,7 +6559,7 @@ msgid "This server cannot handle theme uploads without ZIP support."
msgstr ""
#: lib/themeuploader.php:58 lib/themeuploader.php:61
-msgid "Theme upload missing or failed."
+msgid "The theme file is missing or the upload failed."
msgstr ""
#: lib/themeuploader.php:91 lib/themeuploader.php:102
diff --git a/locale/ar/LC_MESSAGES/statusnet.po b/locale/ar/LC_MESSAGES/statusnet.po
index 3f9f58275..c5e7f56b8 100644
--- a/locale/ar/LC_MESSAGES/statusnet.po
+++ b/locale/ar/LC_MESSAGES/statusnet.po
@@ -1,5 +1,6 @@
# Translation of StatusNet to Arabic
#
+# Author@translatewiki.net: Brion
# Author@translatewiki.net: Meno25
# Author@translatewiki.net: OsamaK
# --
@@ -9,12 +10,12 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-06-16 22:18+0000\n"
-"PO-Revision-Date: 2010-06-21 18:02:42+0000\n"
+"POT-Creation-Date: 2010-08-03 13:21+0000\n"
+"PO-Revision-Date: 2010-08-03 13:21:39+0000\n"
"Language-Team: Arabic\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.17alpha (r68367); Translate extension (2010-06-12)\n"
+"X-Generator: MediaWiki 1.17alpha (r70381); Translate extension (2010-07-21)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: ar\n"
"X-Message-Group: out-statusnet\n"
@@ -99,7 +100,7 @@ msgstr "لا صÙحة كهذه."
#: actions/apidirectmessagenew.php:74 actions/apigroupcreate.php:113
#: actions/apigroupismember.php:91 actions/apigroupjoin.php:100
#: actions/apigroupleave.php:100 actions/apigrouplist.php:73
-#: actions/apistatusesupdate.php:228 actions/apisubscriptions.php:87
+#: actions/apistatusesupdate.php:229 actions/apisubscriptions.php:87
#: actions/apitimelinefavorites.php:72 actions/apitimelinefriends.php:174
#: actions/apitimelinehome.php:80 actions/apitimelinementions.php:80
#: actions/apitimelineuser.php:82 actions/avatarbynickname.php:75
@@ -166,16 +167,18 @@ msgstr ""
#: actions/all.php:146
#, 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)."
+"You can try to [nudge %1$s](../%2$s) from their profile or [post something "
+"to them](%%%%action.newnotice%%%%?status_textarea=%3$s)."
msgstr ""
#: actions/all.php:149 actions/replies.php:210 actions/showstream.php:211
-#, php-format
+#, fuzzy, php-format
msgid ""
"Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
-"post a notice to his or her attention."
+"post a notice to them."
msgstr ""
+"%s لم يض٠أي إشعارات إلى Ù…Ùضلته إلى الآن. لمّ لا [تسجل حسابًا](%%%%action."
+"register%%%%) وترسل شيئًا شيقًا ليضيÙÙ‡ إلى Ù…Ùضلته. :)"
#. TRANS: H1 text
#: actions/all.php:182
@@ -207,7 +210,7 @@ msgstr ""
#: actions/apistatusesshow.php:109 actions/apistatusnetconfig.php:141
#: actions/apistatusnetversion.php:93 actions/apisubscriptions.php:111
#: actions/apitimelinefavorites.php:174 actions/apitimelinefriends.php:271
-#: actions/apitimelinegroup.php:152 actions/apitimelinehome.php:175
+#: actions/apitimelinegroup.php:154 actions/apitimelinehome.php:175
#: actions/apitimelinementions.php:174 actions/apitimelinepublic.php:241
#: actions/apitimelineretweetedtome.php:121
#: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161
@@ -255,7 +258,7 @@ msgstr "لم يمكن Ø­Ùظ الملÙ."
#: actions/apiaccountupdateprofilebackgroundimage.php:108
#: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80
-#: actions/apistatusesupdate.php:211 actions/avatarsettings.php:257
+#: actions/apistatusesupdate.php:212 actions/avatarsettings.php:257
#: actions/designadminpanel.php:123 actions/editapplication.php:118
#: actions/newapplication.php:101 actions/newnotice.php:94
#: lib/designsettings.php:283
@@ -351,8 +354,9 @@ msgid "Could not delete favorite."
msgstr "تعذّر حذ٠المÙضلة."
#: actions/apifriendshipscreate.php:109
-msgid "Could not follow user: User not found."
-msgstr ""
+#, fuzzy
+msgid "Could not follow user: profile not found."
+msgstr "لم يمكن Ø­Ùظ الملÙ."
#: actions/apifriendshipscreate.php:118
#, php-format
@@ -367,8 +371,8 @@ msgstr ""
msgid "You cannot unfollow yourself."
msgstr "لا يمكنك عدم متابعة Ù†Ùسك."
-#: actions/apifriendshipsexists.php:94
-msgid "Two user ids or screen_names must be supplied."
+#: actions/apifriendshipsexists.php:91
+msgid "Two valid IDs or screen_names must be supplied."
msgstr ""
#: actions/apifriendshipsshow.php:134
@@ -429,9 +433,9 @@ msgid "Too many aliases! Maximum %d."
msgstr "كنيات كيرة! العدد الأقصى هو %d."
#: actions/apigroupcreate.php:267
-#, fuzzy, php-format
+#, php-format
msgid "Invalid alias: \"%s\"."
-msgstr "كنية غير صالحة: \"%s\""
+msgstr "كنية غير صالحة: \"%s\"."
#: actions/apigroupcreate.php:276 actions/editgroup.php:232
#: actions/newgroup.php:172
@@ -480,9 +484,9 @@ msgstr "مجموعات %s"
#. TRANS: Meant to convey the user %2$s is a member of each of the groups listed on site %1$s
#: actions/apigrouplist.php:108
-#, fuzzy, php-format
+#, php-format
msgid "%1$s groups %2$s is a member of."
-msgstr "المجموعات التي %s عضو Ùيها"
+msgstr "مجموعات %1$s التي %2$s عضو Ùيها."
#. TRANS: Message is used as a title. %s is a site name.
#. TRANS: Message is used as a page title. %s is a nick name.
@@ -496,6 +500,11 @@ msgstr "مجموعات %s"
msgid "groups on %s"
msgstr "مجموعات %s"
+#: actions/apimediaupload.php:99
+#, fuzzy
+msgid "Upload failed."
+msgstr "ارÙع ملÙًا"
+
#: actions/apioauthauthorize.php:101
msgid "No oauth_token parameter provided."
msgstr ""
@@ -528,9 +537,8 @@ msgid "Invalid nickname / password!"
msgstr "اسم/كلمة سر غير صحيحة!"
#: actions/apioauthauthorize.php:159
-#, fuzzy
msgid "Database error deleting OAuth application user."
-msgstr "خطأ قاعدة البيانات أثناء حذ٠المستخدم OAuth app"
+msgstr "خطأ ÙÙŠ قاعدة البيانات أثناء حذ٠مستخدم تطبيق OAuth."
#: actions/apioauthauthorize.php:185
#, fuzzy
@@ -637,22 +645,26 @@ msgstr "Ø­ÙØ°ÙÙت الحالة."
msgid "No status with that ID found."
msgstr "لا حالة ÙˆÙجدت بهذه الهوية."
-#: actions/apistatusesupdate.php:241 actions/newnotice.php:155
+#: actions/apistatusesupdate.php:221
+msgid "Client must provide a 'status' parameter with a value."
+msgstr ""
+
+#: actions/apistatusesupdate.php:242 actions/newnotice.php:155
#: lib/mailhandler.php:60
#, php-format
msgid "That's too long. Max notice size is %d chars."
-msgstr ""
+msgstr "هذه طويلة جدًا. أطول حجم للإشعار %d حرÙًا."
-#: actions/apistatusesupdate.php:282 actions/apiusershow.php:96
+#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96
msgid "Not found."
msgstr "لم يوجد."
-#: actions/apistatusesupdate.php:305 actions/newnotice.php:178
+#: actions/apistatusesupdate.php:306 actions/newnotice.php:178
#, php-format
msgid "Max notice size is %d chars, including attachment URL."
msgstr ""
-#: actions/apisubscriptions.php:231 actions/apisubscriptions.php:261
+#: actions/apisubscriptions.php:232 actions/apisubscriptions.php:262
msgid "Unsupported format."
msgstr "نسق غير مدعوم."
@@ -706,6 +718,10 @@ msgstr "الإشعارات الموسومة ب%s"
msgid "Updates tagged with %1$s on %2$s!"
msgstr ""
+#: actions/apitrends.php:87
+msgid "API method under construction."
+msgstr ""
+
#: actions/attachment.php:73
msgid "No such attachment."
msgstr "لا مرÙÙ‚ كهذا."
@@ -758,7 +774,7 @@ msgid "Preview"
msgstr "معاينة"
#: actions/avatarsettings.php:149 actions/showapplication.php:252
-#: lib/deleteuserform.php:66 lib/noticelist.php:648
+#: lib/deleteuserform.php:66 lib/noticelist.php:656
msgid "Delete"
msgstr "احذÙ"
@@ -1031,7 +1047,7 @@ msgid "Do not delete this notice"
msgstr "لا تحذ٠هذا الإشعار"
#. TRANS: Submit button title for 'Yes' when deleting a notice.
-#: actions/deletenotice.php:158 lib/noticelist.php:648
+#: actions/deletenotice.php:158 lib/noticelist.php:656
msgid "Delete this notice"
msgstr "احذ٠هذا الإشعار"
@@ -1099,9 +1115,8 @@ msgid "Theme for the site."
msgstr "سمة الموقع."
#: actions/designadminpanel.php:467
-#, fuzzy
msgid "Custom theme"
-msgstr "سمة الموقع"
+msgstr "سمة مخصصة"
#: actions/designadminpanel.php:471
msgid "You can upload a custom StatusNet theme as a .ZIP archive."
@@ -1163,11 +1178,11 @@ msgstr "وصلات"
#: actions/designadminpanel.php:651
msgid "Advanced"
-msgstr ""
+msgstr "متقدم"
#: actions/designadminpanel.php:655
msgid "Custom CSS"
-msgstr ""
+msgstr "CSS مخصصة"
#: actions/designadminpanel.php:676 lib/designsettings.php:247
msgid "Use defaults"
@@ -1306,7 +1321,8 @@ msgstr "كنية غير صالحة: \"%s\""
msgid "Could not update group."
msgstr "تعذر تحديث المجموعة."
-#: actions/editgroup.php:264 classes/User_group.php:496
+#. TRANS: Server exception thrown when creating group aliases failed.
+#: actions/editgroup.php:264 classes/User_group.php:514
msgid "Could not create aliases."
msgstr "تعذّر إنشاء الكنى."
@@ -1650,9 +1666,8 @@ msgid "Remote service uses unknown version of OMB protocol."
msgstr ""
#: actions/finishremotesubscribe.php:138
-#, fuzzy
msgid "Error updating remote profile."
-msgstr "خطأ أثناء تحديث المل٠الشخصي البعيد"
+msgstr "خطأ أثناء تحديث المل٠الشخصي البعيد."
#: actions/getfile.php:79
msgid "No such file."
@@ -1677,9 +1692,8 @@ msgid "You cannot grant user roles on this site."
msgstr "لا يمكنك إسكات المستخدمين على هذا الموقع."
#: actions/grantrole.php:82
-#, fuzzy
msgid "User already has this role."
-msgstr "المستخدم مسكت من قبل."
+msgstr "لدى المستخدم هذا الدور من قبل."
#: actions/groupblock.php:71 actions/groupunblock.php:71
#: actions/makeadmin.php:71 actions/subedit.php:46
@@ -2390,7 +2404,7 @@ msgstr ""
#: actions/nudge.php:85
msgid ""
-"This user doesn't allow nudges or hasn't confirmed or set his email yet."
+"This user doesn't allow nudges or hasn't confirmed or set their email yet."
msgstr ""
#: actions/nudge.php:94
@@ -2466,8 +2480,8 @@ msgid "Only %s URLs over plain HTTP please."
msgstr ""
#. TRANS: Client error on an API request with an unsupported data format.
-#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1179
-#: lib/apiaction.php:1208 lib/apiaction.php:1325
+#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1204
+#: lib/apiaction.php:1232 lib/apiaction.php:1355
msgid "Not a supported data format."
msgstr "ليس نسق بيانات مدعوم."
@@ -3226,7 +3240,7 @@ msgstr ""
#. TRANS: Copyright checkbox label in registration dialog, for all rights reserved.
#: actions/register.php:535
msgid "All rights reserved."
-msgstr ""
+msgstr "جميع الحقوق محÙوظة."
#. TRANS: Copyright checkbox label in registration dialog, for Creative Commons-style licenses.
#: actions/register.php:540
@@ -3308,7 +3322,7 @@ msgstr ""
#: actions/remotesubscribe.php:176
msgid "That’s a local profile! Login to subscribe."
-msgstr ""
+msgstr "هذا مل٠شخصي محلي! Ù„Ùج لتشترك."
#: actions/remotesubscribe.php:183
msgid "Couldn’t get a request token."
@@ -3330,7 +3344,7 @@ msgstr "لا يمكنك تكرار ملاحظتك الشخصية."
msgid "You already repeated that notice."
msgstr "أنت كررت هذه الملاحظة بالÙعل."
-#: actions/repeat.php:114 lib/noticelist.php:667
+#: actions/repeat.php:114 lib/noticelist.php:675
msgid "Repeated"
msgstr "مكرر"
@@ -3368,7 +3382,7 @@ msgstr ""
#, php-format
msgid ""
"This is the timeline showing replies to %1$s but %2$s hasn't received a "
-"notice to his attention yet."
+"notice to them yet."
msgstr ""
#: actions/replies.php:204
@@ -3381,8 +3395,8 @@ msgstr ""
#: actions/replies.php:206
#, php-format
msgid ""
-"You can try to [nudge %1$s](../%2$s) or [post something to his or her "
-"attention](%%%%action.newnotice%%%%?status_textarea=%3$s)."
+"You can try to [nudge %1$s](../%2$s) or [post something to them](%%%%action."
+"newnotice%%%%?status_textarea=%3$s)."
msgstr ""
#: actions/repliesrss.php:72
@@ -3391,14 +3405,12 @@ msgid "Replies to %1$s on %2$s!"
msgstr ""
#: actions/revokerole.php:75
-#, fuzzy
msgid "You cannot revoke user roles on this site."
-msgstr "لا يمكنك إسكات المستخدمين على هذا الموقع."
+msgstr "لا يمكنك سحب أدوار المستخدمين على هذا الموقع."
#: actions/revokerole.php:82
-#, fuzzy
msgid "User doesn't have this role."
-msgstr "المستخدم بدون مل٠مطابق."
+msgstr "ليس للمستخدم هذا الدور."
#: actions/rsd.php:146 actions/version.php:159
msgid "StatusNet"
@@ -3473,7 +3485,7 @@ msgstr "المنظمة"
msgid "Description"
msgstr "الوصÙ"
-#: actions/showapplication.php:192 actions/showgroup.php:444
+#: actions/showapplication.php:192 actions/showgroup.php:436
#: lib/profileaction.php:187
msgid "Statistics"
msgstr "إحصاءات"
@@ -3556,20 +3568,20 @@ msgid ""
msgstr ""
#: actions/showfavorites.php:208
-#, php-format
+#, fuzzy, php-format
msgid ""
-"%s hasn't added any notices to his favorites yet. Post something interesting "
-"they would add to their favorites :)"
+"%s hasn't added any favorite notices yet. Post something interesting they "
+"would add to their favorites :)"
msgstr ""
"%s لم يض٠أي إشعارات إلى Ù…Ùضلته إلى الآن. أرسل شيئًا شيقًا ليضيÙÙ‡ إلى "
"Ù…Ùضلته. :)"
#: actions/showfavorites.php:212
-#, php-format
+#, fuzzy, php-format
msgid ""
-"%s hasn't added any notices to his favorites yet. Why not [register an "
-"account](%%%%action.register%%%%) and then post something interesting they "
-"would add to their favorites :)"
+"%s hasn't added any favorite notices yet. Why not [register an account](%%%%"
+"action.register%%%%) and then post something interesting they would add to "
+"their favorites :)"
msgstr ""
"%s لم يض٠أي إشعارات إلى Ù…Ùضلته إلى الآن. لمّ لا [تسجل حسابًا](%%%%action."
"register%%%%) وترسل شيئًا شيقًا ليضيÙÙ‡ إلى Ù…Ùضلته. :)"
@@ -3586,7 +3598,7 @@ msgstr "مجموعة %s"
#: actions/showgroup.php:84
#, php-format
msgid "%1$s group, page %2$d"
-msgstr "مجموعة %1$ØŒ الصÙحة %2$d"
+msgstr "مجموعة %1$sØŒ الصÙحة %2$d"
#: actions/showgroup.php:227
msgid "Group profile"
@@ -3630,7 +3642,7 @@ msgstr ""
msgid "FOAF for %s group"
msgstr ""
-#: actions/showgroup.php:393 actions/showgroup.php:453 lib/groupnav.php:91
+#: actions/showgroup.php:393 actions/showgroup.php:445 lib/groupnav.php:91
msgid "Members"
msgstr "الأعضاء"
@@ -3644,11 +3656,11 @@ msgstr "(لا شيء)"
msgid "All members"
msgstr "جميع الأعضاء"
-#: actions/showgroup.php:447
+#: actions/showgroup.php:439
msgid "Created"
msgstr "أنشئت"
-#: actions/showgroup.php:463
+#: actions/showgroup.php:455
#, php-format
msgid ""
"**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3663,7 +3675,7 @@ msgstr ""
"[انضم الآن](%%%%action.register%%%%) لتصبح عضوًا ÙÙŠ هذه المجموعة ومجموعات "
"أخرى عديدة! ([اقرأ المزيد](%%%%doc.help%%%%))"
-#: actions/showgroup.php:469
+#: actions/showgroup.php:461
#, php-format
msgid ""
"**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3675,7 +3687,7 @@ msgstr ""
"en.wikipedia.org/wiki/Micro-blogging) المبنية على البرنامج الحر [StatusNet]"
"(http://status.net/). يتشارك أعضاؤها رسائل قصيرة عن حياتهم واهتماماتهم. "
-#: actions/showgroup.php:497
+#: actions/showgroup.php:489
msgid "Admins"
msgstr "الإداريون"
@@ -3750,8 +3762,8 @@ msgstr ""
#: 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)."
+"You can try to nudge %1$s or [post something to them](%%%%action.newnotice%%%"
+"%?status_textarea=%2$s)."
msgstr ""
#: actions/showstream.php:243
@@ -4128,7 +4140,8 @@ msgstr "اذ٠إعدادت الموقع"
msgid "You are not subscribed to that profile."
msgstr ""
-#: actions/subedit.php:83 classes/Subscription.php:132
+#. TRANS: Exception thrown when a subscription could not be stored on the server.
+#: actions/subedit.php:83 classes/Subscription.php:136
msgid "Could not save subscription."
msgstr "تعذّر Ø­Ùظ الاشتراك."
@@ -4292,10 +4305,6 @@ msgstr ""
msgid "No such tag."
msgstr "لا وسم كهذا."
-#: actions/twitapitrends.php:85
-msgid "API method under construction."
-msgstr ""
-
#: actions/unblock.php:59
msgid "You haven't blocked that user."
msgstr "لم تمنع هذا المستخدم."
@@ -4584,149 +4593,247 @@ msgstr "النسخة"
msgid "Author(s)"
msgstr "المؤلÙ(ون)"
-#: classes/File.php:185
+#. TRANS: Server exception thrown when a URL cannot be processed.
+#: classes/File.php:143
+#, php-format
+msgid "Cannot process URL '%s'"
+msgstr ""
+
+#. TRANS: Server exception thrown when... Robin thinks something is impossible!
+#: classes/File.php:175
+msgid "Robin thinks something is impossible."
+msgstr ""
+
+#. TRANS: Message given if an upload is larger than the configured maximum.
+#. TRANS: %1$d is the byte limit for uploads, %2$d is the byte count for the uploaded file.
+#: classes/File.php:190
#, php-format
msgid ""
-"No file may be larger than %d bytes and the file you sent was %d bytes. Try "
-"to upload a smaller version."
+"No file may be larger than %1$d bytes and the file you sent was %2$d bytes. "
+"Try to upload a smaller version."
msgstr ""
-#: classes/File.php:195
+#. TRANS: Message given if an upload would exceed user quota.
+#. TRANS: %d (number) is the user quota in bytes.
+#: classes/File.php:202
#, php-format
msgid "A file this large would exceed your user quota of %d bytes."
msgstr ""
-#: classes/File.php:202
+#. TRANS: Message given id an upload would exceed a user's monthly quota.
+#. TRANS: $d (number) is the monthly user quota in bytes.
+#: classes/File.php:211
#, php-format
msgid "A file this large would exceed your monthly quota of %d bytes."
msgstr ""
-#: classes/Group_member.php:41
+#. TRANS: Client exception thrown if a file upload does not have a valid name.
+#: classes/File.php:248 classes/File.php:263
+#, fuzzy
+msgid "Invalid filename."
+msgstr "حجم غير صالح."
+
+#. TRANS: Exception thrown when joining a group fails.
+#: classes/Group_member.php:42
msgid "Group join failed."
msgstr "الانضمام للمجموعة Ùشل."
-#: classes/Group_member.php:53
+#. TRANS: Exception thrown when trying to leave a group the user is not a member of.
+#: classes/Group_member.php:55
msgid "Not part of group."
msgstr "ليس جزءا من المجموعة."
-#: classes/Group_member.php:60
+#. TRANS: Exception thrown when trying to leave a group fails.
+#: classes/Group_member.php:63
msgid "Group leave failed."
msgstr "ترك المجموعة Ùشل."
-#: classes/Local_group.php:41
+#. TRANS: Server exception thrown when updating a local group fails.
+#: classes/Local_group.php:42
msgid "Could not update local group."
msgstr "تعذر تحديث المجموعة المحلية."
-#: classes/Login_token.php:76
+#. TRANS: Exception thrown when trying creating a login token failed.
+#. TRANS: %s is the user nickname for which token creation failed.
+#: classes/Login_token.php:78
#, php-format
msgid "Could not create login token for %s"
msgstr "لم يمكن إنشاء توكن الولوج ل%s"
-#: classes/Message.php:45
+#. TRANS: Exception thrown when database name or Data Source Name could not be found.
+#: classes/Memcached_DataObject.php:533
+msgid "No database name or DSN found anywhere."
+msgstr ""
+
+#. TRANS: Client exception thrown when a user tries to send a direct message while being banned from sending them.
+#: classes/Message.php:46
msgid "You are banned from sending direct messages."
msgstr "أنت ممنوع من إرسال رسائل مباشرة."
-#: classes/Message.php:61
+#. TRANS: Message given when a message could not be stored on the server.
+#: classes/Message.php:63
msgid "Could not insert message."
msgstr "تعذّر إدراج الرسالة."
-#: classes/Message.php:71
+#. TRANS: Message given when a message could not be updated on the server.
+#: classes/Message.php:74
msgid "Could not update message with new URI."
msgstr ""
+#. TRANS: Server exception thrown when a user profile for a notice cannot be found.
+#. TRANS: %1$d is a profile ID (number), %2$d is a notice ID (number).
+#: classes/Notice.php:98
+#, php-format
+msgid "No such profile (%1$d) for notice (%2$d)."
+msgstr ""
+
#. TRANS: Server exception. %s are the error details.
-#: classes/Notice.php:182
+#: classes/Notice.php:190
#, fuzzy, php-format
msgid "Database error inserting hashtag: %s"
msgstr "خطأ قاعدة البيانات أثناء إدخال المستخدم OAuth app"
-#: classes/Notice.php:251
+#. TRANS: Client exception thrown if a notice contains too many characters.
+#: classes/Notice.php:260
msgid "Problem saving notice. Too long."
msgstr "مشكلة ÙÙŠ Ø­Ùظ الإشعار. طويل جدًا."
-#: classes/Notice.php:255
+#. TRANS: Client exception thrown when trying to save a notice for an unknown user.
+#: classes/Notice.php:265
msgid "Problem saving notice. Unknown user."
msgstr "مشكلة ÙÙŠ Ø­Ùظ الإشعار. مستخدم غير معروÙ."
-#: classes/Notice.php:260
+#. TRANS: Client exception thrown when a user tries to post too many notices in a given time frame.
+#: classes/Notice.php:271
msgid ""
"Too many notices too fast; take a breather and post again in a few minutes."
msgstr ""
-#: classes/Notice.php:266
+#. TRANS: Client exception thrown when a user tries to post too many duplicate notices in a given time frame.
+#: classes/Notice.php:278
msgid ""
"Too many duplicate messages too quickly; take a breather and post again in a "
"few minutes."
msgstr ""
-#: classes/Notice.php:272
+#. TRANS: Client exception thrown when a user tries to post while being banned.
+#: classes/Notice.php:286
msgid "You are banned from posting notices on this site."
msgstr ""
-#: classes/Notice.php:338 classes/Notice.php:364
+#. TRANS: Server exception thrown when a notice cannot be saved.
+#. TRANS: Server exception thrown when a notice cannot be updated.
+#: classes/Notice.php:353 classes/Notice.php:380
msgid "Problem saving notice."
msgstr "مشكلة أثناء Ø­Ùظ الإشعار."
-#: classes/Notice.php:973
+#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups().
+#: classes/Notice.php:892
+msgid "Bad type provided to saveKnownGroups"
+msgstr ""
+
+#. TRANS: Server exception thrown when an update for a group inbox fails.
+#: classes/Notice.php:991
#, fuzzy
msgid "Problem saving group inbox."
msgstr "مشكلة أثناء Ø­Ùظ الإشعار."
#. TRANS: Message used to repeat a notice. RT is the abbreviation of 'retweet'.
#. TRANS: %1$s is the repeated user's name, %2$s is the repeated notice.
-#: classes/Notice.php:1564
+#: classes/Notice.php:1614
#, php-format
msgid "RT @%1$s %2$s"
msgstr "آر تي @%1$s %2$s"
-#: classes/Subscription.php:74 lib/oauthstore.php:465
+#. TRANS: Exception thrown when trying to revoke an existing role for a user that does not exist.
+#. TRANS: %1$s is the role name, %2$s is the user ID (number).
+#: classes/Profile.php:740
+#, php-format
+msgid "Cannot revoke role \"%1$s\" for user #%2$d; does not exist."
+msgstr ""
+
+#. TRANS: Exception thrown when trying to revoke a role for a user with a failing database query.
+#. TRANS: %1$s is the role name, %2$s is the user ID (number).
+#: classes/Profile.php:749
+#, php-format
+msgid "Cannot revoke role \"%1$s\" for user #%2$d; database error."
+msgstr ""
+
+#. TRANS: Exception thrown when a right for a non-existing user profile is checked.
+#: classes/Remote_profile.php:54
+#, fuzzy
+msgid "Missing profile."
+msgstr "ليس للمستخدم مل٠شخصي."
+
+#. TRANS: Exception thrown when a tag cannot be saved.
+#: classes/Status_network.php:346
+#, fuzzy
+msgid "Unable to save tag."
+msgstr "تعذّر Ø­Ùظ إشعار الموقع."
+
+#. TRANS: Exception thrown when trying to subscribe while being banned from subscribing.
+#: classes/Subscription.php:75 lib/oauthstore.php:465
msgid "You have been banned from subscribing."
msgstr ""
-#: classes/Subscription.php:78
+#. TRANS: Exception thrown when trying to subscribe while already subscribed.
+#: classes/Subscription.php:80
msgid "Already subscribed!"
msgstr "Ù…Ùشترك أصلا!"
-#: classes/Subscription.php:82
+#. TRANS: Exception thrown when trying to subscribe to a user who has blocked the subscribing user.
+#: classes/Subscription.php:85
msgid "User has blocked you."
msgstr "لقد منعك المستخدم."
-#: classes/Subscription.php:167
+#. TRANS: Exception thrown when trying to unsibscribe without a subscription.
+#: classes/Subscription.php:171
msgid "Not subscribed!"
msgstr "غير مشترك!"
-#: classes/Subscription.php:173
-msgid "Couldn't delete self-subscription."
+#. TRANS: Exception thrown when trying to unsubscribe a user from themselves.
+#: classes/Subscription.php:178
+#, fuzzy
+msgid "Could not delete self-subscription."
msgstr "لم يمكن حذ٠اشتراك ذاتي."
-#: classes/Subscription.php:200
+#. TRANS: Exception thrown when the OMB token for a subscription could not deleted on the server.
+#: classes/Subscription.php:206
#, fuzzy
-msgid "Couldn't delete subscription OMB token."
+msgid "Could not delete subscription OMB token."
msgstr "تعذّر حذ٠الاشتراك."
-#: classes/Subscription.php:211
-msgid "Couldn't delete subscription."
+#. TRANS: Exception thrown when a subscription could not be deleted on the server.
+#: classes/Subscription.php:218
+#, fuzzy
+msgid "Could not delete subscription."
msgstr "تعذّر حذ٠الاشتراك."
-#: classes/User.php:363
+#. TRANS: Notice given on user registration.
+#. TRANS: %1$s is the sitename, $2$s is the registering user's nickname.
+#: classes/User.php:365
#, php-format
msgid "Welcome to %1$s, @%2$s!"
msgstr "أهلا بكم ÙÙŠ %1$s يا @%2$s!"
-#: classes/User_group.php:480
+#. TRANS: Server exception thrown when creating a group failed.
+#: classes/User_group.php:496
msgid "Could not create group."
msgstr "تعذّر إنشاء المجموعة."
-#: classes/User_group.php:489
+#. TRANS: Server exception thrown when updating a group URI failed.
+#: classes/User_group.php:506
#, fuzzy
msgid "Could not set group URI."
msgstr "تعذّر ضبط عضوية المجموعة."
-#: classes/User_group.php:510
+#. TRANS: Server exception thrown when setting group membership failed.
+#: classes/User_group.php:529
msgid "Could not set group membership."
msgstr "تعذّر ضبط عضوية المجموعة."
-#: classes/User_group.php:524
+#. TRANS: Server exception thrown when saving local group information failed.
+#: classes/User_group.php:544
#, fuzzy
msgid "Could not save local group info."
msgstr "تعذّر Ø­Ùظ الاشتراك."
@@ -4802,10 +4909,9 @@ msgstr "غير بريدك الإلكتروني وكلمة سرّك وأÙتارÙ
#. TRANS: Tooltip for main menu option "Services"
#: lib/action.php:452
-#, fuzzy
msgctxt "TOOLTIP"
msgid "Connect to services"
-msgstr "اتصالات"
+msgstr "اتصل بالخدمات"
#. TRANS: Main menu option when logged in and connection are possible for access to options to connect to other services
#: lib/action.php:455
@@ -6115,7 +6221,7 @@ msgid ""
"users in conversation. People can send you messages for your eyes only."
msgstr ""
-#: lib/mailbox.php:227 lib/noticelist.php:497
+#: lib/mailbox.php:227 lib/noticelist.php:505
msgid "from"
msgstr "من"
@@ -6168,26 +6274,26 @@ msgstr "Ùشل ÙÙŠ كتابة المل٠إلى القرص."
#: lib/mediafile.php:165
msgid "File upload stopped by extension."
-msgstr ""
+msgstr "أوقÙت إضاÙØ© رÙع الملÙ."
-#: lib/mediafile.php:179 lib/mediafile.php:216
+#: lib/mediafile.php:179 lib/mediafile.php:217
msgid "File exceeds user's quota."
msgstr ""
-#: lib/mediafile.php:196 lib/mediafile.php:233
+#: lib/mediafile.php:197 lib/mediafile.php:234
msgid "File could not be moved to destination directory."
msgstr ""
-#: lib/mediafile.php:201 lib/mediafile.php:237
+#: lib/mediafile.php:202 lib/mediafile.php:238
msgid "Could not determine file's MIME type."
msgstr "لم يمكن تحديد نوع MIME للملÙ."
-#: lib/mediafile.php:270
+#: lib/mediafile.php:318
#, php-format
msgid " Try using another %s format."
msgstr ""
-#: lib/mediafile.php:275
+#: lib/mediafile.php:323
#, php-format
msgid "%s is not a supported file type on this server."
msgstr ""
@@ -6241,51 +6347,51 @@ msgid ""
msgstr ""
#. TRANS: Used in coordinates as abbreviation of north
-#: lib/noticelist.php:430
+#: lib/noticelist.php:436
msgid "N"
msgstr "Ø´"
#. TRANS: Used in coordinates as abbreviation of south
-#: lib/noticelist.php:432
+#: lib/noticelist.php:438
msgid "S"
msgstr "ج"
#. TRANS: Used in coordinates as abbreviation of east
-#: lib/noticelist.php:434
+#: lib/noticelist.php:440
msgid "E"
msgstr "ر"
#. TRANS: Used in coordinates as abbreviation of west
-#: lib/noticelist.php:436
+#: lib/noticelist.php:442
msgid "W"
msgstr "غ"
-#: lib/noticelist.php:438
+#: lib/noticelist.php:444
#, php-format
msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
msgstr ""
-#: lib/noticelist.php:447
+#: lib/noticelist.php:453
msgid "at"
msgstr "ÙÙŠ"
-#: lib/noticelist.php:559
+#: lib/noticelist.php:567
msgid "in context"
msgstr "ÙÙŠ السياق"
-#: lib/noticelist.php:594
+#: lib/noticelist.php:602
msgid "Repeated by"
msgstr "مكرر بواسطة"
-#: lib/noticelist.php:621
+#: lib/noticelist.php:629
msgid "Reply to this notice"
msgstr "رÙد على هذا الإشعار"
-#: lib/noticelist.php:622
+#: lib/noticelist.php:630
msgid "Reply"
msgstr "رÙد"
-#: lib/noticelist.php:666
+#: lib/noticelist.php:674
msgid "Notice repeated"
msgstr "الإشعار مكرر"
@@ -6543,7 +6649,7 @@ msgid "This server cannot handle theme uploads without ZIP support."
msgstr ""
#: lib/themeuploader.php:58 lib/themeuploader.php:61
-msgid "Theme upload missing or failed."
+msgid "The theme file is missing or the upload failed."
msgstr ""
#: lib/themeuploader.php:91 lib/themeuploader.php:102
@@ -6648,9 +6754,8 @@ msgid "Moderate"
msgstr "راقب"
#: lib/userprofile.php:364
-#, fuzzy
msgid "User role"
-msgstr "مل٠المستخدم الشخصي"
+msgstr "دور المستخدم"
#: lib/userprofile.php:366
msgctxt "role"
diff --git a/locale/arz/LC_MESSAGES/statusnet.po b/locale/arz/LC_MESSAGES/statusnet.po
index 8fc629453..dc0555848 100644
--- a/locale/arz/LC_MESSAGES/statusnet.po
+++ b/locale/arz/LC_MESSAGES/statusnet.po
@@ -10,12 +10,12 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-06-16 22:18+0000\n"
-"PO-Revision-Date: 2010-06-21 18:02:48+0000\n"
+"POT-Creation-Date: 2010-08-03 13:21+0000\n"
+"PO-Revision-Date: 2010-08-03 13:21:41+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.17alpha (r68367); Translate extension (2010-06-12)\n"
+"X-Generator: MediaWiki 1.17alpha (r70381); Translate extension (2010-07-21)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: arz\n"
"X-Message-Group: out-statusnet\n"
@@ -106,7 +106,7 @@ msgstr "لا صÙحه كهذه"
#: actions/apidirectmessagenew.php:74 actions/apigroupcreate.php:113
#: actions/apigroupismember.php:91 actions/apigroupjoin.php:100
#: actions/apigroupleave.php:100 actions/apigrouplist.php:73
-#: actions/apistatusesupdate.php:228 actions/apisubscriptions.php:87
+#: actions/apistatusesupdate.php:229 actions/apisubscriptions.php:87
#: actions/apitimelinefavorites.php:72 actions/apitimelinefriends.php:174
#: actions/apitimelinehome.php:80 actions/apitimelinementions.php:80
#: actions/apitimelineuser.php:82 actions/avatarbynickname.php:75
@@ -173,16 +173,18 @@ msgstr ""
#: actions/all.php:146
#, 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)."
+"You can try to [nudge %1$s](../%2$s) from their profile or [post something "
+"to them](%%%%action.newnotice%%%%?status_textarea=%3$s)."
msgstr ""
#: actions/all.php:149 actions/replies.php:210 actions/showstream.php:211
-#, php-format
+#, fuzzy, php-format
msgid ""
"Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
-"post a notice to his or her attention."
+"post a notice to them."
msgstr ""
+"%s لم يض٠أى إشعارات إلى Ù…Ùضلته إلى الآن. لمّ لا [تسجل حسابًا](%%%%action."
+"register%%%%) وترسل شيئًا شيقًا ليضيÙÙ‡ إلى Ù…Ùضلته. :)"
#. TRANS: H1 text
#: actions/all.php:182
@@ -214,7 +216,7 @@ msgstr ""
#: actions/apistatusesshow.php:109 actions/apistatusnetconfig.php:141
#: actions/apistatusnetversion.php:93 actions/apisubscriptions.php:111
#: actions/apitimelinefavorites.php:174 actions/apitimelinefriends.php:271
-#: actions/apitimelinegroup.php:152 actions/apitimelinehome.php:175
+#: actions/apitimelinegroup.php:154 actions/apitimelinehome.php:175
#: actions/apitimelinementions.php:174 actions/apitimelinepublic.php:241
#: actions/apitimelineretweetedtome.php:121
#: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161
@@ -262,7 +264,7 @@ msgstr "لم يمكن Ø­Ùظ الملÙ."
#: actions/apiaccountupdateprofilebackgroundimage.php:108
#: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80
-#: actions/apistatusesupdate.php:211 actions/avatarsettings.php:257
+#: actions/apistatusesupdate.php:212 actions/avatarsettings.php:257
#: actions/designadminpanel.php:123 actions/editapplication.php:118
#: actions/newapplication.php:101 actions/newnotice.php:94
#: lib/designsettings.php:283
@@ -358,8 +360,9 @@ msgid "Could not delete favorite."
msgstr "تعذّر حذ٠المÙضله."
#: actions/apifriendshipscreate.php:109
-msgid "Could not follow user: User not found."
-msgstr ""
+#, fuzzy
+msgid "Could not follow user: profile not found."
+msgstr "لم يمكن Ø­Ùظ الملÙ."
#: actions/apifriendshipscreate.php:118
#, php-format
@@ -374,8 +377,8 @@ msgstr ""
msgid "You cannot unfollow yourself."
msgstr "ما ينÙعش عدم متابعة Ù†Ùسك."
-#: actions/apifriendshipsexists.php:94
-msgid "Two user ids or screen_names must be supplied."
+#: actions/apifriendshipsexists.php:91
+msgid "Two valid IDs or screen_names must be supplied."
msgstr ""
#: actions/apifriendshipsshow.php:134
@@ -504,6 +507,11 @@ msgstr "مجموعات %s"
msgid "groups on %s"
msgstr "مجموعات %s"
+#: actions/apimediaupload.php:99
+#, fuzzy
+msgid "Upload failed."
+msgstr "ارÙع ملÙًا"
+
#: actions/apioauthauthorize.php:101
msgid "No oauth_token parameter provided."
msgstr ""
@@ -645,22 +653,26 @@ msgstr "Ø­ÙØ°ÙÙت الحاله."
msgid "No status with that ID found."
msgstr ""
-#: actions/apistatusesupdate.php:241 actions/newnotice.php:155
+#: actions/apistatusesupdate.php:221
+msgid "Client must provide a 'status' parameter with a value."
+msgstr ""
+
+#: actions/apistatusesupdate.php:242 actions/newnotice.php:155
#: lib/mailhandler.php:60
#, php-format
msgid "That's too long. Max notice size is %d chars."
msgstr ""
-#: actions/apistatusesupdate.php:282 actions/apiusershow.php:96
+#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96
msgid "Not found."
msgstr "لم يوجد."
-#: actions/apistatusesupdate.php:305 actions/newnotice.php:178
+#: actions/apistatusesupdate.php:306 actions/newnotice.php:178
#, php-format
msgid "Max notice size is %d chars, including attachment URL."
msgstr ""
-#: actions/apisubscriptions.php:231 actions/apisubscriptions.php:261
+#: actions/apisubscriptions.php:232 actions/apisubscriptions.php:262
msgid "Unsupported format."
msgstr "نسق غير مدعوم."
@@ -714,6 +726,10 @@ msgstr "الإشعارات الموسومه ب%s"
msgid "Updates tagged with %1$s on %2$s!"
msgstr ""
+#: actions/apitrends.php:87
+msgid "API method under construction."
+msgstr ""
+
#: actions/attachment.php:73
msgid "No such attachment."
msgstr "لا مرÙÙ‚ كهذا."
@@ -766,7 +782,7 @@ msgid "Preview"
msgstr "عاين"
#: actions/avatarsettings.php:149 actions/showapplication.php:252
-#: lib/deleteuserform.php:66 lib/noticelist.php:648
+#: lib/deleteuserform.php:66 lib/noticelist.php:656
msgid "Delete"
msgstr "احذÙ"
@@ -1047,7 +1063,7 @@ msgid "Do not delete this notice"
msgstr "لا تحذ٠هذا الإشعار"
#. TRANS: Submit button title for 'Yes' when deleting a notice.
-#: actions/deletenotice.php:158 lib/noticelist.php:648
+#: actions/deletenotice.php:158 lib/noticelist.php:656
msgid "Delete this notice"
msgstr "احذ٠هذا الإشعار"
@@ -1323,7 +1339,8 @@ msgstr "كنيه غير صالحة: \"%s\""
msgid "Could not update group."
msgstr "تعذر تحديث المجموعه."
-#: actions/editgroup.php:264 classes/User_group.php:496
+#. TRANS: Server exception thrown when creating group aliases failed.
+#: actions/editgroup.php:264 classes/User_group.php:514
msgid "Could not create aliases."
msgstr "تعذّر إنشاء الكنى."
@@ -2414,7 +2431,7 @@ msgstr ""
#: actions/nudge.php:85
msgid ""
-"This user doesn't allow nudges or hasn't confirmed or set his email yet."
+"This user doesn't allow nudges or hasn't confirmed or set their email yet."
msgstr ""
#: actions/nudge.php:94
@@ -2490,8 +2507,8 @@ msgid "Only %s URLs over plain HTTP please."
msgstr ""
#. TRANS: Client error on an API request with an unsupported data format.
-#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1179
-#: lib/apiaction.php:1208 lib/apiaction.php:1325
+#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1204
+#: lib/apiaction.php:1232 lib/apiaction.php:1355
msgid "Not a supported data format."
msgstr " مش نظام بيانات مدعوم."
@@ -3352,7 +3369,7 @@ msgstr "ما ينÙعش تكرر الملاحظه بتاعتك."
msgid "You already repeated that notice."
msgstr "انت عيدت الملاحظه دى Ùعلا."
-#: actions/repeat.php:114 lib/noticelist.php:667
+#: actions/repeat.php:114 lib/noticelist.php:675
msgid "Repeated"
msgstr "مكرر"
@@ -3390,7 +3407,7 @@ msgstr ""
#, php-format
msgid ""
"This is the timeline showing replies to %1$s but %2$s hasn't received a "
-"notice to his attention yet."
+"notice to them yet."
msgstr ""
#: actions/replies.php:204
@@ -3403,8 +3420,8 @@ msgstr ""
#: actions/replies.php:206
#, php-format
msgid ""
-"You can try to [nudge %1$s](../%2$s) or [post something to his or her "
-"attention](%%%%action.newnotice%%%%?status_textarea=%3$s)."
+"You can try to [nudge %1$s](../%2$s) or [post something to them](%%%%action."
+"newnotice%%%%?status_textarea=%3$s)."
msgstr ""
#: actions/repliesrss.php:72
@@ -3496,7 +3513,7 @@ msgstr "المنظمه"
msgid "Description"
msgstr "الوصÙ"
-#: actions/showapplication.php:192 actions/showgroup.php:444
+#: actions/showapplication.php:192 actions/showgroup.php:436
#: lib/profileaction.php:187
msgid "Statistics"
msgstr "إحصاءات"
@@ -3580,20 +3597,20 @@ msgid ""
msgstr ""
#: actions/showfavorites.php:208
-#, php-format
+#, fuzzy, php-format
msgid ""
-"%s hasn't added any notices to his favorites yet. Post something interesting "
-"they would add to their favorites :)"
+"%s hasn't added any favorite notices yet. Post something interesting they "
+"would add to their favorites :)"
msgstr ""
"%s لم يض٠أى إشعارات إلى Ù…Ùضلته إلى الآن. أرسل شيئًا شيقًا ليضيÙÙ‡ إلى "
"Ù…Ùضلته. :)"
#: actions/showfavorites.php:212
-#, php-format
+#, fuzzy, php-format
msgid ""
-"%s hasn't added any notices to his favorites yet. Why not [register an "
-"account](%%%%action.register%%%%) and then post something interesting they "
-"would add to their favorites :)"
+"%s hasn't added any favorite notices yet. Why not [register an account](%%%%"
+"action.register%%%%) and then post something interesting they would add to "
+"their favorites :)"
msgstr ""
"%s لم يض٠أى إشعارات إلى Ù…Ùضلته إلى الآن. لمّ لا [تسجل حسابًا](%%%%action."
"register%%%%) وترسل شيئًا شيقًا ليضيÙÙ‡ إلى Ù…Ùضلته. :)"
@@ -3654,7 +3671,7 @@ msgstr ""
msgid "FOAF for %s group"
msgstr ""
-#: actions/showgroup.php:393 actions/showgroup.php:453 lib/groupnav.php:91
+#: actions/showgroup.php:393 actions/showgroup.php:445 lib/groupnav.php:91
msgid "Members"
msgstr "الأعضاء"
@@ -3668,11 +3685,11 @@ msgstr "(لا شيء)"
msgid "All members"
msgstr "جميع الأعضاء"
-#: actions/showgroup.php:447
+#: actions/showgroup.php:439
msgid "Created"
msgstr "أنشئ"
-#: actions/showgroup.php:463
+#: actions/showgroup.php:455
#, php-format
msgid ""
"**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3682,7 +3699,7 @@ msgid ""
"of this group and many more! ([Read more](%%%%doc.help%%%%))"
msgstr ""
-#: actions/showgroup.php:469
+#: actions/showgroup.php:461
#, php-format
msgid ""
"**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3691,7 +3708,7 @@ msgid ""
"their life and interests. "
msgstr ""
-#: actions/showgroup.php:497
+#: actions/showgroup.php:489
msgid "Admins"
msgstr "الإداريون"
@@ -3766,8 +3783,8 @@ msgstr ""
#: 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)."
+"You can try to nudge %1$s or [post something to them](%%%%action.newnotice%%%"
+"%?status_textarea=%2$s)."
msgstr ""
#: actions/showstream.php:243
@@ -4150,7 +4167,8 @@ msgstr "اذ٠إعدادت الموقع"
msgid "You are not subscribed to that profile."
msgstr ""
-#: actions/subedit.php:83 classes/Subscription.php:132
+#. TRANS: Exception thrown when a subscription could not be stored on the server.
+#: actions/subedit.php:83 classes/Subscription.php:136
msgid "Could not save subscription."
msgstr "تعذّر Ø­Ùظ الاشتراك."
@@ -4315,10 +4333,6 @@ msgstr ""
msgid "No such tag."
msgstr "لا وسم كهذا."
-#: actions/twitapitrends.php:85
-msgid "API method under construction."
-msgstr ""
-
#: actions/unblock.php:59
msgid "You haven't blocked that user."
msgstr "لم تمنع هذا المستخدم."
@@ -4606,150 +4620,248 @@ msgstr "النسخه"
msgid "Author(s)"
msgstr "المؤلÙ/ين"
-#: classes/File.php:185
+#. TRANS: Server exception thrown when a URL cannot be processed.
+#: classes/File.php:143
+#, php-format
+msgid "Cannot process URL '%s'"
+msgstr ""
+
+#. TRANS: Server exception thrown when... Robin thinks something is impossible!
+#: classes/File.php:175
+msgid "Robin thinks something is impossible."
+msgstr ""
+
+#. TRANS: Message given if an upload is larger than the configured maximum.
+#. TRANS: %1$d is the byte limit for uploads, %2$d is the byte count for the uploaded file.
+#: classes/File.php:190
#, php-format
msgid ""
-"No file may be larger than %d bytes and the file you sent was %d bytes. Try "
-"to upload a smaller version."
+"No file may be larger than %1$d bytes and the file you sent was %2$d bytes. "
+"Try to upload a smaller version."
msgstr ""
-#: classes/File.php:195
+#. TRANS: Message given if an upload would exceed user quota.
+#. TRANS: %d (number) is the user quota in bytes.
+#: classes/File.php:202
#, php-format
msgid "A file this large would exceed your user quota of %d bytes."
msgstr ""
-#: classes/File.php:202
+#. TRANS: Message given id an upload would exceed a user's monthly quota.
+#. TRANS: $d (number) is the monthly user quota in bytes.
+#: classes/File.php:211
#, php-format
msgid "A file this large would exceed your monthly quota of %d bytes."
msgstr ""
-#: classes/Group_member.php:41
+#. TRANS: Client exception thrown if a file upload does not have a valid name.
+#: classes/File.php:248 classes/File.php:263
+#, fuzzy
+msgid "Invalid filename."
+msgstr "حجم غير صالح."
+
+#. TRANS: Exception thrown when joining a group fails.
+#: classes/Group_member.php:42
msgid "Group join failed."
msgstr "دخول الجروپ Ùشل."
-#: classes/Group_member.php:53
+#. TRANS: Exception thrown when trying to leave a group the user is not a member of.
+#: classes/Group_member.php:55
msgid "Not part of group."
msgstr "مش جزء من الجروپ."
-#: classes/Group_member.php:60
+#. TRANS: Exception thrown when trying to leave a group fails.
+#: classes/Group_member.php:63
msgid "Group leave failed."
msgstr "الخروج من الجروپ Ùشل."
-#: classes/Local_group.php:41
+#. TRANS: Server exception thrown when updating a local group fails.
+#: classes/Local_group.php:42
#, fuzzy
msgid "Could not update local group."
msgstr "تعذر تحديث المجموعه."
-#: classes/Login_token.php:76
+#. TRANS: Exception thrown when trying creating a login token failed.
+#. TRANS: %s is the user nickname for which token creation failed.
+#: classes/Login_token.php:78
#, php-format
msgid "Could not create login token for %s"
msgstr "ما Ù†Ùعش يتعمل امارة تسجيل دخول لـ %s"
-#: classes/Message.php:45
+#. TRANS: Exception thrown when database name or Data Source Name could not be found.
+#: classes/Memcached_DataObject.php:533
+msgid "No database name or DSN found anywhere."
+msgstr ""
+
+#. TRANS: Client exception thrown when a user tries to send a direct message while being banned from sending them.
+#: classes/Message.php:46
msgid "You are banned from sending direct messages."
msgstr "أنت ممنوع من إرسال رسائل مباشره."
-#: classes/Message.php:61
+#. TRANS: Message given when a message could not be stored on the server.
+#: classes/Message.php:63
msgid "Could not insert message."
msgstr "تعذّر إدراج الرساله."
-#: classes/Message.php:71
+#. TRANS: Message given when a message could not be updated on the server.
+#: classes/Message.php:74
msgid "Could not update message with new URI."
msgstr ""
+#. TRANS: Server exception thrown when a user profile for a notice cannot be found.
+#. TRANS: %1$d is a profile ID (number), %2$d is a notice ID (number).
+#: classes/Notice.php:98
+#, php-format
+msgid "No such profile (%1$d) for notice (%2$d)."
+msgstr ""
+
#. TRANS: Server exception. %s are the error details.
-#: classes/Notice.php:182
+#: classes/Notice.php:190
#, fuzzy, php-format
msgid "Database error inserting hashtag: %s"
msgstr "خطأ قاعده البيانات أثناء إدخال المستخدم OAuth app"
-#: classes/Notice.php:251
+#. TRANS: Client exception thrown if a notice contains too many characters.
+#: classes/Notice.php:260
msgid "Problem saving notice. Too long."
msgstr "مشكله ÙÙ‰ Ø­Ùظ الإشعار. طويل جدًا."
-#: classes/Notice.php:255
+#. TRANS: Client exception thrown when trying to save a notice for an unknown user.
+#: classes/Notice.php:265
msgid "Problem saving notice. Unknown user."
msgstr "مشكله ÙÙ‰ Ø­Ùظ الإشعار. مستخدم غير معروÙ."
-#: classes/Notice.php:260
+#. TRANS: Client exception thrown when a user tries to post too many notices in a given time frame.
+#: classes/Notice.php:271
msgid ""
"Too many notices too fast; take a breather and post again in a few minutes."
msgstr ""
-#: classes/Notice.php:266
+#. TRANS: Client exception thrown when a user tries to post too many duplicate notices in a given time frame.
+#: classes/Notice.php:278
msgid ""
"Too many duplicate messages too quickly; take a breather and post again in a "
"few minutes."
msgstr ""
-#: classes/Notice.php:272
+#. TRANS: Client exception thrown when a user tries to post while being banned.
+#: classes/Notice.php:286
msgid "You are banned from posting notices on this site."
msgstr ""
-#: classes/Notice.php:338 classes/Notice.php:364
+#. TRANS: Server exception thrown when a notice cannot be saved.
+#. TRANS: Server exception thrown when a notice cannot be updated.
+#: classes/Notice.php:353 classes/Notice.php:380
msgid "Problem saving notice."
msgstr "مشكله أثناء Ø­Ùظ الإشعار."
-#: classes/Notice.php:973
+#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups().
+#: classes/Notice.php:892
+msgid "Bad type provided to saveKnownGroups"
+msgstr ""
+
+#. TRANS: Server exception thrown when an update for a group inbox fails.
+#: classes/Notice.php:991
#, fuzzy
msgid "Problem saving group inbox."
msgstr "مشكله أثناء Ø­Ùظ الإشعار."
#. TRANS: Message used to repeat a notice. RT is the abbreviation of 'retweet'.
#. TRANS: %1$s is the repeated user's name, %2$s is the repeated notice.
-#: classes/Notice.php:1564
+#: classes/Notice.php:1614
#, php-format
msgid "RT @%1$s %2$s"
msgstr "آر تى @%1$s %2$s"
-#: classes/Subscription.php:74 lib/oauthstore.php:465
+#. TRANS: Exception thrown when trying to revoke an existing role for a user that does not exist.
+#. TRANS: %1$s is the role name, %2$s is the user ID (number).
+#: classes/Profile.php:740
+#, php-format
+msgid "Cannot revoke role \"%1$s\" for user #%2$d; does not exist."
+msgstr ""
+
+#. TRANS: Exception thrown when trying to revoke a role for a user with a failing database query.
+#. TRANS: %1$s is the role name, %2$s is the user ID (number).
+#: classes/Profile.php:749
+#, php-format
+msgid "Cannot revoke role \"%1$s\" for user #%2$d; database error."
+msgstr ""
+
+#. TRANS: Exception thrown when a right for a non-existing user profile is checked.
+#: classes/Remote_profile.php:54
+#, fuzzy
+msgid "Missing profile."
+msgstr "ليس للمستخدم مل٠شخصى."
+
+#. TRANS: Exception thrown when a tag cannot be saved.
+#: classes/Status_network.php:346
+#, fuzzy
+msgid "Unable to save tag."
+msgstr "مشكله أثناء Ø­Ùظ الإشعار."
+
+#. TRANS: Exception thrown when trying to subscribe while being banned from subscribing.
+#: classes/Subscription.php:75 lib/oauthstore.php:465
msgid "You have been banned from subscribing."
msgstr ""
-#: classes/Subscription.php:78
+#. TRANS: Exception thrown when trying to subscribe while already subscribed.
+#: classes/Subscription.php:80
msgid "Already subscribed!"
msgstr "Ù…Ùشترك أصلا!"
-#: classes/Subscription.php:82
+#. TRANS: Exception thrown when trying to subscribe to a user who has blocked the subscribing user.
+#: classes/Subscription.php:85
msgid "User has blocked you."
msgstr "لقد منعك المستخدم."
-#: classes/Subscription.php:167
+#. TRANS: Exception thrown when trying to unsibscribe without a subscription.
+#: classes/Subscription.php:171
msgid "Not subscribed!"
msgstr "غير مشترك!"
-#: classes/Subscription.php:173
-msgid "Couldn't delete self-subscription."
+#. TRANS: Exception thrown when trying to unsubscribe a user from themselves.
+#: classes/Subscription.php:178
+#, fuzzy
+msgid "Could not delete self-subscription."
msgstr "ما Ù†Ùعش يمسح الاشتراك الشخصى."
-#: classes/Subscription.php:200
+#. TRANS: Exception thrown when the OMB token for a subscription could not deleted on the server.
+#: classes/Subscription.php:206
#, fuzzy
-msgid "Couldn't delete subscription OMB token."
+msgid "Could not delete subscription OMB token."
msgstr "تعذّر حذ٠الاشتراك."
-#: classes/Subscription.php:211
-msgid "Couldn't delete subscription."
+#. TRANS: Exception thrown when a subscription could not be deleted on the server.
+#: classes/Subscription.php:218
+#, fuzzy
+msgid "Could not delete subscription."
msgstr "تعذّر حذ٠الاشتراك."
-#: classes/User.php:363
+#. TRANS: Notice given on user registration.
+#. TRANS: %1$s is the sitename, $2$s is the registering user's nickname.
+#: classes/User.php:365
#, php-format
msgid "Welcome to %1$s, @%2$s!"
msgstr "أهلا بكم ÙÙ‰ %1$s يا @%2$s!"
-#: classes/User_group.php:480
+#. TRANS: Server exception thrown when creating a group failed.
+#: classes/User_group.php:496
msgid "Could not create group."
msgstr "تعذّر إنشاء المجموعه."
-#: classes/User_group.php:489
+#. TRANS: Server exception thrown when updating a group URI failed.
+#: classes/User_group.php:506
#, fuzzy
msgid "Could not set group URI."
msgstr "تعذّر ضبط عضويه المجموعه."
-#: classes/User_group.php:510
+#. TRANS: Server exception thrown when setting group membership failed.
+#: classes/User_group.php:529
msgid "Could not set group membership."
msgstr "تعذّر ضبط عضويه المجموعه."
-#: classes/User_group.php:524
+#. TRANS: Server exception thrown when saving local group information failed.
+#: classes/User_group.php:544
#, fuzzy
msgid "Could not save local group info."
msgstr "تعذّر Ø­Ùظ الاشتراك."
@@ -6100,7 +6212,7 @@ msgid ""
"users in conversation. People can send you messages for your eyes only."
msgstr ""
-#: lib/mailbox.php:227 lib/noticelist.php:497
+#: lib/mailbox.php:227 lib/noticelist.php:505
msgid "from"
msgstr "من"
@@ -6155,24 +6267,24 @@ msgstr "Ùشل ÙÙ‰ كتابه المل٠إلى القرص."
msgid "File upload stopped by extension."
msgstr ""
-#: lib/mediafile.php:179 lib/mediafile.php:216
+#: lib/mediafile.php:179 lib/mediafile.php:217
msgid "File exceeds user's quota."
msgstr ""
-#: lib/mediafile.php:196 lib/mediafile.php:233
+#: lib/mediafile.php:197 lib/mediafile.php:234
msgid "File could not be moved to destination directory."
msgstr ""
-#: lib/mediafile.php:201 lib/mediafile.php:237
+#: lib/mediafile.php:202 lib/mediafile.php:238
msgid "Could not determine file's MIME type."
msgstr "مش ناÙع يتحدد نوع الـMIME بتاع الÙايل."
-#: lib/mediafile.php:270
+#: lib/mediafile.php:318
#, php-format
msgid " Try using another %s format."
msgstr ""
-#: lib/mediafile.php:275
+#: lib/mediafile.php:323
#, php-format
msgid "%s is not a supported file type on this server."
msgstr ""
@@ -6227,51 +6339,51 @@ msgid ""
msgstr ""
#. TRANS: Used in coordinates as abbreviation of north
-#: lib/noticelist.php:430
+#: lib/noticelist.php:436
msgid "N"
msgstr "Ø´"
#. TRANS: Used in coordinates as abbreviation of south
-#: lib/noticelist.php:432
+#: lib/noticelist.php:438
msgid "S"
msgstr "ج"
#. TRANS: Used in coordinates as abbreviation of east
-#: lib/noticelist.php:434
+#: lib/noticelist.php:440
msgid "E"
msgstr "ر"
#. TRANS: Used in coordinates as abbreviation of west
-#: lib/noticelist.php:436
+#: lib/noticelist.php:442
msgid "W"
msgstr "غ"
-#: lib/noticelist.php:438
+#: lib/noticelist.php:444
#, php-format
msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
msgstr ""
-#: lib/noticelist.php:447
+#: lib/noticelist.php:453
msgid "at"
msgstr "ÙÙŠ"
-#: lib/noticelist.php:559
+#: lib/noticelist.php:567
msgid "in context"
msgstr "ÙÙ‰ السياق"
-#: lib/noticelist.php:594
+#: lib/noticelist.php:602
msgid "Repeated by"
msgstr "متكرر من"
-#: lib/noticelist.php:621
+#: lib/noticelist.php:629
msgid "Reply to this notice"
msgstr "رÙد على هذا الإشعار"
-#: lib/noticelist.php:622
+#: lib/noticelist.php:630
msgid "Reply"
msgstr "رÙد"
-#: lib/noticelist.php:666
+#: lib/noticelist.php:674
msgid "Notice repeated"
msgstr "الإشعار مكرر"
@@ -6529,7 +6641,7 @@ msgid "This server cannot handle theme uploads without ZIP support."
msgstr ""
#: lib/themeuploader.php:58 lib/themeuploader.php:61
-msgid "Theme upload missing or failed."
+msgid "The theme file is missing or the upload failed."
msgstr ""
#: lib/themeuploader.php:91 lib/themeuploader.php:102
diff --git a/locale/bg/LC_MESSAGES/statusnet.po b/locale/bg/LC_MESSAGES/statusnet.po
index 6f87d49be..4661bc824 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-06-16 22:18+0000\n"
-"PO-Revision-Date: 2010-06-21 18:02:52+0000\n"
+"POT-Creation-Date: 2010-08-03 13:21+0000\n"
+"PO-Revision-Date: 2010-08-03 13:21:42+0000\n"
"Language-Team: Bulgarian\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.17alpha (r68367); Translate extension (2010-06-12)\n"
+"X-Generator: MediaWiki 1.17alpha (r70381); Translate extension (2010-07-21)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: bg\n"
"X-Message-Group: out-statusnet\n"
@@ -87,7 +87,6 @@ msgstr "Запазване"
#. TRANS: Server error when page not found (404)
#: actions/all.php:68 actions/public.php:98 actions/replies.php:93
#: actions/showfavorites.php:138 actions/tag.php:52
-#, fuzzy
msgid "No such page."
msgstr "ÐÑма такака Ñтраница."
@@ -100,7 +99,7 @@ msgstr "ÐÑма такака Ñтраница."
#: actions/apidirectmessagenew.php:74 actions/apigroupcreate.php:113
#: actions/apigroupismember.php:91 actions/apigroupjoin.php:100
#: actions/apigroupleave.php:100 actions/apigrouplist.php:73
-#: actions/apistatusesupdate.php:228 actions/apisubscriptions.php:87
+#: actions/apistatusesupdate.php:229 actions/apisubscriptions.php:87
#: actions/apitimelinefavorites.php:72 actions/apitimelinefriends.php:174
#: actions/apitimelinehome.php:80 actions/apitimelinementions.php:80
#: actions/apitimelineuser.php:82 actions/avatarbynickname.php:75
@@ -167,15 +166,15 @@ msgstr ""
#: actions/all.php:146
#, 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)."
+"You can try to [nudge %1$s](../%2$s) from their profile or [post something "
+"to them](%%%%action.newnotice%%%%?status_textarea=%3$s)."
msgstr ""
#: actions/all.php:149 actions/replies.php:210 actions/showstream.php:211
#, php-format
msgid ""
"Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
-"post a notice to his or her attention."
+"post a notice to them."
msgstr ""
#. TRANS: H1 text
@@ -208,7 +207,7 @@ msgstr "Бележки от %1$s и приÑтели в %2$s."
#: actions/apistatusesshow.php:109 actions/apistatusnetconfig.php:141
#: actions/apistatusnetversion.php:93 actions/apisubscriptions.php:111
#: actions/apitimelinefavorites.php:174 actions/apitimelinefriends.php:271
-#: actions/apitimelinegroup.php:152 actions/apitimelinehome.php:175
+#: actions/apitimelinegroup.php:154 actions/apitimelinehome.php:175
#: actions/apitimelinementions.php:174 actions/apitimelinepublic.php:241
#: actions/apitimelineretweetedtome.php:121
#: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161
@@ -256,7 +255,7 @@ msgstr "Грешка при запазване на профила."
#: actions/apiaccountupdateprofilebackgroundimage.php:108
#: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80
-#: actions/apistatusesupdate.php:211 actions/avatarsettings.php:257
+#: actions/apistatusesupdate.php:212 actions/avatarsettings.php:257
#: actions/designadminpanel.php:123 actions/editapplication.php:118
#: actions/newapplication.php:101 actions/newnotice.php:94
#: lib/designsettings.php:283
@@ -356,7 +355,8 @@ msgid "Could not delete favorite."
msgstr "Грешка при изтриване на любима бележка."
#: actions/apifriendshipscreate.php:109
-msgid "Could not follow user: User not found."
+#, fuzzy
+msgid "Could not follow user: profile not found."
msgstr "Грешка при проÑледÑване — потребителÑÑ‚ не е намерен."
#: actions/apifriendshipscreate.php:118
@@ -372,8 +372,9 @@ msgstr "Грешка при Ñпиране на проÑледÑването —
msgid "You cannot unfollow yourself."
msgstr "Ðе можете да Ñпрете да Ñледите Ñебе Ñи."
-#: actions/apifriendshipsexists.php:94
-msgid "Two user ids or screen_names must be supplied."
+#: actions/apifriendshipsexists.php:91
+#, fuzzy
+msgid "Two valid IDs or screen_names must be supplied."
msgstr "ТрÑбва да Ñе дадат два идентификатора или имена на потребители."
#: actions/apifriendshipsshow.php:134
@@ -437,7 +438,7 @@ msgid "Too many aliases! Maximum %d."
msgstr ""
#: actions/apigroupcreate.php:267
-#, fuzzy, php-format
+#, php-format
msgid "Invalid alias: \"%s\"."
msgstr "Ðеправилен пÑевдоним: \"%s\""
@@ -504,6 +505,11 @@ msgstr "Групи на %s"
msgid "groups on %s"
msgstr "групи в %s"
+#: actions/apimediaupload.php:99
+#, fuzzy
+msgid "Upload failed."
+msgstr "Качване на файл"
+
#: actions/apioauthauthorize.php:101
msgid "No oauth_token parameter provided."
msgstr ""
@@ -575,7 +581,7 @@ msgstr ""
#: actions/apioauthauthorize.php:276
msgid "Allow or deny access"
-msgstr ""
+msgstr "Разрешение или забрана на доÑтъпа"
#: actions/apioauthauthorize.php:292
#, php-format
@@ -606,12 +612,11 @@ msgstr "Парола"
#: actions/apioauthauthorize.php:328
msgid "Deny"
-msgstr ""
+msgstr "Забрана"
#: actions/apioauthauthorize.php:334
-#, fuzzy
msgid "Allow"
-msgstr "Ð’Ñички"
+msgstr "Разрешение"
#: actions/apioauthauthorize.php:351
msgid "Allow or deny access to your account information."
@@ -646,22 +651,26 @@ msgstr "Бележката е изтрита."
msgid "No status with that ID found."
msgstr "Ðе е открита бележка Ñ Ñ‚Ð°ÐºÑŠÐ² идентификатор."
-#: actions/apistatusesupdate.php:241 actions/newnotice.php:155
+#: actions/apistatusesupdate.php:221
+msgid "Client must provide a 'status' parameter with a value."
+msgstr ""
+
+#: actions/apistatusesupdate.php:242 actions/newnotice.php:155
#: lib/mailhandler.php:60
#, fuzzy, php-format
msgid "That's too long. Max notice size is %d chars."
msgstr "Твърде дълга бележка. ТрÑбва да е най-много 140 знака."
-#: actions/apistatusesupdate.php:282 actions/apiusershow.php:96
+#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96
msgid "Not found."
msgstr "Ðе е открито."
-#: actions/apistatusesupdate.php:305 actions/newnotice.php:178
+#: actions/apistatusesupdate.php:306 actions/newnotice.php:178
#, php-format
msgid "Max notice size is %d chars, including attachment URL."
msgstr ""
-#: actions/apisubscriptions.php:231 actions/apisubscriptions.php:261
+#: actions/apisubscriptions.php:232 actions/apisubscriptions.php:262
msgid "Unsupported format."
msgstr "Ðеподдържан формат."
@@ -715,6 +724,10 @@ msgstr "Бележки Ñ ÐµÑ‚Ð¸ÐºÐµÑ‚ %s"
msgid "Updates tagged with %1$s on %2$s!"
msgstr "Бележки от %1$s в %2$s."
+#: actions/apitrends.php:87
+msgid "API method under construction."
+msgstr "Методът в API вÑе още Ñе разработва."
+
#: actions/attachment.php:73
#, fuzzy
msgid "No such attachment."
@@ -770,7 +783,7 @@ msgid "Preview"
msgstr "Преглед"
#: actions/avatarsettings.php:149 actions/showapplication.php:252
-#: lib/deleteuserform.php:66 lib/noticelist.php:648
+#: lib/deleteuserform.php:66 lib/noticelist.php:656
msgid "Delete"
msgstr "Изтриване"
@@ -1044,7 +1057,7 @@ msgid "Do not delete this notice"
msgstr "Да не Ñе изтрива бележката"
#. TRANS: Submit button title for 'Yes' when deleting a notice.
-#: actions/deletenotice.php:158 lib/noticelist.php:648
+#: actions/deletenotice.php:158 lib/noticelist.php:656
msgid "Delete this notice"
msgstr "Изтриване на бележката"
@@ -1330,7 +1343,8 @@ msgstr "Ðеправилен пÑевдоним: \"%s\""
msgid "Could not update group."
msgstr "Грешка при обновÑване на групата."
-#: actions/editgroup.php:264 classes/User_group.php:496
+#. TRANS: Server exception thrown when creating group aliases failed.
+#: actions/editgroup.php:264 classes/User_group.php:514
#, fuzzy
msgid "Could not create aliases."
msgstr "Грешка при отбелÑзване като любима."
@@ -1388,7 +1402,6 @@ msgstr ""
#. TRANS: Button label
#: actions/emailsettings.php:127 actions/imsettings.php:131
#: actions/smssettings.php:137 lib/applicationeditform.php:357
-#, fuzzy
msgctxt "BUTTON"
msgid "Cancel"
msgstr "Отказ"
@@ -1435,9 +1448,8 @@ msgstr "Ðово"
#. TRANS: Form legend for e-mail preferences form.
#: actions/emailsettings.php:174
-#, fuzzy
msgid "Email preferences"
-msgstr "ÐаÑтройки"
+msgstr "ÐаÑтройки на е-поща"
#. TRANS: Checkbox label in e-mail preferences form.
#: actions/emailsettings.php:180
@@ -1477,9 +1489,8 @@ msgstr "Публикуване на MicroID за адреÑа на е-пощат
#. TRANS: Confirmation message for successful e-mail preferences save.
#: actions/emailsettings.php:334
-#, fuzzy
msgid "Email preferences saved."
-msgstr "ÐаÑтройките Ñа запазени."
+msgstr "ÐаÑтройките на е-поща Ñа запазени."
#. TRANS: Message given saving e-mail address without having provided one.
#: actions/emailsettings.php:353
@@ -2496,7 +2507,7 @@ msgstr "Бележки, Ñъдържащи Ñ‚ÑŠÑ€Ñеното \"%1$s\" в %2$s!"
#: actions/nudge.php:85
msgid ""
-"This user doesn't allow nudges or hasn't confirmed or set his email yet."
+"This user doesn't allow nudges or hasn't confirmed or set their email yet."
msgstr ""
#: actions/nudge.php:94
@@ -2575,8 +2586,8 @@ msgid "Only %s URLs over plain HTTP please."
msgstr ""
#. TRANS: Client error on an API request with an unsupported data format.
-#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1179
-#: lib/apiaction.php:1208 lib/apiaction.php:1325
+#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1204
+#: lib/apiaction.php:1232 lib/apiaction.php:1355
msgid "Not a supported data format."
msgstr "Ðеподдържан формат на данните"
@@ -3471,7 +3482,7 @@ msgstr "Ðе можете да повтарÑте ÑобÑтвена бележÐ
msgid "You already repeated that notice."
msgstr "Вече Ñте повторили тази бележка."
-#: actions/repeat.php:114 lib/noticelist.php:667
+#: actions/repeat.php:114 lib/noticelist.php:675
msgid "Repeated"
msgstr "Повторено"
@@ -3509,7 +3520,7 @@ msgstr "ЕмиÑÐ¸Ñ Ñ Ð¾Ñ‚Ð³Ð¾Ð²Ð¾Ñ€Ð¸ на %s (Atom)"
#, php-format
msgid ""
"This is the timeline showing replies to %1$s but %2$s hasn't received a "
-"notice to his attention yet."
+"notice to them yet."
msgstr ""
#: actions/replies.php:204
@@ -3522,8 +3533,8 @@ msgstr ""
#: actions/replies.php:206
#, php-format
msgid ""
-"You can try to [nudge %1$s](../%2$s) or [post something to his or her "
-"attention](%%%%action.newnotice%%%%?status_textarea=%3$s)."
+"You can try to [nudge %1$s](../%2$s) or [post something to them](%%%%action."
+"newnotice%%%%?status_textarea=%3$s)."
msgstr ""
#: actions/repliesrss.php:72
@@ -3617,7 +3628,7 @@ msgstr "ОрганизациÑ"
msgid "Description"
msgstr "ОпиÑание"
-#: actions/showapplication.php:192 actions/showgroup.php:444
+#: actions/showapplication.php:192 actions/showgroup.php:436
#: lib/profileaction.php:187
msgid "Statistics"
msgstr "СтатиÑтики"
@@ -3704,16 +3715,16 @@ msgstr ""
#: actions/showfavorites.php:208
#, php-format
msgid ""
-"%s hasn't added any notices to his favorites yet. Post something interesting "
-"they would add to their favorites :)"
+"%s hasn't added any favorite notices yet. Post something interesting they "
+"would add to their favorites :)"
msgstr ""
#: actions/showfavorites.php:212
#, php-format
msgid ""
-"%s hasn't added any notices to his favorites yet. Why not [register an "
-"account](%%%%action.register%%%%) and then post something interesting they "
-"would add to their favorites :)"
+"%s hasn't added any favorite notices yet. Why not [register an account](%%%%"
+"action.register%%%%) and then post something interesting they would add to "
+"their favorites :)"
msgstr ""
#: actions/showfavorites.php:243
@@ -3772,7 +3783,7 @@ msgstr "ЕмиÑÐ¸Ñ Ñ Ð±ÐµÐ»ÐµÐ¶ÐºÐ¸ на %s"
msgid "FOAF for %s group"
msgstr "ИзходÑща ÐºÑƒÑ‚Ð¸Ñ Ð·Ð° %s"
-#: actions/showgroup.php:393 actions/showgroup.php:453 lib/groupnav.php:91
+#: actions/showgroup.php:393 actions/showgroup.php:445 lib/groupnav.php:91
msgid "Members"
msgstr "Членове"
@@ -3780,17 +3791,17 @@ msgstr "Членове"
#: lib/profileaction.php:152 lib/profileaction.php:255 lib/section.php:95
#: lib/subscriptionlist.php:127 lib/tagcloudsection.php:71
msgid "(None)"
-msgstr ""
+msgstr "(Без)"
#: actions/showgroup.php:404
msgid "All members"
msgstr "Ð’Ñички членове"
-#: actions/showgroup.php:447
+#: actions/showgroup.php:439
msgid "Created"
msgstr "Създадена на"
-#: actions/showgroup.php:463
+#: actions/showgroup.php:455
#, php-format
msgid ""
"**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3800,7 +3811,7 @@ msgid ""
"of this group and many more! ([Read more](%%%%doc.help%%%%))"
msgstr ""
-#: actions/showgroup.php:469
+#: actions/showgroup.php:461
#, php-format
msgid ""
"**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3809,7 +3820,7 @@ msgid ""
"their life and interests. "
msgstr ""
-#: actions/showgroup.php:497
+#: actions/showgroup.php:489
msgid "Admins"
msgstr "ÐдминиÑтратори"
@@ -3884,8 +3895,8 @@ msgstr ""
#: 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)."
+"You can try to nudge %1$s or [post something to them](%%%%action.newnotice%%%"
+"%?status_textarea=%2$s)."
msgstr ""
#: actions/showstream.php:243
@@ -4278,7 +4289,8 @@ msgstr "Запазване наÑтройките на Ñайта"
msgid "You are not subscribed to that profile."
msgstr "Ðе Ñте абонирани за този профил"
-#: actions/subedit.php:83 classes/Subscription.php:132
+#. TRANS: Exception thrown when a subscription could not be stored on the server.
+#: actions/subedit.php:83 classes/Subscription.php:136
#, fuzzy
msgid "Could not save subscription."
msgstr "Грешка при Ñъздаване на нов абонамент."
@@ -4447,10 +4459,6 @@ msgstr ""
msgid "No such tag."
msgstr "ÐÑма такъв етикет."
-#: actions/twitapitrends.php:85
-msgid "API method under construction."
-msgstr "Методът в API вÑе още Ñе разработва."
-
#: actions/unblock.php:59
msgid "You haven't blocked that user."
msgstr "Ðе Ñте блокирали този потребител."
@@ -4754,84 +4762,132 @@ msgstr "ВерÑиÑ"
msgid "Author(s)"
msgstr "Ðвтор(и)"
-#: classes/File.php:185
+#. TRANS: Server exception thrown when a URL cannot be processed.
+#: classes/File.php:143
+#, php-format
+msgid "Cannot process URL '%s'"
+msgstr ""
+
+#. TRANS: Server exception thrown when... Robin thinks something is impossible!
+#: classes/File.php:175
+msgid "Robin thinks something is impossible."
+msgstr ""
+
+#. TRANS: Message given if an upload is larger than the configured maximum.
+#. TRANS: %1$d is the byte limit for uploads, %2$d is the byte count for the uploaded file.
+#: classes/File.php:190
#, php-format
msgid ""
-"No file may be larger than %d bytes and the file you sent was %d bytes. Try "
-"to upload a smaller version."
+"No file may be larger than %1$d bytes and the file you sent was %2$d bytes. "
+"Try to upload a smaller version."
msgstr ""
-#: classes/File.php:195
+#. TRANS: Message given if an upload would exceed user quota.
+#. TRANS: %d (number) is the user quota in bytes.
+#: classes/File.php:202
#, php-format
msgid "A file this large would exceed your user quota of %d bytes."
msgstr ""
-#: classes/File.php:202
+#. TRANS: Message given id an upload would exceed a user's monthly quota.
+#. TRANS: $d (number) is the monthly user quota in bytes.
+#: classes/File.php:211
#, php-format
msgid "A file this large would exceed your monthly quota of %d bytes."
msgstr ""
-#: classes/Group_member.php:41
+#. TRANS: Client exception thrown if a file upload does not have a valid name.
+#: classes/File.php:248 classes/File.php:263
+#, fuzzy
+msgid "Invalid filename."
+msgstr "Ðеправилен размер."
+
+#. TRANS: Exception thrown when joining a group fails.
+#: classes/Group_member.php:42
#, fuzzy
msgid "Group join failed."
msgstr "Профил на групата"
-#: classes/Group_member.php:53
+#. TRANS: Exception thrown when trying to leave a group the user is not a member of.
+#: classes/Group_member.php:55
#, fuzzy
msgid "Not part of group."
msgstr "Грешка при обновÑване на групата."
-#: classes/Group_member.php:60
+#. TRANS: Exception thrown when trying to leave a group fails.
+#: classes/Group_member.php:63
#, fuzzy
msgid "Group leave failed."
msgstr "Профил на групата"
-#: classes/Local_group.php:41
+#. TRANS: Server exception thrown when updating a local group fails.
+#: classes/Local_group.php:42
#, fuzzy
msgid "Could not update local group."
msgstr "Грешка при обновÑване на групата."
-#: classes/Login_token.php:76
+#. TRANS: Exception thrown when trying creating a login token failed.
+#. TRANS: %s is the user nickname for which token creation failed.
+#: classes/Login_token.php:78
#, fuzzy, php-format
msgid "Could not create login token for %s"
msgstr "Грешка при отбелÑзване като любима."
-#: classes/Message.php:45
+#. TRANS: Exception thrown when database name or Data Source Name could not be found.
+#: classes/Memcached_DataObject.php:533
+msgid "No database name or DSN found anywhere."
+msgstr ""
+
+#. TRANS: Client exception thrown when a user tries to send a direct message while being banned from sending them.
+#: classes/Message.php:46
#, fuzzy
msgid "You are banned from sending direct messages."
msgstr "Грешка при изпращане на прÑкото Ñъобщение"
-#: classes/Message.php:61
+#. TRANS: Message given when a message could not be stored on the server.
+#: classes/Message.php:63
msgid "Could not insert message."
msgstr "Грешка при вмъкване на Ñъобщението."
-#: classes/Message.php:71
+#. TRANS: Message given when a message could not be updated on the server.
+#: classes/Message.php:74
msgid "Could not update message with new URI."
msgstr "Грешка при обновÑване на бележката Ñ Ð½Ð¾Ð² URL-адреÑ."
+#. TRANS: Server exception thrown when a user profile for a notice cannot be found.
+#. TRANS: %1$d is a profile ID (number), %2$d is a notice ID (number).
+#: classes/Notice.php:98
+#, php-format
+msgid "No such profile (%1$d) for notice (%2$d)."
+msgstr ""
+
#. TRANS: Server exception. %s are the error details.
-#: classes/Notice.php:182
+#: classes/Notice.php:190
#, fuzzy, php-format
msgid "Database error inserting hashtag: %s"
msgstr "Грешка в базата от данни — отговор при вмъкването: %s"
-#: classes/Notice.php:251
+#. TRANS: Client exception thrown if a notice contains too many characters.
+#: classes/Notice.php:260
#, fuzzy
msgid "Problem saving notice. Too long."
msgstr "Проблем при запиÑване на бележката."
-#: classes/Notice.php:255
+#. TRANS: Client exception thrown when trying to save a notice for an unknown user.
+#: classes/Notice.php:265
msgid "Problem saving notice. Unknown user."
msgstr "Грешка при запиÑване на бележката. Ðепознат потребител."
-#: classes/Notice.php:260
+#. TRANS: Client exception thrown when a user tries to post too many notices in a given time frame.
+#: classes/Notice.php:271
msgid ""
"Too many notices too fast; take a breather and post again in a few minutes."
msgstr ""
"Твърде много бележки за кратко време. Спрете, поемете дъх и публикувайте "
"отново Ñлед нÑколко минути."
-#: classes/Notice.php:266
+#. TRANS: Client exception thrown when a user tries to post too many duplicate notices in a given time frame.
+#: classes/Notice.php:278
#, fuzzy
msgid ""
"Too many duplicate messages too quickly; take a breather and post again in a "
@@ -4840,78 +4896,127 @@ msgstr ""
"Твърде много бележки за кратко време. Спрете, поемете дъх и публикувайте "
"отново Ñлед нÑколко минути."
-#: classes/Notice.php:272
+#. TRANS: Client exception thrown when a user tries to post while being banned.
+#: classes/Notice.php:286
msgid "You are banned from posting notices on this site."
msgstr "Забранено ви е да публикувате бележки в този Ñайт."
-#: classes/Notice.php:338 classes/Notice.php:364
+#. TRANS: Server exception thrown when a notice cannot be saved.
+#. TRANS: Server exception thrown when a notice cannot be updated.
+#: classes/Notice.php:353 classes/Notice.php:380
msgid "Problem saving notice."
msgstr "Проблем при запиÑване на бележката."
-#: classes/Notice.php:973
+#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups().
+#: classes/Notice.php:892
+msgid "Bad type provided to saveKnownGroups"
+msgstr ""
+
+#. TRANS: Server exception thrown when an update for a group inbox fails.
+#: classes/Notice.php:991
#, fuzzy
msgid "Problem saving group inbox."
msgstr "Проблем при запиÑване на бележката."
#. TRANS: Message used to repeat a notice. RT is the abbreviation of 'retweet'.
#. TRANS: %1$s is the repeated user's name, %2$s is the repeated notice.
-#: classes/Notice.php:1564
+#: classes/Notice.php:1614
#, php-format
msgid "RT @%1$s %2$s"
msgstr "RT @%1$s %2$s"
-#: classes/Subscription.php:74 lib/oauthstore.php:465
+#. TRANS: Exception thrown when trying to revoke an existing role for a user that does not exist.
+#. TRANS: %1$s is the role name, %2$s is the user ID (number).
+#: classes/Profile.php:740
+#, php-format
+msgid "Cannot revoke role \"%1$s\" for user #%2$d; does not exist."
+msgstr ""
+
+#. TRANS: Exception thrown when trying to revoke a role for a user with a failing database query.
+#. TRANS: %1$s is the role name, %2$s is the user ID (number).
+#: classes/Profile.php:749
+#, php-format
+msgid "Cannot revoke role \"%1$s\" for user #%2$d; database error."
+msgstr ""
+
+#. TRANS: Exception thrown when a right for a non-existing user profile is checked.
+#: classes/Remote_profile.php:54
+#, fuzzy
+msgid "Missing profile."
+msgstr "ПотребителÑÑ‚ нÑма профил."
+
+#. TRANS: Exception thrown when a tag cannot be saved.
+#: classes/Status_network.php:346
+#, fuzzy
+msgid "Unable to save tag."
+msgstr "Грешка при запиÑване наÑтройките за Twitter"
+
+#. TRANS: Exception thrown when trying to subscribe while being banned from subscribing.
+#: classes/Subscription.php:75 lib/oauthstore.php:465
#, fuzzy
msgid "You have been banned from subscribing."
msgstr "ПотребителÑÑ‚ е забранил да Ñе абонирате за него."
-#: classes/Subscription.php:78
+#. TRANS: Exception thrown when trying to subscribe while already subscribed.
+#: classes/Subscription.php:80
msgid "Already subscribed!"
msgstr ""
-#: classes/Subscription.php:82
+#. TRANS: Exception thrown when trying to subscribe to a user who has blocked the subscribing user.
+#: classes/Subscription.php:85
msgid "User has blocked you."
msgstr "ПотребителÑÑ‚ ви е блокирал."
-#: classes/Subscription.php:167
+#. TRANS: Exception thrown when trying to unsibscribe without a subscription.
+#: classes/Subscription.php:171
#, fuzzy
msgid "Not subscribed!"
msgstr "Ðе Ñте абонирани!"
-#: classes/Subscription.php:173
+#. TRANS: Exception thrown when trying to unsubscribe a user from themselves.
+#: classes/Subscription.php:178
#, fuzzy
-msgid "Couldn't delete self-subscription."
+msgid "Could not delete self-subscription."
msgstr "Грешка при изтриване на абонамента."
-#: classes/Subscription.php:200
+#. TRANS: Exception thrown when the OMB token for a subscription could not deleted on the server.
+#: classes/Subscription.php:206
#, fuzzy
-msgid "Couldn't delete subscription OMB token."
+msgid "Could not delete subscription OMB token."
msgstr "Грешка при изтриване на абонамента."
-#: classes/Subscription.php:211
-msgid "Couldn't delete subscription."
+#. TRANS: Exception thrown when a subscription could not be deleted on the server.
+#: classes/Subscription.php:218
+#, fuzzy
+msgid "Could not delete subscription."
msgstr "Грешка при изтриване на абонамента."
-#: classes/User.php:363
+#. TRANS: Notice given on user registration.
+#. TRANS: %1$s is the sitename, $2$s is the registering user's nickname.
+#: classes/User.php:365
#, php-format
msgid "Welcome to %1$s, @%2$s!"
msgstr "Добре дошли в %1$s, @%2$s!"
-#: classes/User_group.php:480
+#. TRANS: Server exception thrown when creating a group failed.
+#: classes/User_group.php:496
msgid "Could not create group."
msgstr "Грешка при Ñъздаване на групата."
-#: classes/User_group.php:489
+#. TRANS: Server exception thrown when updating a group URI failed.
+#: classes/User_group.php:506
#, fuzzy
msgid "Could not set group URI."
msgstr "Грешка при Ñъздаване на нов абонамент."
-#: classes/User_group.php:510
+#. TRANS: Server exception thrown when setting group membership failed.
+#: classes/User_group.php:529
#, fuzzy
msgid "Could not set group membership."
msgstr "Грешка при Ñъздаване на нов абонамент."
-#: classes/User_group.php:524
+#. TRANS: Server exception thrown when saving local group information failed.
+#: classes/User_group.php:544
#, fuzzy
msgid "Could not save local group info."
msgstr "Грешка при Ñъздаване на нов абонамент."
@@ -5067,7 +5172,6 @@ msgid "Help me!"
msgstr "Помощ"
#: lib/action.php:497
-#, fuzzy
msgctxt "MENU"
msgid "Help"
msgstr "Помощ"
@@ -6272,7 +6376,7 @@ msgid ""
"users in conversation. People can send you messages for your eyes only."
msgstr ""
-#: lib/mailbox.php:227 lib/noticelist.php:497
+#: lib/mailbox.php:227 lib/noticelist.php:505
msgid "from"
msgstr "от"
@@ -6327,25 +6431,25 @@ msgstr "Грешка при запиÑване файла на диÑка."
msgid "File upload stopped by extension."
msgstr ""
-#: lib/mediafile.php:179 lib/mediafile.php:216
+#: lib/mediafile.php:179 lib/mediafile.php:217
msgid "File exceeds user's quota."
msgstr ""
-#: lib/mediafile.php:196 lib/mediafile.php:233
+#: lib/mediafile.php:197 lib/mediafile.php:234
msgid "File could not be moved to destination directory."
msgstr ""
-#: lib/mediafile.php:201 lib/mediafile.php:237
+#: lib/mediafile.php:202 lib/mediafile.php:238
#, fuzzy
msgid "Could not determine file's MIME type."
msgstr "Грешка при изтеглÑне на Ð¾Ð±Ñ‰Ð¸Ñ Ð¿Ð¾Ñ‚Ð¾Ðº"
-#: lib/mediafile.php:270
+#: lib/mediafile.php:318
#, php-format
msgid " Try using another %s format."
msgstr ""
-#: lib/mediafile.php:275
+#: lib/mediafile.php:323
#, php-format
msgid "%s is not a supported file type on this server."
msgstr ""
@@ -6400,51 +6504,51 @@ msgid ""
msgstr ""
#. TRANS: Used in coordinates as abbreviation of north
-#: lib/noticelist.php:430
+#: lib/noticelist.php:436
msgid "N"
msgstr "С"
#. TRANS: Used in coordinates as abbreviation of south
-#: lib/noticelist.php:432
+#: lib/noticelist.php:438
msgid "S"
msgstr "Ю"
#. TRANS: Used in coordinates as abbreviation of east
-#: lib/noticelist.php:434
+#: lib/noticelist.php:440
msgid "E"
msgstr "И"
#. TRANS: Used in coordinates as abbreviation of west
-#: lib/noticelist.php:436
+#: lib/noticelist.php:442
msgid "W"
msgstr "З"
-#: lib/noticelist.php:438
+#: lib/noticelist.php:444
#, php-format
msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
msgstr ""
-#: lib/noticelist.php:447
+#: lib/noticelist.php:453
msgid "at"
msgstr ""
-#: lib/noticelist.php:559
+#: lib/noticelist.php:567
msgid "in context"
msgstr "в контекÑÑ‚"
-#: lib/noticelist.php:594
+#: lib/noticelist.php:602
msgid "Repeated by"
msgstr "Повторено от"
-#: lib/noticelist.php:621
+#: lib/noticelist.php:629
msgid "Reply to this notice"
msgstr "ОтговарÑне на тази бележка"
-#: lib/noticelist.php:622
+#: lib/noticelist.php:630
msgid "Reply"
msgstr "Отговор"
-#: lib/noticelist.php:666
+#: lib/noticelist.php:674
msgid "Notice repeated"
msgstr "Бележката е повторена."
@@ -6519,9 +6623,8 @@ msgid "Tags in %s's notices"
msgstr "Етикети в бележките на %s"
#: lib/plugin.php:115
-#, fuzzy
msgid "Unknown"
-msgstr "Ðепознато дейÑтвие"
+msgstr "Ðепознато"
#: lib/profileaction.php:109 lib/profileaction.php:205 lib/subgroupnav.php:82
msgid "Subscriptions"
@@ -6617,9 +6720,8 @@ msgid "Sandbox this user"
msgstr "Разблокиране на този потребител"
#: lib/searchaction.php:120
-#, fuzzy
msgid "Search site"
-msgstr "ТърÑене"
+msgstr "ТърÑене в Ñайта"
#: lib/searchaction.php:126
msgid "Keyword(s)"
@@ -6708,9 +6810,8 @@ msgid "This server cannot handle theme uploads without ZIP support."
msgstr ""
#: lib/themeuploader.php:58 lib/themeuploader.php:61
-#, fuzzy
-msgid "Theme upload missing or failed."
-msgstr "СиÑтемна грешка при качване на файл."
+msgid "The theme file is missing or the upload failed."
+msgstr ""
#: lib/themeuploader.php:91 lib/themeuploader.php:102
#: lib/themeuploader.php:253 lib/themeuploader.php:257
diff --git a/locale/br/LC_MESSAGES/statusnet.po b/locale/br/LC_MESSAGES/statusnet.po
index 098967713..676ef5a27 100644
--- a/locale/br/LC_MESSAGES/statusnet.po
+++ b/locale/br/LC_MESSAGES/statusnet.po
@@ -9,12 +9,12 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-06-16 22:18+0000\n"
-"PO-Revision-Date: 2010-06-21 18:02:56+0000\n"
+"POT-Creation-Date: 2010-08-03 13:21+0000\n"
+"PO-Revision-Date: 2010-08-03 13:21:44+0000\n"
"Language-Team: Dutch\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.17alpha (r68367); Translate extension (2010-06-12)\n"
+"X-Generator: MediaWiki 1.17alpha (r70381); Translate extension (2010-07-21)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: br\n"
"X-Message-Group: out-statusnet\n"
@@ -98,7 +98,7 @@ msgstr "N'eus ket eus ar bajenn-se."
#: actions/apidirectmessagenew.php:74 actions/apigroupcreate.php:113
#: actions/apigroupismember.php:91 actions/apigroupjoin.php:100
#: actions/apigroupleave.php:100 actions/apigrouplist.php:73
-#: actions/apistatusesupdate.php:228 actions/apisubscriptions.php:87
+#: actions/apistatusesupdate.php:229 actions/apisubscriptions.php:87
#: actions/apitimelinefavorites.php:72 actions/apitimelinefriends.php:174
#: actions/apitimelinehome.php:80 actions/apitimelinementions.php:80
#: actions/apitimelineuser.php:82 actions/avatarbynickname.php:75
@@ -165,16 +165,18 @@ msgstr ""
#: actions/all.php:146
#, 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)."
+"You can try to [nudge %1$s](../%2$s) from their profile or [post something "
+"to them](%%%%action.newnotice%%%%?status_textarea=%3$s)."
msgstr ""
#: actions/all.php:149 actions/replies.php:210 actions/showstream.php:211
-#, php-format
+#, fuzzy, php-format
msgid ""
"Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
-"post a notice to his or her attention."
+"post a notice to them."
msgstr ""
+"Perak ne [groufec'h ket ur gont](%%action.register%%) ha bezañ an hini "
+"gentañ da embann un dra !"
#. TRANS: H1 text
#: actions/all.php:182
@@ -206,7 +208,7 @@ msgstr "Hizivadennoù %1$s ha mignoned e %2$s!"
#: actions/apistatusesshow.php:109 actions/apistatusnetconfig.php:141
#: actions/apistatusnetversion.php:93 actions/apisubscriptions.php:111
#: actions/apitimelinefavorites.php:174 actions/apitimelinefriends.php:271
-#: actions/apitimelinegroup.php:152 actions/apitimelinehome.php:175
+#: actions/apitimelinegroup.php:154 actions/apitimelinehome.php:175
#: actions/apitimelinementions.php:174 actions/apitimelinepublic.php:241
#: actions/apitimelineretweetedtome.php:121
#: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161
@@ -254,7 +256,7 @@ msgstr "Diposubl eo enrollañ ar profil."
#: actions/apiaccountupdateprofilebackgroundimage.php:108
#: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80
-#: actions/apistatusesupdate.php:211 actions/avatarsettings.php:257
+#: actions/apistatusesupdate.php:212 actions/avatarsettings.php:257
#: actions/designadminpanel.php:123 actions/editapplication.php:118
#: actions/newapplication.php:101 actions/newnotice.php:94
#: lib/designsettings.php:283
@@ -352,7 +354,8 @@ msgid "Could not delete favorite."
msgstr "Diposupl eo dilemel ar pennroll-mañ."
#: actions/apifriendshipscreate.php:109
-msgid "Could not follow user: User not found."
+#, fuzzy
+msgid "Could not follow user: profile not found."
msgstr "Diposupl eo heuliañ an implijer : N'eo ket bet kavet an implijer."
#: actions/apifriendshipscreate.php:118
@@ -369,8 +372,9 @@ msgstr ""
msgid "You cannot unfollow yourself."
msgstr "Ne c'hallit ket chom hep ho heuliañ hoc'h-unan."
-#: actions/apifriendshipsexists.php:94
-msgid "Two user ids or screen_names must be supplied."
+#: actions/apifriendshipsexists.php:91
+#, fuzzy
+msgid "Two valid IDs or screen_names must be supplied."
msgstr "Rankout a reoc'h reiñ daou id pe lesanv."
#: actions/apifriendshipsshow.php:134
@@ -498,6 +502,11 @@ msgstr "Strolladoù %s"
msgid "groups on %s"
msgstr "strolladoù war %s"
+#: actions/apimediaupload.php:99
+#, fuzzy
+msgid "Upload failed."
+msgstr "C'hwitet en deus an urzhiad"
+
#: actions/apioauthauthorize.php:101
msgid "No oauth_token parameter provided."
msgstr "Arventenn oauth_token nann-roet."
@@ -636,22 +645,26 @@ msgstr "Statud diverket."
msgid "No status with that ID found."
msgstr "N'eo ket bet kavet a statud evit an ID-mañ"
-#: actions/apistatusesupdate.php:241 actions/newnotice.php:155
+#: actions/apistatusesupdate.php:221
+msgid "Client must provide a 'status' parameter with a value."
+msgstr ""
+
+#: actions/apistatusesupdate.php:242 actions/newnotice.php:155
#: lib/mailhandler.php:60
#, php-format
msgid "That's too long. Max notice size is %d chars."
msgstr "Re hir eo ! Ment hirañ an ali a zo a %d arouezenn."
-#: actions/apistatusesupdate.php:282 actions/apiusershow.php:96
+#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96
msgid "Not found."
msgstr "N'eo ket bet kavet."
-#: actions/apistatusesupdate.php:305 actions/newnotice.php:178
+#: actions/apistatusesupdate.php:306 actions/newnotice.php:178
#, php-format
msgid "Max notice size is %d chars, including attachment URL."
msgstr ""
-#: actions/apisubscriptions.php:231 actions/apisubscriptions.php:261
+#: actions/apisubscriptions.php:232 actions/apisubscriptions.php:262
msgid "Unsupported format."
msgstr "Diembreget eo ar furmad-se."
@@ -705,6 +718,10 @@ msgstr "Alioù merket gant %s"
msgid "Updates tagged with %1$s on %2$s!"
msgstr "Hizivadennoù merket gant %1$s e %2$s !"
+#: actions/apitrends.php:87
+msgid "API method under construction."
+msgstr ""
+
#: actions/attachment.php:73
msgid "No such attachment."
msgstr "N'eo ket bet kavet ar restr stag."
@@ -757,7 +774,7 @@ msgid "Preview"
msgstr "Rakwelet"
#: actions/avatarsettings.php:149 actions/showapplication.php:252
-#: lib/deleteuserform.php:66 lib/noticelist.php:648
+#: lib/deleteuserform.php:66 lib/noticelist.php:656
msgid "Delete"
msgstr "Diverkañ"
@@ -1031,7 +1048,7 @@ msgid "Do not delete this notice"
msgstr "Arabat dilemel an ali-mañ"
#. TRANS: Submit button title for 'Yes' when deleting a notice.
-#: actions/deletenotice.php:158 lib/noticelist.php:648
+#: actions/deletenotice.php:158 lib/noticelist.php:656
msgid "Delete this notice"
msgstr "Dilemel an ali-mañ"
@@ -1099,9 +1116,8 @@ msgid "Theme for the site."
msgstr "Dodenn evit al lec'hienn."
#: actions/designadminpanel.php:467
-#, fuzzy
msgid "Custom theme"
-msgstr "Dodenn al lec'hienn"
+msgstr "Dodenn personelaet"
#: actions/designadminpanel.php:471
msgid "You can upload a custom StatusNet theme as a .ZIP archive."
@@ -1163,11 +1179,11 @@ msgstr "Liammoù"
#: actions/designadminpanel.php:651
msgid "Advanced"
-msgstr ""
+msgstr "Araokaet"
#: actions/designadminpanel.php:655
msgid "Custom CSS"
-msgstr ""
+msgstr "CSS personelaet"
#: actions/designadminpanel.php:676 lib/designsettings.php:247
msgid "Use defaults"
@@ -1306,7 +1322,8 @@ msgstr "Alias fall : \"%s\""
msgid "Could not update group."
msgstr "Diposubl eo hizivaat ar strollad."
-#: actions/editgroup.php:264 classes/User_group.php:496
+#. TRANS: Server exception thrown when creating group aliases failed.
+#: actions/editgroup.php:264 classes/User_group.php:514
msgid "Could not create aliases."
msgstr "Diposubl eo krouiñ an aliasoù."
@@ -2391,7 +2408,7 @@ msgstr ""
#: actions/nudge.php:85
msgid ""
-"This user doesn't allow nudges or hasn't confirmed or set his email yet."
+"This user doesn't allow nudges or hasn't confirmed or set their email yet."
msgstr ""
#: actions/nudge.php:94
@@ -2466,8 +2483,8 @@ msgid "Only %s URLs over plain HTTP please."
msgstr ""
#. TRANS: Client error on an API request with an unsupported data format.
-#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1179
-#: lib/apiaction.php:1208 lib/apiaction.php:1325
+#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1204
+#: lib/apiaction.php:1232 lib/apiaction.php:1355
msgid "Not a supported data format."
msgstr ""
@@ -3346,7 +3363,7 @@ msgstr "Ne c'helloc'h ket adkemer ho ali deoc'h."
msgid "You already repeated that notice."
msgstr "Adkemeret o peus dija an ali-mañ."
-#: actions/repeat.php:114 lib/noticelist.php:667
+#: actions/repeat.php:114 lib/noticelist.php:675
msgid "Repeated"
msgstr "Adlavaret"
@@ -3384,7 +3401,7 @@ msgstr "Gwazh respontoù evit %s (Atom)"
#, php-format
msgid ""
"This is the timeline showing replies to %1$s but %2$s hasn't received a "
-"notice to his attention yet."
+"notice to them yet."
msgstr ""
#: actions/replies.php:204
@@ -3397,8 +3414,8 @@ msgstr ""
#: actions/replies.php:206
#, php-format
msgid ""
-"You can try to [nudge %1$s](../%2$s) or [post something to his or her "
-"attention](%%%%action.newnotice%%%%?status_textarea=%3$s)."
+"You can try to [nudge %1$s](../%2$s) or [post something to them](%%%%action."
+"newnotice%%%%?status_textarea=%3$s)."
msgstr ""
#: actions/repliesrss.php:72
@@ -3488,7 +3505,7 @@ msgstr "Aozadur"
msgid "Description"
msgstr "Deskrivadur"
-#: actions/showapplication.php:192 actions/showgroup.php:444
+#: actions/showapplication.php:192 actions/showgroup.php:436
#: lib/profileaction.php:187
msgid "Statistics"
msgstr "Stadegoù"
@@ -3574,16 +3591,16 @@ msgstr ""
#: actions/showfavorites.php:208
#, php-format
msgid ""
-"%s hasn't added any notices to his favorites yet. Post something interesting "
-"they would add to their favorites :)"
+"%s hasn't added any favorite notices yet. Post something interesting they "
+"would add to their favorites :)"
msgstr ""
#: actions/showfavorites.php:212
#, php-format
msgid ""
-"%s hasn't added any notices to his favorites yet. Why not [register an "
-"account](%%%%action.register%%%%) and then post something interesting they "
-"would add to their favorites :)"
+"%s hasn't added any favorite notices yet. Why not [register an account](%%%%"
+"action.register%%%%) and then post something interesting they would add to "
+"their favorites :)"
msgstr ""
#: actions/showfavorites.php:243
@@ -3642,7 +3659,7 @@ msgstr "Neudenn alioù ar strollad %s (Atom)"
msgid "FOAF for %s group"
msgstr "Mignon ur mignon evit ar strollad %s"
-#: actions/showgroup.php:393 actions/showgroup.php:453 lib/groupnav.php:91
+#: actions/showgroup.php:393 actions/showgroup.php:445 lib/groupnav.php:91
msgid "Members"
msgstr "Izili"
@@ -3656,11 +3673,11 @@ msgstr "(Hini ebet)"
msgid "All members"
msgstr "An holl izili"
-#: actions/showgroup.php:447
+#: actions/showgroup.php:439
msgid "Created"
msgstr "Krouet"
-#: actions/showgroup.php:463
+#: actions/showgroup.php:455
#, php-format
msgid ""
"**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3670,7 +3687,7 @@ msgid ""
"of this group and many more! ([Read more](%%%%doc.help%%%%))"
msgstr ""
-#: actions/showgroup.php:469
+#: actions/showgroup.php:461
#, php-format
msgid ""
"**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3679,7 +3696,7 @@ msgid ""
"their life and interests. "
msgstr ""
-#: actions/showgroup.php:497
+#: actions/showgroup.php:489
msgid "Admins"
msgstr "Merourien"
@@ -3756,8 +3773,8 @@ msgstr ""
#: 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)."
+"You can try to nudge %1$s or [post something to them](%%%%action.newnotice%%%"
+"%?status_textarea=%2$s)."
msgstr ""
#: actions/showstream.php:243
@@ -4129,7 +4146,8 @@ msgstr "Enrollañ an arventennoù moned"
msgid "You are not subscribed to that profile."
msgstr ""
-#: actions/subedit.php:83 classes/Subscription.php:132
+#. TRANS: Exception thrown when a subscription could not be stored on the server.
+#: actions/subedit.php:83 classes/Subscription.php:136
msgid "Could not save subscription."
msgstr ""
@@ -4296,10 +4314,6 @@ msgstr ""
msgid "No such tag."
msgstr ""
-#: actions/twitapitrends.php:85
-msgid "API method under construction."
-msgstr ""
-
#: actions/unblock.php:59
msgid "You haven't blocked that user."
msgstr "N'o peus ket stanket an implijer-mañ."
@@ -4585,147 +4599,245 @@ msgstr "Stumm"
msgid "Author(s)"
msgstr "Aozer(ien)"
-#: classes/File.php:185
+#. TRANS: Server exception thrown when a URL cannot be processed.
+#: classes/File.php:143
+#, php-format
+msgid "Cannot process URL '%s'"
+msgstr ""
+
+#. TRANS: Server exception thrown when... Robin thinks something is impossible!
+#: classes/File.php:175
+msgid "Robin thinks something is impossible."
+msgstr ""
+
+#. TRANS: Message given if an upload is larger than the configured maximum.
+#. TRANS: %1$d is the byte limit for uploads, %2$d is the byte count for the uploaded file.
+#: classes/File.php:190
#, php-format
msgid ""
-"No file may be larger than %d bytes and the file you sent was %d bytes. Try "
-"to upload a smaller version."
+"No file may be larger than %1$d bytes and the file you sent was %2$d bytes. "
+"Try to upload a smaller version."
msgstr ""
-#: classes/File.php:195
+#. TRANS: Message given if an upload would exceed user quota.
+#. TRANS: %d (number) is the user quota in bytes.
+#: classes/File.php:202
#, php-format
msgid "A file this large would exceed your user quota of %d bytes."
msgstr ""
-#: classes/File.php:202
+#. TRANS: Message given id an upload would exceed a user's monthly quota.
+#. TRANS: $d (number) is the monthly user quota in bytes.
+#: classes/File.php:211
#, php-format
msgid "A file this large would exceed your monthly quota of %d bytes."
msgstr ""
-#: classes/Group_member.php:41
+#. TRANS: Client exception thrown if a file upload does not have a valid name.
+#: classes/File.php:248 classes/File.php:263
+#, fuzzy
+msgid "Invalid filename."
+msgstr "Ment direizh."
+
+#. TRANS: Exception thrown when joining a group fails.
+#: classes/Group_member.php:42
msgid "Group join failed."
msgstr "C'hwitet eo bet an enskrivadur d'ar strollad."
-#: classes/Group_member.php:53
+#. TRANS: Exception thrown when trying to leave a group the user is not a member of.
+#: classes/Group_member.php:55
msgid "Not part of group."
msgstr "N'eo ezel eus strollad ebet."
-#: classes/Group_member.php:60
+#. TRANS: Exception thrown when trying to leave a group fails.
+#: classes/Group_member.php:63
msgid "Group leave failed."
msgstr "C'hwitet eo bet an disenskrivadur d'ar strollad."
-#: classes/Local_group.php:41
+#. TRANS: Server exception thrown when updating a local group fails.
+#: classes/Local_group.php:42
msgid "Could not update local group."
msgstr ""
-#: classes/Login_token.php:76
+#. TRANS: Exception thrown when trying creating a login token failed.
+#. TRANS: %s is the user nickname for which token creation failed.
+#: classes/Login_token.php:78
#, php-format
msgid "Could not create login token for %s"
msgstr ""
-#: classes/Message.php:45
+#. TRANS: Exception thrown when database name or Data Source Name could not be found.
+#: classes/Memcached_DataObject.php:533
+msgid "No database name or DSN found anywhere."
+msgstr ""
+
+#. TRANS: Client exception thrown when a user tries to send a direct message while being banned from sending them.
+#: classes/Message.php:46
msgid "You are banned from sending direct messages."
msgstr ""
-#: classes/Message.php:61
+#. TRANS: Message given when a message could not be stored on the server.
+#: classes/Message.php:63
msgid "Could not insert message."
msgstr "Diposubl eo ensoc'hañ ur gemenadenn"
-#: classes/Message.php:71
+#. TRANS: Message given when a message could not be updated on the server.
+#: classes/Message.php:74
msgid "Could not update message with new URI."
msgstr "Dibosupl eo hizivaat ar gemennadenn gant un URI nevez."
+#. TRANS: Server exception thrown when a user profile for a notice cannot be found.
+#. TRANS: %1$d is a profile ID (number), %2$d is a notice ID (number).
+#: classes/Notice.php:98
+#, php-format
+msgid "No such profile (%1$d) for notice (%2$d)."
+msgstr ""
+
#. TRANS: Server exception. %s are the error details.
-#: classes/Notice.php:182
+#: classes/Notice.php:190
#, php-format
msgid "Database error inserting hashtag: %s"
msgstr ""
-#: classes/Notice.php:251
+#. TRANS: Client exception thrown if a notice contains too many characters.
+#: classes/Notice.php:260
msgid "Problem saving notice. Too long."
msgstr ""
-#: classes/Notice.php:255
+#. TRANS: Client exception thrown when trying to save a notice for an unknown user.
+#: classes/Notice.php:265
msgid "Problem saving notice. Unknown user."
msgstr ""
-#: classes/Notice.php:260
+#. TRANS: Client exception thrown when a user tries to post too many notices in a given time frame.
+#: classes/Notice.php:271
msgid ""
"Too many notices too fast; take a breather and post again in a few minutes."
msgstr ""
-#: classes/Notice.php:266
+#. TRANS: Client exception thrown when a user tries to post too many duplicate notices in a given time frame.
+#: classes/Notice.php:278
msgid ""
"Too many duplicate messages too quickly; take a breather and post again in a "
"few minutes."
msgstr ""
-#: classes/Notice.php:272
+#. TRANS: Client exception thrown when a user tries to post while being banned.
+#: classes/Notice.php:286
msgid "You are banned from posting notices on this site."
msgstr ""
-#: classes/Notice.php:338 classes/Notice.php:364
+#. TRANS: Server exception thrown when a notice cannot be saved.
+#. TRANS: Server exception thrown when a notice cannot be updated.
+#: classes/Notice.php:353 classes/Notice.php:380
msgid "Problem saving notice."
msgstr "Ur gudenn 'zo bet pa veze enrollet an ali."
-#: classes/Notice.php:973
+#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups().
+#: classes/Notice.php:892
+msgid "Bad type provided to saveKnownGroups"
+msgstr ""
+
+#. TRANS: Server exception thrown when an update for a group inbox fails.
+#: classes/Notice.php:991
msgid "Problem saving group inbox."
msgstr "Ur gudenn 'zo bet pa veze enrollet boest degemer ar strollad."
#. TRANS: Message used to repeat a notice. RT is the abbreviation of 'retweet'.
#. TRANS: %1$s is the repeated user's name, %2$s is the repeated notice.
-#: classes/Notice.php:1564
+#: classes/Notice.php:1614
#, php-format
msgid "RT @%1$s %2$s"
msgstr "RT @%1$s %2$s"
-#: classes/Subscription.php:74 lib/oauthstore.php:465
+#. TRANS: Exception thrown when trying to revoke an existing role for a user that does not exist.
+#. TRANS: %1$s is the role name, %2$s is the user ID (number).
+#: classes/Profile.php:740
+#, php-format
+msgid "Cannot revoke role \"%1$s\" for user #%2$d; does not exist."
+msgstr ""
+
+#. TRANS: Exception thrown when trying to revoke a role for a user with a failing database query.
+#. TRANS: %1$s is the role name, %2$s is the user ID (number).
+#: classes/Profile.php:749
+#, php-format
+msgid "Cannot revoke role \"%1$s\" for user #%2$d; database error."
+msgstr ""
+
+#. TRANS: Exception thrown when a right for a non-existing user profile is checked.
+#: classes/Remote_profile.php:54
+#, fuzzy
+msgid "Missing profile."
+msgstr "An implijer-mañ n'eus profil ebet dezhañ."
+
+#. TRANS: Exception thrown when a tag cannot be saved.
+#: classes/Status_network.php:346
+#, fuzzy
+msgid "Unable to save tag."
+msgstr "Diposubl eo enrollañ ali al lec'hienn."
+
+#. TRANS: Exception thrown when trying to subscribe while being banned from subscribing.
+#: classes/Subscription.php:75 lib/oauthstore.php:465
msgid "You have been banned from subscribing."
msgstr "Nac'het ez eus bet deoc'h en em goumanantiñ."
-#: classes/Subscription.php:78
+#. TRANS: Exception thrown when trying to subscribe while already subscribed.
+#: classes/Subscription.php:80
msgid "Already subscribed!"
msgstr "Koumanantet dija !"
-#: classes/Subscription.php:82
+#. TRANS: Exception thrown when trying to subscribe to a user who has blocked the subscribing user.
+#: classes/Subscription.php:85
msgid "User has blocked you."
msgstr "An implijer-mañ en deus stanket ac'hanoc'h."
-#: classes/Subscription.php:167
+#. TRANS: Exception thrown when trying to unsibscribe without a subscription.
+#: classes/Subscription.php:171
msgid "Not subscribed!"
msgstr "Nann-koumanantet !"
-#: classes/Subscription.php:173
-msgid "Couldn't delete self-subscription."
-msgstr ""
+#. TRANS: Exception thrown when trying to unsubscribe a user from themselves.
+#: classes/Subscription.php:178
+#, fuzzy
+msgid "Could not delete self-subscription."
+msgstr "Dibosupl eo paouez gant ar c'houmanant."
-#: classes/Subscription.php:200
+#. TRANS: Exception thrown when the OMB token for a subscription could not deleted on the server.
+#: classes/Subscription.php:206
#, fuzzy
-msgid "Couldn't delete subscription OMB token."
+msgid "Could not delete subscription OMB token."
msgstr "Diposubl eo dilemel ar postel kadarnadur."
-#: classes/Subscription.php:211
-msgid "Couldn't delete subscription."
+#. TRANS: Exception thrown when a subscription could not be deleted on the server.
+#: classes/Subscription.php:218
+#, fuzzy
+msgid "Could not delete subscription."
msgstr "Dibosupl eo paouez gant ar c'houmanant."
-#: classes/User.php:363
+#. TRANS: Notice given on user registration.
+#. TRANS: %1$s is the sitename, $2$s is the registering user's nickname.
+#: classes/User.php:365
#, php-format
msgid "Welcome to %1$s, @%2$s!"
msgstr "Deuet mat da %1$s, @%2$s !"
-#: classes/User_group.php:480
+#. TRANS: Server exception thrown when creating a group failed.
+#: classes/User_group.php:496
msgid "Could not create group."
msgstr "Dibosupl eo krouiñ ar strollad."
-#: classes/User_group.php:489
+#. TRANS: Server exception thrown when updating a group URI failed.
+#: classes/User_group.php:506
msgid "Could not set group URI."
msgstr "Dibosupl eo termeniñ URI ar strollad."
-#: classes/User_group.php:510
+#. TRANS: Server exception thrown when setting group membership failed.
+#: classes/User_group.php:529
msgid "Could not set group membership."
msgstr "Dibosupl eo en em enskrivañ d'ar strollad."
-#: classes/User_group.php:524
+#. TRANS: Server exception thrown when saving local group information failed.
+#: classes/User_group.php:544
msgid "Could not save local group info."
msgstr "Dibosupl eo enrollañ titouroù ar strollad lec'hel."
@@ -6043,7 +6155,7 @@ msgid ""
"users in conversation. People can send you messages for your eyes only."
msgstr ""
-#: lib/mailbox.php:227 lib/noticelist.php:497
+#: lib/mailbox.php:227 lib/noticelist.php:505
msgid "from"
msgstr "eus"
@@ -6098,24 +6210,24 @@ msgstr ""
msgid "File upload stopped by extension."
msgstr ""
-#: lib/mediafile.php:179 lib/mediafile.php:216
+#: lib/mediafile.php:179 lib/mediafile.php:217
msgid "File exceeds user's quota."
msgstr ""
-#: lib/mediafile.php:196 lib/mediafile.php:233
+#: lib/mediafile.php:197 lib/mediafile.php:234
msgid "File could not be moved to destination directory."
msgstr ""
-#: lib/mediafile.php:201 lib/mediafile.php:237
+#: lib/mediafile.php:202 lib/mediafile.php:238
msgid "Could not determine file's MIME type."
msgstr ""
-#: lib/mediafile.php:270
+#: lib/mediafile.php:318
#, php-format
msgid " Try using another %s format."
msgstr "Klaskit implijout ur furmad %s all."
-#: lib/mediafile.php:275
+#: lib/mediafile.php:323
#, php-format
msgid "%s is not a supported file type on this server."
msgstr ""
@@ -6169,51 +6281,51 @@ msgid ""
msgstr ""
#. TRANS: Used in coordinates as abbreviation of north
-#: lib/noticelist.php:430
+#: lib/noticelist.php:436
msgid "N"
msgstr "N"
#. TRANS: Used in coordinates as abbreviation of south
-#: lib/noticelist.php:432
+#: lib/noticelist.php:438
msgid "S"
msgstr "S"
#. TRANS: Used in coordinates as abbreviation of east
-#: lib/noticelist.php:434
+#: lib/noticelist.php:440
msgid "E"
msgstr "R"
#. TRANS: Used in coordinates as abbreviation of west
-#: lib/noticelist.php:436
+#: lib/noticelist.php:442
msgid "W"
msgstr "K"
-#: lib/noticelist.php:438
+#: lib/noticelist.php:444
#, php-format
msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
msgstr "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
-#: lib/noticelist.php:447
+#: lib/noticelist.php:453
msgid "at"
msgstr "e"
-#: lib/noticelist.php:559
+#: lib/noticelist.php:567
msgid "in context"
msgstr "en amdro"
-#: lib/noticelist.php:594
+#: lib/noticelist.php:602
msgid "Repeated by"
msgstr "Adkemeret gant"
-#: lib/noticelist.php:621
+#: lib/noticelist.php:629
msgid "Reply to this notice"
msgstr "Respont d'an ali-mañ"
-#: lib/noticelist.php:622
+#: lib/noticelist.php:630
msgid "Reply"
msgstr "Respont"
-#: lib/noticelist.php:666
+#: lib/noticelist.php:674
msgid "Notice repeated"
msgstr "Ali adkemeret"
@@ -6471,7 +6583,7 @@ msgid "This server cannot handle theme uploads without ZIP support."
msgstr ""
#: lib/themeuploader.php:58 lib/themeuploader.php:61
-msgid "Theme upload missing or failed."
+msgid "The theme file is missing or the upload failed."
msgstr ""
#: lib/themeuploader.php:91 lib/themeuploader.php:102
diff --git a/locale/ca/LC_MESSAGES/statusnet.po b/locale/ca/LC_MESSAGES/statusnet.po
index 2b5a2076d..94bca4e7f 100644
--- a/locale/ca/LC_MESSAGES/statusnet.po
+++ b/locale/ca/LC_MESSAGES/statusnet.po
@@ -1,6 +1,7 @@
# Translation of StatusNet to Catalan
#
# Author@translatewiki.net: Aleator
+# Author@translatewiki.net: McDutchie
# Author@translatewiki.net: Paucabot
# Author@translatewiki.net: Toniher
# --
@@ -10,12 +11,12 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-06-16 22:18+0000\n"
-"PO-Revision-Date: 2010-06-21 18:03:01+0000\n"
+"POT-Creation-Date: 2010-08-03 13:21+0000\n"
+"PO-Revision-Date: 2010-08-03 13:21:45+0000\n"
"Language-Team: Catalan\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.17alpha (r68367); Translate extension (2010-06-12)\n"
+"X-Generator: MediaWiki 1.17alpha (r70381); Translate extension (2010-07-21)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: ca\n"
"X-Message-Group: out-statusnet\n"
@@ -101,7 +102,7 @@ msgstr "No existeix la pàgina."
#: actions/apidirectmessagenew.php:74 actions/apigroupcreate.php:113
#: actions/apigroupismember.php:91 actions/apigroupjoin.php:100
#: actions/apigroupleave.php:100 actions/apigrouplist.php:73
-#: actions/apistatusesupdate.php:228 actions/apisubscriptions.php:87
+#: actions/apistatusesupdate.php:229 actions/apisubscriptions.php:87
#: actions/apitimelinefavorites.php:72 actions/apitimelinefriends.php:174
#: actions/apitimelinehome.php:80 actions/apitimelinementions.php:80
#: actions/apitimelineuser.php:82 actions/avatarbynickname.php:75
@@ -170,20 +171,20 @@ msgstr ""
#. TRANS: %1$s is user nickname, %2$s is user nickname, %2$s is user nickname prefixed with "@"
#: actions/all.php:146
-#, php-format
+#, fuzzy, 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)."
+"You can try to [nudge %1$s](../%2$s) from their profile or [post something "
+"to them](%%%%action.newnotice%%%%?status_textarea=%3$s)."
msgstr ""
"Podeu provar d'[avisar %1$s](../%2$s) des del seu perfil o [publiqueu "
-"quelcom per reclamar-li l'atenció](%%%%action.newnotice%%%%?status_textarea=%"
-"3$s)."
+"quelcom per cridar-li l'atenció](%%%%action.newnotice%%%%?status_textarea=%3"
+"$s)."
#: actions/all.php:149 actions/replies.php:210 actions/showstream.php:211
-#, php-format
+#, fuzzy, php-format
msgid ""
"Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
-"post a notice to his or her attention."
+"post a notice to them."
msgstr ""
"Per què no [registreu un compte](%%%%action.register%%%%) i aviseu %s o "
"publiqueu un avís a la seva atenció."
@@ -218,7 +219,7 @@ msgstr "Actualitzacions de %1$s i amics a %2$s!"
#: actions/apistatusesshow.php:109 actions/apistatusnetconfig.php:141
#: actions/apistatusnetversion.php:93 actions/apisubscriptions.php:111
#: actions/apitimelinefavorites.php:174 actions/apitimelinefriends.php:271
-#: actions/apitimelinegroup.php:152 actions/apitimelinehome.php:175
+#: actions/apitimelinegroup.php:154 actions/apitimelinehome.php:175
#: actions/apitimelinementions.php:174 actions/apitimelinepublic.php:241
#: actions/apitimelineretweetedtome.php:121
#: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161
@@ -268,7 +269,7 @@ msgstr "No s'ha pogut desar el perfil."
#: actions/apiaccountupdateprofilebackgroundimage.php:108
#: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80
-#: actions/apistatusesupdate.php:211 actions/avatarsettings.php:257
+#: actions/apistatusesupdate.php:212 actions/avatarsettings.php:257
#: actions/designadminpanel.php:123 actions/editapplication.php:118
#: actions/newapplication.php:101 actions/newnotice.php:94
#: lib/designsettings.php:283
@@ -368,7 +369,8 @@ msgid "Could not delete favorite."
msgstr "No s'ha pogut eliminar el preferit."
#: actions/apifriendshipscreate.php:109
-msgid "Could not follow user: User not found."
+#, fuzzy
+msgid "Could not follow user: profile not found."
msgstr "No s'ha pogut seguir l'usuari: l'usuari no existeix."
#: actions/apifriendshipscreate.php:118
@@ -384,8 +386,9 @@ msgstr "No es pot deixar de seguir l'usuari: no s'ha trobat l'usuari."
msgid "You cannot unfollow yourself."
msgstr "No podeu deixar de seguir-vos a un mateix."
-#: actions/apifriendshipsexists.php:94
-msgid "Two user ids or screen_names must be supplied."
+#: actions/apifriendshipsexists.php:91
+#, fuzzy
+msgid "Two valid IDs or screen_names must be supplied."
msgstr "Cal proporcionar dos ids d'usuari o screen_names."
#: actions/apifriendshipsshow.php:134
@@ -515,6 +518,11 @@ msgstr "%s grups"
msgid "groups on %s"
msgstr "grups sobre %s"
+#: actions/apimediaupload.php:99
+#, fuzzy
+msgid "Upload failed."
+msgstr "Puja un fitxer"
+
#: actions/apioauthauthorize.php:101
msgid "No oauth_token parameter provided."
msgstr "No s'ha proporcionat cap paràmetre oauth_token."
@@ -660,22 +668,26 @@ msgstr "S'ha eliminat l'estat."
msgid "No status with that ID found."
msgstr "No s'ha trobat cap estatus amb la ID trobada."
-#: actions/apistatusesupdate.php:241 actions/newnotice.php:155
+#: actions/apistatusesupdate.php:221
+msgid "Client must provide a 'status' parameter with a value."
+msgstr ""
+
+#: actions/apistatusesupdate.php:242 actions/newnotice.php:155
#: lib/mailhandler.php:60
#, php-format
msgid "That's too long. Max notice size is %d chars."
msgstr "Massa llarg. La longitud màxima és de %d caràcters."
-#: actions/apistatusesupdate.php:282 actions/apiusershow.php:96
+#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96
msgid "Not found."
msgstr "No s'ha trobat."
-#: actions/apistatusesupdate.php:305 actions/newnotice.php:178
+#: actions/apistatusesupdate.php:306 actions/newnotice.php:178
#, php-format
msgid "Max notice size is %d chars, including attachment URL."
msgstr "La mida màxima de l'avís és %d caràcters, incloent l'URL de l'adjunt."
-#: actions/apisubscriptions.php:231 actions/apisubscriptions.php:261
+#: actions/apisubscriptions.php:232 actions/apisubscriptions.php:262
msgid "Unsupported format."
msgstr "El format no està implementat."
@@ -722,13 +734,17 @@ msgstr "Repeticions de %s"
#: actions/apitimelinetag.php:105 actions/tag.php:67
#, php-format
msgid "Notices tagged with %s"
-msgstr "Aviso etiquetats amb %s"
+msgstr "Avisos etiquetats amb %s"
#: actions/apitimelinetag.php:107 actions/tagrss.php:65
#, php-format
msgid "Updates tagged with %1$s on %2$s!"
msgstr "Actualitzacions etiquetades amb %1$s el %2$s!"
+#: actions/apitrends.php:87
+msgid "API method under construction."
+msgstr "Mètode API en construcció."
+
#: actions/attachment.php:73
msgid "No such attachment."
msgstr "No existeix l'adjunció."
@@ -782,7 +798,7 @@ msgid "Preview"
msgstr "Vista prèvia"
#: actions/avatarsettings.php:149 actions/showapplication.php:252
-#: lib/deleteuserform.php:66 lib/noticelist.php:648
+#: lib/deleteuserform.php:66 lib/noticelist.php:656
msgid "Delete"
msgstr "Elimina"
@@ -1065,7 +1081,7 @@ msgid "Do not delete this notice"
msgstr "No eliminis aquest avís"
#. TRANS: Submit button title for 'Yes' when deleting a notice.
-#: actions/deletenotice.php:158 lib/noticelist.php:648
+#: actions/deletenotice.php:158 lib/noticelist.php:656
msgid "Delete this notice"
msgstr "Elimina aquest avís"
@@ -1226,7 +1242,7 @@ msgstr "Torna a restaurar al valor per defecte"
#: actions/useradminpanel.php:294 lib/applicationeditform.php:363
#: lib/designsettings.php:256 lib/groupeditform.php:202
msgid "Save"
-msgstr "Guardar"
+msgstr "Desa"
#: actions/designadminpanel.php:686 lib/designsettings.php:257
msgid "Save design"
@@ -1342,7 +1358,8 @@ msgstr "L'àlies no és vàlid «%s»"
msgid "Could not update group."
msgstr "No s'ha pogut actualitzar el grup."
-#: actions/editgroup.php:264 classes/User_group.php:496
+#. TRANS: Server exception thrown when creating group aliases failed.
+#: actions/editgroup.php:264 classes/User_group.php:514
msgid "Could not create aliases."
msgstr "No s'han pogut crear els àlies."
@@ -1471,7 +1488,8 @@ msgstr "Envia'm un correu electrònic quan algú m'enviï una resposta amb @."
#. TRANS: Checkbox label in e-mail preferences form.
#: actions/emailsettings.php:205
msgid "Allow friends to nudge me and send me an email."
-msgstr "Permetre que els amics em reclamin i m'enviïn un correu electrònic."
+msgstr ""
+"Permetre que els amics em cridin l'atenció i m'enviïn un correu electrònic."
#. TRANS: Checkbox label in e-mail preferences form.
#: actions/emailsettings.php:212
@@ -2164,8 +2182,7 @@ msgstr "%1$s (%2$s)"
#: actions/invite.php:136
msgid ""
"These people are already users and you were automatically subscribed to them:"
-msgstr ""
-"Aquestes persona ja són usuaris i tu estàs subscrit automàticament a ells:"
+msgstr "Aquestes persones ja són usuaris i se us ha subscrit automàticament:"
#: actions/invite.php:144
msgid "Invitation(s) sent to the following people:"
@@ -2176,8 +2193,8 @@ msgid ""
"You will be notified when your invitees accept the invitation and register "
"on the site. Thanks for growing the community!"
msgstr ""
-"Seràs avisat quan les teves invitacions siguin acceptades i els teus "
-"convidats es registrin al lloc. Gràcies per fer créixer la comunitat."
+"Se us notificarà quan els vostres convidats acceptin la invitació i es "
+"registrin al lloc. Gràcies per fer créixer la comunitat!"
#: actions/invite.php:162
msgid ""
@@ -2304,7 +2321,7 @@ msgstr "%1$s ha abandonat el grup %2$s"
#: actions/login.php:102 actions/otp.php:62 actions/register.php:144
msgid "Already logged in."
-msgstr "Ja estàs connectat."
+msgstr "Ja hi heu iniciat una sessió."
#: actions/login.php:148
msgid "Incorrect username or password."
@@ -2500,19 +2517,20 @@ msgstr ""
"Les actualitzacions que coincideixen amb el terme de cerca «%1$s» el %2$s!"
#: actions/nudge.php:85
+#, fuzzy
msgid ""
-"This user doesn't allow nudges or hasn't confirmed or set his email yet."
+"This user doesn't allow nudges or hasn't confirmed or set their email yet."
msgstr ""
-"Aquest usuari no permet reclamacions o no ha confirmar encara cap correu "
-"electrònic."
+"Aquest usuari no permet que li cridin l'atenció o no ha confirmat encara cap "
+"correu electrònic."
#: actions/nudge.php:94
msgid "Nudge sent"
-msgstr "Reclamació enviada"
+msgstr "S'ha cridat l'atenció"
#: actions/nudge.php:97
msgid "Nudge sent!"
-msgstr "Reclamació enviada!"
+msgstr "S'ha cridat l'atenció!"
#: actions/oauthappssettings.php:59
msgid "You must be logged in to list your applications."
@@ -2580,8 +2598,8 @@ msgid "Only %s URLs over plain HTTP please."
msgstr "Si us plau, només URL %s sobre HTTP pla."
#. TRANS: Client error on an API request with an unsupported data format.
-#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1179
-#: lib/apiaction.php:1208 lib/apiaction.php:1325
+#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1204
+#: lib/apiaction.php:1232 lib/apiaction.php:1355
msgid "Not a supported data format."
msgstr "Format de data no suportat."
@@ -2689,7 +2707,7 @@ msgstr "6 o més caràcters"
#: actions/passwordsettings.php:112 actions/recoverpassword.php:239
#: actions/register.php:440
msgid "Confirm"
-msgstr "Confirmar"
+msgstr "Confirma"
#: actions/passwordsettings.php:113 actions/recoverpassword.php:240
msgid "Same as password above"
@@ -2697,7 +2715,7 @@ msgstr "Igual a la contrasenya de dalt"
#: actions/passwordsettings.php:117
msgid "Change"
-msgstr "Canviar"
+msgstr "Canvia"
#: actions/passwordsettings.php:154 actions/register.php:237
msgid "Password must be 6 or more characters."
@@ -3017,11 +3035,11 @@ msgstr "La biografia és massa llarga (màx. %d caràcters)."
#: actions/profilesettings.php:235 actions/siteadminpanel.php:151
msgid "Timezone not selected."
-msgstr "Franja horària no seleccionada."
+msgstr "No s'ha seleccionat el fus horari."
#: actions/profilesettings.php:241
msgid "Language is too long (max 50 chars)."
-msgstr "L'idioma és massa llarg (màx 50 caràcters)."
+msgstr "La llengua és massa llarga (màx. 50 caràcters)."
#: actions/profilesettings.php:253 actions/tagother.php:178
#, php-format
@@ -3047,7 +3065,7 @@ msgstr "No s'han pogut desar les etiquetes."
#. TRANS: Message after successful saving of administrative settings.
#: actions/profilesettings.php:391 lib/adminpanelaction.php:141
msgid "Settings saved."
-msgstr "Configuració guardada."
+msgstr "S'ha desat la configuració."
#: actions/public.php:83
#, php-format
@@ -3158,7 +3176,7 @@ msgstr "Núvol d'etiquetes"
#: actions/recoverpassword.php:36
msgid "You are already logged in!"
-msgstr "Ja t'has connectat!"
+msgstr "Ja heu iniciat una sessió!"
#: actions/recoverpassword.php:62
msgid "No such recovery code."
@@ -3207,7 +3225,7 @@ msgstr "Sobrenom o adreça electrònica"
#: actions/recoverpassword.php:193
msgid "Your nickname on this server, or your registered email address."
msgstr ""
-"El teu nom d'usuari en aquest servidor, o la teva adreça de correu "
+"El vostre nom d'usuari en aquest servidor, o la vostra adreça de correu "
"electrònic registrada."
#: actions/recoverpassword.php:199 actions/recoverpassword.php:200
@@ -3236,11 +3254,11 @@ msgstr "6 o més caràcters, i no te n'oblidis!"
#: actions/recoverpassword.php:243
msgid "Reset"
-msgstr "Restablir"
+msgstr "Reinicialitza"
#: actions/recoverpassword.php:252
msgid "Enter a nickname or email address."
-msgstr "Escriu un sobrenom o una adreça de correu electrònic."
+msgstr "Escriviu un sobrenom o una adreça de correu electrònic."
#: actions/recoverpassword.php:282
msgid "No user with that email address or username."
@@ -3252,7 +3270,7 @@ msgstr "No hi ha cap adreça de correu electrònic registrada d'aquest usuari."
#: actions/recoverpassword.php:313
msgid "Error saving address confirmation."
-msgstr "Error en guardar confirmació de l'adreça."
+msgstr "S'ha produït un error en desar la confirmació de l'adreça."
#: actions/recoverpassword.php:338
msgid ""
@@ -3312,7 +3330,7 @@ msgstr "L'adreça de correu electrònic ja existeix."
#: actions/register.php:250 actions/register.php:272
msgid "Invalid username or password."
-msgstr "Nom d'usuari o contrasenya invàlids."
+msgstr "El nom d'usuari o la contrasenya no són vàlids."
#: actions/register.php:350
msgid ""
@@ -3463,7 +3481,7 @@ msgstr "URL del teu perfil en un altre servei de microblogging compatible"
#: actions/remotesubscribe.php:137 lib/subscribeform.php:139
#: lib/userprofile.php:406
msgid "Subscribe"
-msgstr "Subscriure's"
+msgstr "Subscriu-m'hi"
#: actions/remotesubscribe.php:159
msgid "Invalid profile URL (bad format)"
@@ -3499,7 +3517,7 @@ msgstr "No podeu repetir el vostre propi avís."
msgid "You already repeated that notice."
msgstr "Ja havíeu repetit l'avís."
-#: actions/repeat.php:114 lib/noticelist.php:667
+#: actions/repeat.php:114 lib/noticelist.php:675
msgid "Repeated"
msgstr "Repetit"
@@ -3534,10 +3552,10 @@ msgid "Replies feed for %s (Atom)"
msgstr "Canal de respostes de %s (Atom)"
#: actions/replies.php:199
-#, php-format
+#, fuzzy, php-format
msgid ""
"This is the timeline showing replies to %1$s but %2$s hasn't received a "
-"notice to his attention yet."
+"notice to them yet."
msgstr ""
"Aquesta és la línia temporal que mostra les respostes a %1$s, però %2$s "
"encara no ha rebut cap avís a la seva atenció."
@@ -3552,13 +3570,13 @@ msgstr ""
"[uniu-vos a grups](%%action.groups%%)."
#: actions/replies.php:206
-#, php-format
+#, fuzzy, php-format
msgid ""
-"You can try to [nudge %1$s](../%2$s) or [post something to his or her "
-"attention](%%%%action.newnotice%%%%?status_textarea=%3$s)."
+"You can try to [nudge %1$s](../%2$s) or [post something to them](%%%%action."
+"newnotice%%%%?status_textarea=%3$s)."
msgstr ""
-"Podeu provar d'[avisar %1$s](../%2$s) o [enviar quelcom per reclamar la seva "
-"atenció](%%%%action.newnotice%%%%?status_textarea=%3$s)."
+"Podeu provar d'[avisar %1$s](../%2$s) o [enviar quelcom per cridar-li "
+"l'atenció](%%%%action.newnotice%%%%?status_textarea=%3$s)."
#: actions/repliesrss.php:72
#, php-format
@@ -3646,7 +3664,7 @@ msgstr "Organització"
msgid "Description"
msgstr "Descripció"
-#: actions/showapplication.php:192 actions/showgroup.php:444
+#: actions/showapplication.php:192 actions/showgroup.php:436
#: lib/profileaction.php:187
msgid "Statistics"
msgstr "Estadístiques"
@@ -3734,20 +3752,20 @@ msgstr ""
"avisos que us agraden per arxivar-los per a més endavant i fer-los conèixer."
#: actions/showfavorites.php:208
-#, php-format
+#, fuzzy, php-format
msgid ""
-"%s hasn't added any notices to his favorites yet. Post something interesting "
-"they would add to their favorites :)"
+"%s hasn't added any favorite notices yet. Post something interesting they "
+"would add to their favorites :)"
msgstr ""
"%s no ha afegit cap avís als seus preferits encara. Envieu quelcom "
"interessant que pugui afegir-hi."
#: actions/showfavorites.php:212
-#, php-format
+#, fuzzy, php-format
msgid ""
-"%s hasn't added any notices to his favorites yet. Why not [register an "
-"account](%%%%action.register%%%%) and then post something interesting they "
-"would add to their favorites :)"
+"%s hasn't added any favorite notices yet. Why not [register an account](%%%%"
+"action.register%%%%) and then post something interesting they would add to "
+"their favorites :)"
msgstr ""
"%s no ha afegit cap avís als seus preferits encara. Per què no [registreu un "
"compte](%%%%action.register%%%%) i llavors envieu quelcom interessant que "
@@ -3809,7 +3827,7 @@ msgstr "Canal d'avisos del grup %s (Atom)"
msgid "FOAF for %s group"
msgstr "Safata de sortida per %s"
-#: actions/showgroup.php:393 actions/showgroup.php:453 lib/groupnav.php:91
+#: actions/showgroup.php:393 actions/showgroup.php:445 lib/groupnav.php:91
msgid "Members"
msgstr "Membres"
@@ -3823,11 +3841,11 @@ msgstr "(Cap)"
msgid "All members"
msgstr "Tots els membres"
-#: actions/showgroup.php:447
+#: actions/showgroup.php:439
msgid "Created"
msgstr "S'ha creat"
-#: actions/showgroup.php:463
+#: actions/showgroup.php:455
#, php-format
msgid ""
"**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3843,7 +3861,7 @@ msgstr ""
"%) per formar part del grup i molt més! ([Més informació...](%%%%doc.help%%%"
"%))"
-#: actions/showgroup.php:469
+#: actions/showgroup.php:461
#, php-format
msgid ""
"**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3856,7 +3874,7 @@ msgstr ""
"[StatusNet](http://status.net/). Els seus membre comparteixen missatges "
"curts sobre llur vida i interessos. "
-#: actions/showgroup.php:497
+#: actions/showgroup.php:489
msgid "Admins"
msgstr "Administradors"
@@ -3932,13 +3950,13 @@ msgstr ""
"podria ser un bon moment per començar :)"
#: actions/showstream.php:207
-#, php-format
+#, fuzzy, php-format
msgid ""
-"You can try to nudge %1$s or [post something to his or her attention](%%%%"
-"action.newnotice%%%%?status_textarea=%2$s)."
+"You can try to nudge %1$s or [post something to them](%%%%action.newnotice%%%"
+"%?status_textarea=%2$s)."
msgstr ""
-"Podeu provar d'avisar %1$s o [enviar quelcom per reclamar la seva atenció](%%"
-"%%action.newnotice%%%%?status_textarea=%2$s)."
+"Podeu provar d'avisar %1$s o [enviar quelcom per cridar-li l'atenció](%%%%"
+"action.newnotice%%%%?status_textarea=%2$s)."
#: actions/showstream.php:243
#, php-format
@@ -4119,8 +4137,8 @@ msgstr "Paràmetres de l'SMS"
#, php-format
msgid "You can receive SMS messages through email from %%site.name%%."
msgstr ""
-"Pots rebre missatges SMS a través del teu coreu electrònic des de %%site.name"
-"%%."
+"Podeu rebre missatges SMS a través del vostre correu electrònic des de %%"
+"site.name%%."
#. TRANS: Message given in the SMS settings if SMS is not enabled on the site.
#: actions/smssettings.php:97
@@ -4179,7 +4197,7 @@ msgid ""
"Send me notices through SMS; I understand I may incur exorbitant charges "
"from my carrier."
msgstr ""
-"Enviar-me avisos a través de SMS; puc entendre que això repercutirà en una "
+"Envia'm avisos a través de l'SMS; puc entendre que això repercutirà en una "
"exorbitant càrrega del meu transport."
#. TRANS: Confirmation message for successful SMS preferences save.
@@ -4200,7 +4218,7 @@ msgstr "No s'ha sel·leccionat cap transport."
#. TRANS: Message given saving SMS phone number that is already set.
#: actions/smssettings.php:352
msgid "That is already your phone number."
-msgstr "Aquest ja és el teu número de telèfon."
+msgstr "Aquest ja és el vostre número de telèfon."
#. TRANS: Message given saving SMS phone number that is already set for another user.
#: actions/smssettings.php:356
@@ -4327,7 +4345,8 @@ msgstr "Desa els paràmetres de les instantànies"
msgid "You are not subscribed to that profile."
msgstr "No estàs subscrit a aquest perfil."
-#: actions/subedit.php:83 classes/Subscription.php:132
+#. TRANS: Exception thrown when a subscription could not be stored on the server.
+#: actions/subedit.php:83 classes/Subscription.php:136
msgid "Could not save subscription."
msgstr "No s'ha pogut guardar la subscripció."
@@ -4507,10 +4526,6 @@ msgstr ""
msgid "No such tag."
msgstr "No existeix aquesta etiqueta."
-#: actions/twitapitrends.php:85
-msgid "API method under construction."
-msgstr "Mètode API en construcció."
-
#: actions/unblock.php:59
msgid "You haven't blocked that user."
msgstr "No heu blocat l'usuari."
@@ -4611,7 +4626,7 @@ msgstr "Si es permet als usuaris invitar-ne de nous."
#: actions/userauthorization.php:105
msgid "Authorize subscription"
-msgstr "Autoritzar subscripció"
+msgstr "Autoritza la subscripció"
#: actions/userauthorization.php:110
msgid ""
@@ -4822,83 +4837,131 @@ msgstr "Versió"
msgid "Author(s)"
msgstr "Autoria"
-#: classes/File.php:185
+#. TRANS: Server exception thrown when a URL cannot be processed.
+#: classes/File.php:143
#, php-format
+msgid "Cannot process URL '%s'"
+msgstr ""
+
+#. TRANS: Server exception thrown when... Robin thinks something is impossible!
+#: classes/File.php:175
+msgid "Robin thinks something is impossible."
+msgstr ""
+
+#. TRANS: Message given if an upload is larger than the configured maximum.
+#. TRANS: %1$d is the byte limit for uploads, %2$d is the byte count for the uploaded file.
+#: classes/File.php:190
+#, fuzzy, php-format
msgid ""
-"No file may be larger than %d bytes and the file you sent was %d bytes. Try "
-"to upload a smaller version."
+"No file may be larger than %1$d bytes and the file you sent was %2$d bytes. "
+"Try to upload a smaller version."
msgstr ""
"Cap fitxer pot ser major de %d bytes i el fitxer que heu enviat era de %d "
"bytes. Proveu de pujar una versió de mida menor."
-#: classes/File.php:195
+#. TRANS: Message given if an upload would exceed user quota.
+#. TRANS: %d (number) is the user quota in bytes.
+#: classes/File.php:202
#, php-format
msgid "A file this large would exceed your user quota of %d bytes."
msgstr ""
"Un fitxer d'aquesta mida excediria la vostra quota d'usuari de %d bytes."
-#: classes/File.php:202
+#. TRANS: Message given id an upload would exceed a user's monthly quota.
+#. TRANS: $d (number) is the monthly user quota in bytes.
+#: classes/File.php:211
#, php-format
msgid "A file this large would exceed your monthly quota of %d bytes."
msgstr ""
"Un fitxer d'aquesta mida excediria la vostra quota mensual de %d bytes."
-#: classes/Group_member.php:41
+#. TRANS: Client exception thrown if a file upload does not have a valid name.
+#: classes/File.php:248 classes/File.php:263
+#, fuzzy
+msgid "Invalid filename."
+msgstr "La mida no és vàlida."
+
+#. TRANS: Exception thrown when joining a group fails.
+#: classes/Group_member.php:42
msgid "Group join failed."
msgstr "No s'ha pogut unir al grup."
-#: classes/Group_member.php:53
+#. TRANS: Exception thrown when trying to leave a group the user is not a member of.
+#: classes/Group_member.php:55
msgid "Not part of group."
msgstr "No s'és part del grup."
-#: classes/Group_member.php:60
+#. TRANS: Exception thrown when trying to leave a group fails.
+#: classes/Group_member.php:63
msgid "Group leave failed."
msgstr "La sortida del grup ha fallat."
-#: classes/Local_group.php:41
+#. TRANS: Server exception thrown when updating a local group fails.
+#: classes/Local_group.php:42
msgid "Could not update local group."
msgstr "No s'ha pogut actualitzar el grup local."
-#: classes/Login_token.php:76
+#. TRANS: Exception thrown when trying creating a login token failed.
+#. TRANS: %s is the user nickname for which token creation failed.
+#: classes/Login_token.php:78
#, php-format
msgid "Could not create login token for %s"
msgstr "No s'ha pogut crear un testimoni d'inici de sessió per a %s"
-#: classes/Message.php:45
+#. TRANS: Exception thrown when database name or Data Source Name could not be found.
+#: classes/Memcached_DataObject.php:533
+msgid "No database name or DSN found anywhere."
+msgstr ""
+
+#. TRANS: Client exception thrown when a user tries to send a direct message while being banned from sending them.
+#: classes/Message.php:46
msgid "You are banned from sending direct messages."
msgstr "Se us ha bandejat enviar missatges directes."
-#: classes/Message.php:61
+#. TRANS: Message given when a message could not be stored on the server.
+#: classes/Message.php:63
msgid "Could not insert message."
msgstr "No s'ha pogut inserir el missatge."
-#: classes/Message.php:71
+#. TRANS: Message given when a message could not be updated on the server.
+#: classes/Message.php:74
msgid "Could not update message with new URI."
msgstr "No s'ha pogut inserir el missatge amb la nova URI."
+#. TRANS: Server exception thrown when a user profile for a notice cannot be found.
+#. TRANS: %1$d is a profile ID (number), %2$d is a notice ID (number).
+#: classes/Notice.php:98
+#, php-format
+msgid "No such profile (%1$d) for notice (%2$d)."
+msgstr ""
+
#. TRANS: Server exception. %s are the error details.
-#: classes/Notice.php:182
+#: classes/Notice.php:190
#, php-format
msgid "Database error inserting hashtag: %s"
msgstr ""
"S'ha produït un error de la base de dades en inserir una etiqueta de "
"coixinet (%): %s"
-#: classes/Notice.php:251
+#. TRANS: Client exception thrown if a notice contains too many characters.
+#: classes/Notice.php:260
msgid "Problem saving notice. Too long."
msgstr "S'ha produït un problema en desar l'avís. És massa llarg."
-#: classes/Notice.php:255
+#. TRANS: Client exception thrown when trying to save a notice for an unknown user.
+#: classes/Notice.php:265
msgid "Problem saving notice. Unknown user."
msgstr "S'ha produït un problema en desar l'avís. Usuari desconegut."
-#: classes/Notice.php:260
+#. TRANS: Client exception thrown when a user tries to post too many notices in a given time frame.
+#: classes/Notice.php:271
msgid ""
"Too many notices too fast; take a breather and post again in a few minutes."
msgstr ""
"Massa avisos massa ràpid; pren un respir i publica de nou en uns minuts."
-#: classes/Notice.php:266
+#. TRANS: Client exception thrown when a user tries to post too many duplicate notices in a given time frame.
+#: classes/Notice.php:278
msgid ""
"Too many duplicate messages too quickly; take a breather and post again in a "
"few minutes."
@@ -4906,71 +4969,122 @@ msgstr ""
"Massa missatges duplicats en massa poc temps; preneu un respir i torneu a "
"enviar en uns minuts."
-#: classes/Notice.php:272
+#. TRANS: Client exception thrown when a user tries to post while being banned.
+#: classes/Notice.php:286
msgid "You are banned from posting notices on this site."
msgstr "Ha estat bandejat de publicar avisos en aquest lloc."
-#: classes/Notice.php:338 classes/Notice.php:364
+#. TRANS: Server exception thrown when a notice cannot be saved.
+#. TRANS: Server exception thrown when a notice cannot be updated.
+#: classes/Notice.php:353 classes/Notice.php:380
msgid "Problem saving notice."
-msgstr "Problema en guardar l'avís."
+msgstr "S'ha produït un problema en desar l'avís."
+
+#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups().
+#: classes/Notice.php:892
+msgid "Bad type provided to saveKnownGroups"
+msgstr ""
-#: classes/Notice.php:973
+#. TRANS: Server exception thrown when an update for a group inbox fails.
+#: classes/Notice.php:991
msgid "Problem saving group inbox."
msgstr "S'ha produït un problema en desar la safata d'entrada del grup."
#. TRANS: Message used to repeat a notice. RT is the abbreviation of 'retweet'.
#. TRANS: %1$s is the repeated user's name, %2$s is the repeated notice.
-#: classes/Notice.php:1564
+#: classes/Notice.php:1614
#, php-format
msgid "RT @%1$s %2$s"
msgstr "RT @%1$s %2$s"
-#: classes/Subscription.php:74 lib/oauthstore.php:465
+#. TRANS: Exception thrown when trying to revoke an existing role for a user that does not exist.
+#. TRANS: %1$s is the role name, %2$s is the user ID (number).
+#: classes/Profile.php:740
+#, php-format
+msgid "Cannot revoke role \"%1$s\" for user #%2$d; does not exist."
+msgstr ""
+
+#. TRANS: Exception thrown when trying to revoke a role for a user with a failing database query.
+#. TRANS: %1$s is the role name, %2$s is the user ID (number).
+#: classes/Profile.php:749
+#, php-format
+msgid "Cannot revoke role \"%1$s\" for user #%2$d; database error."
+msgstr ""
+
+#. TRANS: Exception thrown when a right for a non-existing user profile is checked.
+#: classes/Remote_profile.php:54
+#, fuzzy
+msgid "Missing profile."
+msgstr "L'usuari no té perfil."
+
+#. TRANS: Exception thrown when a tag cannot be saved.
+#: classes/Status_network.php:346
+#, fuzzy
+msgid "Unable to save tag."
+msgstr "No s'ha pogut desar l'avís del lloc."
+
+#. TRANS: Exception thrown when trying to subscribe while being banned from subscribing.
+#: classes/Subscription.php:75 lib/oauthstore.php:465
msgid "You have been banned from subscribing."
msgstr "Se us ha banejat la subscripció."
-#: classes/Subscription.php:78
+#. TRANS: Exception thrown when trying to subscribe while already subscribed.
+#: classes/Subscription.php:80
msgid "Already subscribed!"
msgstr "Ja hi esteu subscrit!"
-#: classes/Subscription.php:82
+#. TRANS: Exception thrown when trying to subscribe to a user who has blocked the subscribing user.
+#: classes/Subscription.php:85
msgid "User has blocked you."
msgstr "Un usuari t'ha bloquejat."
-#: classes/Subscription.php:167
+#. TRANS: Exception thrown when trying to unsibscribe without a subscription.
+#: classes/Subscription.php:171
msgid "Not subscribed!"
msgstr "No hi esteu subscrit!"
-#: classes/Subscription.php:173
-msgid "Couldn't delete self-subscription."
+#. TRANS: Exception thrown when trying to unsubscribe a user from themselves.
+#: classes/Subscription.php:178
+#, fuzzy
+msgid "Could not delete self-subscription."
msgstr "No s'ha pogut eliminar l'autosubscripció."
-#: classes/Subscription.php:200
-msgid "Couldn't delete subscription OMB token."
+#. TRANS: Exception thrown when the OMB token for a subscription could not deleted on the server.
+#: classes/Subscription.php:206
+#, fuzzy
+msgid "Could not delete subscription OMB token."
msgstr "No s'ha pogut eliminar el testimoni OMB de la subscripció."
-#: classes/Subscription.php:211
-msgid "Couldn't delete subscription."
+#. TRANS: Exception thrown when a subscription could not be deleted on the server.
+#: classes/Subscription.php:218
+#, fuzzy
+msgid "Could not delete subscription."
msgstr "No s'ha pogut eliminar la subscripció."
-#: classes/User.php:363
+#. TRANS: Notice given on user registration.
+#. TRANS: %1$s is the sitename, $2$s is the registering user's nickname.
+#: classes/User.php:365
#, php-format
msgid "Welcome to %1$s, @%2$s!"
msgstr "Us donem la benvinguda a %1$s, @%2$s!"
-#: classes/User_group.php:480
+#. TRANS: Server exception thrown when creating a group failed.
+#: classes/User_group.php:496
msgid "Could not create group."
msgstr "No s'ha pogut crear el grup."
-#: classes/User_group.php:489
+#. TRANS: Server exception thrown when updating a group URI failed.
+#: classes/User_group.php:506
msgid "Could not set group URI."
msgstr "No es pot definir l'URI del grup."
-#: classes/User_group.php:510
+#. TRANS: Server exception thrown when setting group membership failed.
+#: classes/User_group.php:529
msgid "Could not set group membership."
msgstr "No s'ha pogut establir la pertinença d'aquest grup."
-#: classes/User_group.php:524
+#. TRANS: Server exception thrown when saving local group information failed.
+#: classes/User_group.php:544
msgid "Could not save local group info."
msgstr "No s'ha pogut desar la informació del grup local."
@@ -5572,7 +5686,7 @@ msgstr "No té massa sentit avisar-se a un mateix!"
#: lib/command.php:234
#, php-format
msgid "Nudge sent to %s"
-msgstr "S'ha enviat un avís a %s"
+msgstr "S'ha cridat l'atenció a %s"
#: lib/command.php:260
#, php-format
@@ -6248,7 +6362,7 @@ msgstr "%s: confirmeu-ho si teniu aquest número de telèfon amb aquest codi:"
#: lib/mail.php:484
#, php-format
msgid "You've been nudged by %s"
-msgstr "Has estat reclamat per %s"
+msgstr "%s us ha cridat l'atenció"
#. TRANS: Body for 'nudge' notification email
#: lib/mail.php:489
@@ -6405,8 +6519,8 @@ msgid ""
"\n"
"P.S. You can turn off these email notifications here: %8$s\n"
msgstr ""
-"1$s (@%9$s) acaba d'enviar un avís un avís a la vostra atenció (una resposta "
-"amb @) a %2$s.\n"
+"%1$s (@%9$s) acaba d'enviar un avís un avís a la vostra atenció (una "
+"resposta amb @) a %2$s.\n"
"\n"
"L'avís és a continuació:\n"
"\n"
@@ -6442,7 +6556,7 @@ msgstr ""
"usuaris en la conversa. La gent pot enviar-vos missatges només per als "
"vostres ulls."
-#: lib/mailbox.php:227 lib/noticelist.php:497
+#: lib/mailbox.php:227 lib/noticelist.php:505
msgid "from"
msgstr "de"
@@ -6503,24 +6617,24 @@ msgstr "No s'ha pogut escriure el fitxer al disc."
msgid "File upload stopped by extension."
msgstr "L'extensió ha aturat la càrrega del fitxer."
-#: lib/mediafile.php:179 lib/mediafile.php:216
+#: lib/mediafile.php:179 lib/mediafile.php:217
msgid "File exceeds user's quota."
msgstr "El fitxer excedeix la quota de l'usuari."
-#: lib/mediafile.php:196 lib/mediafile.php:233
+#: lib/mediafile.php:197 lib/mediafile.php:234
msgid "File could not be moved to destination directory."
msgstr "No s'ha pogut moure el fitxer al directori de destinació."
-#: lib/mediafile.php:201 lib/mediafile.php:237
+#: lib/mediafile.php:202 lib/mediafile.php:238
msgid "Could not determine file's MIME type."
msgstr "No s'ha pogut determinar el tipus MIME del fitxer."
-#: lib/mediafile.php:270
+#: lib/mediafile.php:318
#, php-format
msgid " Try using another %s format."
msgstr "Proveu d'emprar un altre format %s."
-#: lib/mediafile.php:275
+#: lib/mediafile.php:323
#, php-format
msgid "%s is not a supported file type on this server."
msgstr "%s no és un tipus de fitxer permès al servidor."
@@ -6576,65 +6690,65 @@ msgstr ""
"l'esperat; torneu-ho a provar més tard"
#. TRANS: Used in coordinates as abbreviation of north
-#: lib/noticelist.php:430
+#: lib/noticelist.php:436
msgid "N"
msgstr "N"
#. TRANS: Used in coordinates as abbreviation of south
-#: lib/noticelist.php:432
+#: lib/noticelist.php:438
msgid "S"
msgstr "S"
#. TRANS: Used in coordinates as abbreviation of east
-#: lib/noticelist.php:434
+#: lib/noticelist.php:440
msgid "E"
msgstr "E"
#. TRANS: Used in coordinates as abbreviation of west
-#: lib/noticelist.php:436
+#: lib/noticelist.php:442
msgid "W"
msgstr "O"
-#: lib/noticelist.php:438
+#: lib/noticelist.php:444
#, php-format
msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
msgstr "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
-#: lib/noticelist.php:447
+#: lib/noticelist.php:453
msgid "at"
msgstr "a"
-#: lib/noticelist.php:559
+#: lib/noticelist.php:567
msgid "in context"
msgstr "en context"
-#: lib/noticelist.php:594
+#: lib/noticelist.php:602
msgid "Repeated by"
msgstr "Repetit per"
-#: lib/noticelist.php:621
+#: lib/noticelist.php:629
msgid "Reply to this notice"
msgstr "respondre a aquesta nota"
-#: lib/noticelist.php:622
+#: lib/noticelist.php:630
msgid "Reply"
msgstr "Respon"
-#: lib/noticelist.php:666
+#: lib/noticelist.php:674
msgid "Notice repeated"
msgstr "Avís repetit"
#: lib/nudgeform.php:116
msgid "Nudge this user"
-msgstr "Reclamar aquest usuari"
+msgstr "Crida l'atenció a l'usuari"
#: lib/nudgeform.php:128
msgid "Nudge"
-msgstr "Reclamar"
+msgstr "Crida l'atenció"
#: lib/nudgeform.php:128
msgid "Send a nudge to this user"
-msgstr "Enviar una reclamació a aquest usuari"
+msgstr "Crida l'atenció a l'usuari"
#: lib/oauthstore.php:283
msgid "Error inserting new profile"
@@ -6878,8 +6992,8 @@ msgid "This server cannot handle theme uploads without ZIP support."
msgstr "El servidor no pot gestionar la pujada de temes si no pot tractar ZIP."
#: lib/themeuploader.php:58 lib/themeuploader.php:61
-msgid "Theme upload missing or failed."
-msgstr "La pujada del tema ha fallat o no hi és."
+msgid "The theme file is missing or the upload failed."
+msgstr "Manca el fitxer del tema o la pujada ha fallat."
#: lib/themeuploader.php:91 lib/themeuploader.php:102
#: lib/themeuploader.php:253 lib/themeuploader.php:257
@@ -6899,7 +7013,7 @@ msgstr ""
#: lib/themeuploader.php:178
msgid "Invalid theme archive: missing file css/display.css"
-msgstr "L'arxiu del tema no és vàlid: manca el fitxer de css / display.css"
+msgstr "L'arxiu del tema no és vàlid: manca el fitxer css/display.css"
#: lib/themeuploader.php:205
msgid ""
diff --git a/locale/cs/LC_MESSAGES/statusnet.po b/locale/cs/LC_MESSAGES/statusnet.po
index f9bd7ded9..0834169e9 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-06-16 22:18+0000\n"
-"PO-Revision-Date: 2010-06-21 18:03:06+0000\n"
+"POT-Creation-Date: 2010-08-03 13:21+0000\n"
+"PO-Revision-Date: 2010-08-03 13:21:47+0000\n"
"Language-Team: Czech\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.17alpha (r68367); Translate extension (2010-06-12)\n"
+"X-Generator: MediaWiki 1.17alpha (r70381); Translate extension (2010-07-21)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: cs\n"
"X-Message-Group: out-statusnet\n"
@@ -106,7 +106,7 @@ msgstr "Žádné takové oznámení."
#: actions/apidirectmessagenew.php:74 actions/apigroupcreate.php:113
#: actions/apigroupismember.php:91 actions/apigroupjoin.php:100
#: actions/apigroupleave.php:100 actions/apigrouplist.php:73
-#: actions/apistatusesupdate.php:228 actions/apisubscriptions.php:87
+#: actions/apistatusesupdate.php:229 actions/apisubscriptions.php:87
#: actions/apitimelinefavorites.php:72 actions/apitimelinefriends.php:174
#: actions/apitimelinehome.php:80 actions/apitimelinementions.php:80
#: actions/apitimelineuser.php:82 actions/avatarbynickname.php:75
@@ -173,15 +173,15 @@ msgstr ""
#: actions/all.php:146
#, 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)."
+"You can try to [nudge %1$s](../%2$s) from their profile or [post something "
+"to them](%%%%action.newnotice%%%%?status_textarea=%3$s)."
msgstr ""
#: actions/all.php:149 actions/replies.php:210 actions/showstream.php:211
#, php-format
msgid ""
"Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
-"post a notice to his or her attention."
+"post a notice to them."
msgstr ""
#. TRANS: H1 text
@@ -215,7 +215,7 @@ msgstr ""
#: actions/apistatusesshow.php:109 actions/apistatusnetconfig.php:141
#: actions/apistatusnetversion.php:93 actions/apisubscriptions.php:111
#: actions/apitimelinefavorites.php:174 actions/apitimelinefriends.php:271
-#: actions/apitimelinegroup.php:152 actions/apitimelinehome.php:175
+#: actions/apitimelinegroup.php:154 actions/apitimelinehome.php:175
#: actions/apitimelinementions.php:174 actions/apitimelinepublic.php:241
#: actions/apitimelineretweetedtome.php:121
#: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161
@@ -266,7 +266,7 @@ msgstr "Nelze uložit profil"
#: actions/apiaccountupdateprofilebackgroundimage.php:108
#: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80
-#: actions/apistatusesupdate.php:211 actions/avatarsettings.php:257
+#: actions/apistatusesupdate.php:212 actions/avatarsettings.php:257
#: actions/designadminpanel.php:123 actions/editapplication.php:118
#: actions/newapplication.php:101 actions/newnotice.php:94
#: lib/designsettings.php:283
@@ -365,8 +365,9 @@ msgid "Could not delete favorite."
msgstr "Nelze smazat oblíbenou položku."
#: actions/apifriendshipscreate.php:109
-msgid "Could not follow user: User not found."
-msgstr ""
+#, fuzzy
+msgid "Could not follow user: profile not found."
+msgstr "Nelze přesměrovat na server: %s"
#: actions/apifriendshipscreate.php:118
#, php-format
@@ -383,8 +384,8 @@ msgstr "Nelze přesměrovat na server: %s"
msgid "You cannot unfollow yourself."
msgstr "Nelze aktualizovat uživatele"
-#: actions/apifriendshipsexists.php:94
-msgid "Two user ids or screen_names must be supplied."
+#: actions/apifriendshipsexists.php:91
+msgid "Two valid IDs or screen_names must be supplied."
msgstr ""
#: actions/apifriendshipsshow.php:134
@@ -517,6 +518,11 @@ msgstr ""
msgid "groups on %s"
msgstr ""
+#: actions/apimediaupload.php:99
+#, fuzzy
+msgid "Upload failed."
+msgstr "Upload"
+
#: actions/apioauthauthorize.php:101
msgid "No oauth_token parameter provided."
msgstr ""
@@ -664,23 +670,27 @@ msgstr "Obrázek nahrán"
msgid "No status with that ID found."
msgstr ""
-#: actions/apistatusesupdate.php:241 actions/newnotice.php:155
+#: actions/apistatusesupdate.php:221
+msgid "Client must provide a 'status' parameter with a value."
+msgstr ""
+
+#: actions/apistatusesupdate.php:242 actions/newnotice.php:155
#: lib/mailhandler.php:60
#, fuzzy, php-format
msgid "That's too long. Max notice size is %d chars."
msgstr "Je to příliš dlouhé. Maximální sdělení délka je 140 znaků"
-#: actions/apistatusesupdate.php:282 actions/apiusershow.php:96
+#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96
#, fuzzy
msgid "Not found."
msgstr "Žádný požadavek nebyl nalezen!"
-#: actions/apistatusesupdate.php:305 actions/newnotice.php:178
+#: actions/apistatusesupdate.php:306 actions/newnotice.php:178
#, php-format
msgid "Max notice size is %d chars, including attachment URL."
msgstr ""
-#: actions/apisubscriptions.php:231 actions/apisubscriptions.php:261
+#: actions/apisubscriptions.php:232 actions/apisubscriptions.php:262
#, fuzzy
msgid "Unsupported format."
msgstr "Nepodporovaný formát obrázku."
@@ -735,6 +745,10 @@ msgstr ""
msgid "Updates tagged with %1$s on %2$s!"
msgstr "Mikroblog od %s"
+#: actions/apitrends.php:87
+msgid "API method under construction."
+msgstr ""
+
#: actions/attachment.php:73
#, fuzzy
msgid "No such attachment."
@@ -790,7 +804,7 @@ msgid "Preview"
msgstr ""
#: actions/avatarsettings.php:149 actions/showapplication.php:252
-#: lib/deleteuserform.php:66 lib/noticelist.php:648
+#: lib/deleteuserform.php:66 lib/noticelist.php:656
msgid "Delete"
msgstr "Odstranit"
@@ -1081,7 +1095,7 @@ msgid "Do not delete this notice"
msgstr "Žádné takové oznámení."
#. TRANS: Submit button title for 'Yes' when deleting a notice.
-#: actions/deletenotice.php:158 lib/noticelist.php:648
+#: actions/deletenotice.php:158 lib/noticelist.php:656
msgid "Delete this notice"
msgstr "Odstranit toto oznámení"
@@ -1373,7 +1387,8 @@ msgstr "Neplatná adresa '%s'"
msgid "Could not update group."
msgstr "Nelze aktualizovat uživatele"
-#: actions/editgroup.php:264 classes/User_group.php:496
+#. TRANS: Server exception thrown when creating group aliases failed.
+#: actions/editgroup.php:264 classes/User_group.php:514
#, fuzzy
msgid "Could not create aliases."
msgstr "Nelze uložin informace o obrázku"
@@ -2515,7 +2530,7 @@ msgstr "Všechny položky obsahující \"%s\""
#: actions/nudge.php:85
msgid ""
-"This user doesn't allow nudges or hasn't confirmed or set his email yet."
+"This user doesn't allow nudges or hasn't confirmed or set their email yet."
msgstr ""
#: actions/nudge.php:94
@@ -2592,8 +2607,8 @@ msgid "Only %s URLs over plain HTTP please."
msgstr ""
#. TRANS: Client error on an API request with an unsupported data format.
-#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1179
-#: lib/apiaction.php:1208 lib/apiaction.php:1325
+#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1204
+#: lib/apiaction.php:1232 lib/apiaction.php:1355
msgid "Not a supported data format."
msgstr ""
@@ -3492,7 +3507,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:667
+#: actions/repeat.php:114 lib/noticelist.php:675
#, fuzzy
msgid "Repeated"
msgstr "Vytvořit"
@@ -3532,7 +3547,7 @@ msgstr "Feed sdělení pro %s"
#, php-format
msgid ""
"This is the timeline showing replies to %1$s but %2$s hasn't received a "
-"notice to his attention yet."
+"notice to them yet."
msgstr ""
#: actions/replies.php:204
@@ -3545,8 +3560,8 @@ msgstr ""
#: actions/replies.php:206
#, php-format
msgid ""
-"You can try to [nudge %1$s](../%2$s) or [post something to his or her "
-"attention](%%%%action.newnotice%%%%?status_textarea=%3$s)."
+"You can try to [nudge %1$s](../%2$s) or [post something to them](%%%%action."
+"newnotice%%%%?status_textarea=%3$s)."
msgstr ""
#: actions/repliesrss.php:72
@@ -3645,7 +3660,7 @@ msgstr "Umístění"
msgid "Description"
msgstr "Odběry"
-#: actions/showapplication.php:192 actions/showgroup.php:444
+#: actions/showapplication.php:192 actions/showgroup.php:436
#: lib/profileaction.php:187
msgid "Statistics"
msgstr "Statistiky"
@@ -3730,16 +3745,16 @@ msgstr ""
#: actions/showfavorites.php:208
#, php-format
msgid ""
-"%s hasn't added any notices to his favorites yet. Post something interesting "
-"they would add to their favorites :)"
+"%s hasn't added any favorite notices yet. Post something interesting they "
+"would add to their favorites :)"
msgstr ""
#: actions/showfavorites.php:212
#, php-format
msgid ""
-"%s hasn't added any notices to his favorites yet. Why not [register an "
-"account](%%%%action.register%%%%) and then post something interesting they "
-"would add to their favorites :)"
+"%s hasn't added any favorite notices yet. Why not [register an account](%%%%"
+"action.register%%%%) and then post something interesting they would add to "
+"their favorites :)"
msgstr ""
#: actions/showfavorites.php:243
@@ -3799,7 +3814,7 @@ msgstr "Feed sdělení pro %s"
msgid "FOAF for %s group"
msgstr "Feed sdělení pro %s"
-#: actions/showgroup.php:393 actions/showgroup.php:453 lib/groupnav.php:91
+#: actions/showgroup.php:393 actions/showgroup.php:445 lib/groupnav.php:91
#, fuzzy
msgid "Members"
msgstr "ÄŒlenem od"
@@ -3814,12 +3829,12 @@ msgstr ""
msgid "All members"
msgstr ""
-#: actions/showgroup.php:447
+#: actions/showgroup.php:439
#, fuzzy
msgid "Created"
msgstr "Vytvořit"
-#: actions/showgroup.php:463
+#: actions/showgroup.php:455
#, php-format
msgid ""
"**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3829,7 +3844,7 @@ msgid ""
"of this group and many more! ([Read more](%%%%doc.help%%%%))"
msgstr ""
-#: actions/showgroup.php:469
+#: actions/showgroup.php:461
#, php-format
msgid ""
"**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3838,7 +3853,7 @@ msgid ""
"their life and interests. "
msgstr ""
-#: actions/showgroup.php:497
+#: actions/showgroup.php:489
msgid "Admins"
msgstr ""
@@ -3914,8 +3929,8 @@ msgstr ""
#: 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)."
+"You can try to nudge %1$s or [post something to them](%%%%action.newnotice%%%"
+"%?status_textarea=%2$s)."
msgstr ""
#: actions/showstream.php:243
@@ -4304,7 +4319,8 @@ msgstr "Nastavení"
msgid "You are not subscribed to that profile."
msgstr "Neodeslal jste nám profil"
-#: actions/subedit.php:83 classes/Subscription.php:132
+#. TRANS: Exception thrown when a subscription could not be stored on the server.
+#: actions/subedit.php:83 classes/Subscription.php:136
#, fuzzy
msgid "Could not save subscription."
msgstr "Nelze vytvořit odebírat"
@@ -4477,10 +4493,6 @@ msgstr ""
msgid "No such tag."
msgstr "Žádné takové oznámení."
-#: actions/twitapitrends.php:85
-msgid "API method under construction."
-msgstr ""
-
#: actions/unblock.php:59
#, fuzzy
msgid "You haven't blocked that user."
@@ -4789,160 +4801,257 @@ msgstr "Osobní"
msgid "Author(s)"
msgstr ""
-#: classes/File.php:185
+#. TRANS: Server exception thrown when a URL cannot be processed.
+#: classes/File.php:143
+#, php-format
+msgid "Cannot process URL '%s'"
+msgstr ""
+
+#. TRANS: Server exception thrown when... Robin thinks something is impossible!
+#: classes/File.php:175
+msgid "Robin thinks something is impossible."
+msgstr ""
+
+#. TRANS: Message given if an upload is larger than the configured maximum.
+#. TRANS: %1$d is the byte limit for uploads, %2$d is the byte count for the uploaded file.
+#: classes/File.php:190
#, php-format
msgid ""
-"No file may be larger than %d bytes and the file you sent was %d bytes. Try "
-"to upload a smaller version."
+"No file may be larger than %1$d bytes and the file you sent was %2$d bytes. "
+"Try to upload a smaller version."
msgstr ""
-#: classes/File.php:195
+#. TRANS: Message given if an upload would exceed user quota.
+#. TRANS: %d (number) is the user quota in bytes.
+#: classes/File.php:202
#, php-format
msgid "A file this large would exceed your user quota of %d bytes."
msgstr ""
-#: classes/File.php:202
+#. TRANS: Message given id an upload would exceed a user's monthly quota.
+#. TRANS: $d (number) is the monthly user quota in bytes.
+#: classes/File.php:211
#, php-format
msgid "A file this large would exceed your monthly quota of %d bytes."
msgstr ""
-#: classes/Group_member.php:41
+#. TRANS: Client exception thrown if a file upload does not have a valid name.
+#: classes/File.php:248 classes/File.php:263
+#, fuzzy
+msgid "Invalid filename."
+msgstr "Neplatná velikost"
+
+#. TRANS: Exception thrown when joining a group fails.
+#: classes/Group_member.php:42
#, fuzzy
msgid "Group join failed."
msgstr "Žádné takové oznámení."
-#: classes/Group_member.php:53
+#. TRANS: Exception thrown when trying to leave a group the user is not a member of.
+#: classes/Group_member.php:55
#, fuzzy
msgid "Not part of group."
msgstr "Nelze aktualizovat uživatele"
-#: classes/Group_member.php:60
+#. TRANS: Exception thrown when trying to leave a group fails.
+#: classes/Group_member.php:63
#, fuzzy
msgid "Group leave failed."
msgstr "Žádné takové oznámení."
-#: classes/Local_group.php:41
+#. TRANS: Server exception thrown when updating a local group fails.
+#: classes/Local_group.php:42
#, fuzzy
msgid "Could not update local group."
msgstr "Nelze aktualizovat uživatele"
-#: classes/Login_token.php:76
+#. TRANS: Exception thrown when trying creating a login token failed.
+#. TRANS: %s is the user nickname for which token creation failed.
+#: classes/Login_token.php:78
#, fuzzy, php-format
msgid "Could not create login token for %s"
msgstr "Nelze uložin informace o obrázku"
-#: classes/Message.php:45
+#. TRANS: Exception thrown when database name or Data Source Name could not be found.
+#: classes/Memcached_DataObject.php:533
+msgid "No database name or DSN found anywhere."
+msgstr ""
+
+#. TRANS: Client exception thrown when a user tries to send a direct message while being banned from sending them.
+#: classes/Message.php:46
msgid "You are banned from sending direct messages."
msgstr ""
-#: classes/Message.php:61
+#. TRANS: Message given when a message could not be stored on the server.
+#: classes/Message.php:63
msgid "Could not insert message."
msgstr ""
-#: classes/Message.php:71
+#. TRANS: Message given when a message could not be updated on the server.
+#: classes/Message.php:74
msgid "Could not update message with new URI."
msgstr ""
+#. TRANS: Server exception thrown when a user profile for a notice cannot be found.
+#. TRANS: %1$d is a profile ID (number), %2$d is a notice ID (number).
+#: classes/Notice.php:98
+#, php-format
+msgid "No such profile (%1$d) for notice (%2$d)."
+msgstr ""
+
#. TRANS: Server exception. %s are the error details.
-#: classes/Notice.php:182
+#: classes/Notice.php:190
#, fuzzy, php-format
msgid "Database error inserting hashtag: %s"
msgstr "Chyba v DB při vkládání odpovědi: %s"
-#: classes/Notice.php:251
+#. TRANS: Client exception thrown if a notice contains too many characters.
+#: classes/Notice.php:260
#, fuzzy
msgid "Problem saving notice. Too long."
msgstr "Problém při ukládání sdělení"
-#: classes/Notice.php:255
+#. TRANS: Client exception thrown when trying to save a notice for an unknown user.
+#: classes/Notice.php:265
#, fuzzy
msgid "Problem saving notice. Unknown user."
msgstr "Problém při ukládání sdělení"
-#: classes/Notice.php:260
+#. TRANS: Client exception thrown when a user tries to post too many notices in a given time frame.
+#: classes/Notice.php:271
msgid ""
"Too many notices too fast; take a breather and post again in a few minutes."
msgstr ""
-#: classes/Notice.php:266
+#. TRANS: Client exception thrown when a user tries to post too many duplicate notices in a given time frame.
+#: classes/Notice.php:278
msgid ""
"Too many duplicate messages too quickly; take a breather and post again in a "
"few minutes."
msgstr ""
-#: classes/Notice.php:272
+#. TRANS: Client exception thrown when a user tries to post while being banned.
+#: classes/Notice.php:286
msgid "You are banned from posting notices on this site."
msgstr ""
-#: classes/Notice.php:338 classes/Notice.php:364
+#. TRANS: Server exception thrown when a notice cannot be saved.
+#. TRANS: Server exception thrown when a notice cannot be updated.
+#: classes/Notice.php:353 classes/Notice.php:380
msgid "Problem saving notice."
msgstr "Problém při ukládání sdělení"
-#: classes/Notice.php:973
+#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups().
+#: classes/Notice.php:892
+msgid "Bad type provided to saveKnownGroups"
+msgstr ""
+
+#. TRANS: Server exception thrown when an update for a group inbox fails.
+#: classes/Notice.php:991
#, fuzzy
msgid "Problem saving group inbox."
msgstr "Problém při ukládání sdělení"
#. TRANS: Message used to repeat a notice. RT is the abbreviation of 'retweet'.
#. TRANS: %1$s is the repeated user's name, %2$s is the repeated notice.
-#: classes/Notice.php:1564
+#: classes/Notice.php:1614
#, php-format
msgid "RT @%1$s %2$s"
msgstr ""
-#: classes/Subscription.php:74 lib/oauthstore.php:465
+#. TRANS: Exception thrown when trying to revoke an existing role for a user that does not exist.
+#. TRANS: %1$s is the role name, %2$s is the user ID (number).
+#: classes/Profile.php:740
+#, php-format
+msgid "Cannot revoke role \"%1$s\" for user #%2$d; does not exist."
+msgstr ""
+
+#. TRANS: Exception thrown when trying to revoke a role for a user with a failing database query.
+#. TRANS: %1$s is the role name, %2$s is the user ID (number).
+#: classes/Profile.php:749
+#, php-format
+msgid "Cannot revoke role \"%1$s\" for user #%2$d; database error."
+msgstr ""
+
+#. TRANS: Exception thrown when a right for a non-existing user profile is checked.
+#: classes/Remote_profile.php:54
+#, fuzzy
+msgid "Missing profile."
+msgstr "Uživatel nemá profil."
+
+#. TRANS: Exception thrown when a tag cannot be saved.
+#: classes/Status_network.php:346
+#, fuzzy
+msgid "Unable to save tag."
+msgstr "Problém při ukládání sdělení"
+
+#. TRANS: Exception thrown when trying to subscribe while being banned from subscribing.
+#: classes/Subscription.php:75 lib/oauthstore.php:465
msgid "You have been banned from subscribing."
msgstr ""
-#: classes/Subscription.php:78
+#. TRANS: Exception thrown when trying to subscribe while already subscribed.
+#: classes/Subscription.php:80
msgid "Already subscribed!"
msgstr ""
-#: classes/Subscription.php:82
+#. TRANS: Exception thrown when trying to subscribe to a user who has blocked the subscribing user.
+#: classes/Subscription.php:85
#, fuzzy
msgid "User has blocked you."
msgstr "Uživatel nemá profil."
-#: classes/Subscription.php:167
+#. TRANS: Exception thrown when trying to unsibscribe without a subscription.
+#: classes/Subscription.php:171
#, fuzzy
msgid "Not subscribed!"
msgstr "Nepřihlášen!"
-#: classes/Subscription.php:173
+#. TRANS: Exception thrown when trying to unsubscribe a user from themselves.
+#: classes/Subscription.php:178
#, fuzzy
-msgid "Couldn't delete self-subscription."
+msgid "Could not delete self-subscription."
msgstr "Nelze smazat odebírání"
-#: classes/Subscription.php:200
+#. TRANS: Exception thrown when the OMB token for a subscription could not deleted on the server.
+#: classes/Subscription.php:206
#, fuzzy
-msgid "Couldn't delete subscription OMB token."
+msgid "Could not delete subscription OMB token."
msgstr "Nelze smazat odebírání"
-#: classes/Subscription.php:211
-msgid "Couldn't delete subscription."
+#. TRANS: Exception thrown when a subscription could not be deleted on the server.
+#: classes/Subscription.php:218
+#, fuzzy
+msgid "Could not delete subscription."
msgstr "Nelze smazat odebírání"
-#: classes/User.php:363
+#. TRANS: Notice given on user registration.
+#. TRANS: %1$s is the sitename, $2$s is the registering user's nickname.
+#: classes/User.php:365
#, php-format
msgid "Welcome to %1$s, @%2$s!"
msgstr ""
-#: classes/User_group.php:480
+#. TRANS: Server exception thrown when creating a group failed.
+#: classes/User_group.php:496
#, fuzzy
msgid "Could not create group."
msgstr "Nelze uložin informace o obrázku"
-#: classes/User_group.php:489
+#. TRANS: Server exception thrown when updating a group URI failed.
+#: classes/User_group.php:506
#, fuzzy
msgid "Could not set group URI."
msgstr "Nelze vytvořit odebírat"
-#: classes/User_group.php:510
+#. TRANS: Server exception thrown when setting group membership failed.
+#: classes/User_group.php:529
#, fuzzy
msgid "Could not set group membership."
msgstr "Nelze vytvořit odebírat"
-#: classes/User_group.php:524
+#. TRANS: Server exception thrown when saving local group information failed.
+#: classes/User_group.php:544
#, fuzzy
msgid "Could not save local group info."
msgstr "Nelze vytvořit odebírat"
@@ -6323,7 +6432,7 @@ msgid ""
"users in conversation. People can send you messages for your eyes only."
msgstr ""
-#: lib/mailbox.php:227 lib/noticelist.php:497
+#: lib/mailbox.php:227 lib/noticelist.php:505
#, fuzzy
msgid "from"
msgstr " od "
@@ -6379,25 +6488,25 @@ msgstr ""
msgid "File upload stopped by extension."
msgstr ""
-#: lib/mediafile.php:179 lib/mediafile.php:216
+#: lib/mediafile.php:179 lib/mediafile.php:217
msgid "File exceeds user's quota."
msgstr ""
-#: lib/mediafile.php:196 lib/mediafile.php:233
+#: lib/mediafile.php:197 lib/mediafile.php:234
msgid "File could not be moved to destination directory."
msgstr ""
-#: lib/mediafile.php:201 lib/mediafile.php:237
+#: lib/mediafile.php:202 lib/mediafile.php:238
#, fuzzy
msgid "Could not determine file's MIME type."
msgstr "Nelze aktualizovat uživatele"
-#: lib/mediafile.php:270
+#: lib/mediafile.php:318
#, php-format
msgid " Try using another %s format."
msgstr ""
-#: lib/mediafile.php:275
+#: lib/mediafile.php:323
#, php-format
msgid "%s is not a supported file type on this server."
msgstr ""
@@ -6456,54 +6565,54 @@ msgid ""
msgstr ""
#. TRANS: Used in coordinates as abbreviation of north
-#: lib/noticelist.php:430
+#: lib/noticelist.php:436
msgid "N"
msgstr ""
#. TRANS: Used in coordinates as abbreviation of south
-#: lib/noticelist.php:432
+#: lib/noticelist.php:438
msgid "S"
msgstr ""
#. TRANS: Used in coordinates as abbreviation of east
-#: lib/noticelist.php:434
+#: lib/noticelist.php:440
msgid "E"
msgstr ""
#. TRANS: Used in coordinates as abbreviation of west
-#: lib/noticelist.php:436
+#: lib/noticelist.php:442
msgid "W"
msgstr ""
-#: lib/noticelist.php:438
+#: lib/noticelist.php:444
#, php-format
msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
msgstr ""
-#: lib/noticelist.php:447
+#: lib/noticelist.php:453
msgid "at"
msgstr ""
-#: lib/noticelist.php:559
+#: lib/noticelist.php:567
#, fuzzy
msgid "in context"
msgstr "Žádný obsah!"
-#: lib/noticelist.php:594
+#: lib/noticelist.php:602
#, fuzzy
msgid "Repeated by"
msgstr "Vytvořit"
-#: lib/noticelist.php:621
+#: lib/noticelist.php:629
msgid "Reply to this notice"
msgstr ""
-#: lib/noticelist.php:622
+#: lib/noticelist.php:630
#, fuzzy
msgid "Reply"
msgstr "odpovÄ›Ä"
-#: lib/noticelist.php:666
+#: lib/noticelist.php:674
#, fuzzy
msgid "Notice repeated"
msgstr "Sdělení"
@@ -6772,9 +6881,8 @@ msgid "This server cannot handle theme uploads without ZIP support."
msgstr ""
#: lib/themeuploader.php:58 lib/themeuploader.php:61
-#, fuzzy
-msgid "Theme upload missing or failed."
-msgstr "Chyba systému při nahrávání souboru"
+msgid "The theme file is missing or the upload failed."
+msgstr ""
#: lib/themeuploader.php:91 lib/themeuploader.php:102
#: lib/themeuploader.php:253 lib/themeuploader.php:257
diff --git a/locale/da/LC_MESSAGES/statusnet.po b/locale/da/LC_MESSAGES/statusnet.po
new file mode 100644
index 000000000..772ca0e56
--- /dev/null
+++ b/locale/da/LC_MESSAGES/statusnet.po
@@ -0,0 +1,6737 @@
+# Translation of StatusNet to Danish
+#
+# Author@translatewiki.net: Mstenbaek
+# --
+# This file is distributed under the same license as the StatusNet package.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: StatusNet\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2010-08-03 13:21+0000\n"
+"PO-Revision-Date: 2010-08-03 13:21:48+0000\n"
+"Language-Team: Danish\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: MediaWiki 1.17alpha (r70381); Translate extension (2010-07-21)\n"
+"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
+"X-Language-Code: da\n"
+"X-Message-Group: out-statusnet\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. TRANS: Page title
+#. TRANS: Menu item for site administration
+#: actions/accessadminpanel.php:55 lib/adminpanelaction.php:376
+msgid "Access"
+msgstr "Adgang"
+
+#. TRANS: Page notice
+#: actions/accessadminpanel.php:67
+msgid "Site access settings"
+msgstr "Indstillinger for adgang til webstedet"
+
+#. TRANS: Form legend for registration form.
+#: actions/accessadminpanel.php:161
+msgid "Registration"
+msgstr "Registrering"
+
+#. TRANS: Checkbox instructions for admin setting "Private"
+#: actions/accessadminpanel.php:165
+msgid "Prohibit anonymous users (not logged in) from viewing site?"
+msgstr "Forhindre anonyme brugere (som ikke er logget ind) i at se webstedet?"
+
+#. TRANS: Checkbox label for prohibiting anonymous users from viewing site.
+#: actions/accessadminpanel.php:167
+msgctxt "LABEL"
+msgid "Private"
+msgstr "Privat"
+
+#. TRANS: Checkbox instructions for admin setting "Invite only"
+#: actions/accessadminpanel.php:174
+msgid "Make registration invitation only."
+msgstr "Registreing er kun mulig gennem en invitation"
+
+#. TRANS: Checkbox label for configuring site as invite only.
+#: actions/accessadminpanel.php:176
+msgid "Invite only"
+msgstr "Kun Inviterede"
+
+#. TRANS: Checkbox instructions for admin setting "Closed" (no new registrations)
+#: actions/accessadminpanel.php:183
+msgid "Disable new registrations."
+msgstr "Forhindre nye registreringer"
+
+#. TRANS: Checkbox label for disabling new user registrations.
+#: actions/accessadminpanel.php:185
+msgid "Closed"
+msgstr "Lukket"
+
+#. TRANS: Title / tooltip for button to save access settings in site admin panel
+#: actions/accessadminpanel.php:202
+msgid "Save access settings"
+msgstr "Gem adgangsindstillinger"
+
+#. TRANS: Button label to save e-mail preferences.
+#. TRANS: Button label to save IM preferences.
+#. TRANS: Button label to save SMS preferences.
+#. TRANS: Button label
+#: actions/accessadminpanel.php:203 actions/emailsettings.php:224
+#: actions/imsettings.php:184 actions/smssettings.php:209
+#: lib/applicationeditform.php:361
+msgctxt "BUTTON"
+msgid "Save"
+msgstr "Gem"
+
+#. TRANS: Server error when page not found (404)
+#: actions/all.php:68 actions/public.php:98 actions/replies.php:93
+#: actions/showfavorites.php:138 actions/tag.php:52
+msgid "No such page."
+msgstr "Siden findes ikke"
+
+#: actions/all.php:79 actions/allrss.php:68
+#: actions/apiaccountupdatedeliverydevice.php:114
+#: actions/apiaccountupdateprofile.php:105
+#: actions/apiaccountupdateprofilebackgroundimage.php:116
+#: actions/apiaccountupdateprofileimage.php:105 actions/apiblockcreate.php:97
+#: actions/apiblockdestroy.php:96 actions/apidirectmessage.php:77
+#: actions/apidirectmessagenew.php:74 actions/apigroupcreate.php:113
+#: actions/apigroupismember.php:91 actions/apigroupjoin.php:100
+#: actions/apigroupleave.php:100 actions/apigrouplist.php:73
+#: actions/apistatusesupdate.php:229 actions/apisubscriptions.php:87
+#: actions/apitimelinefavorites.php:72 actions/apitimelinefriends.php:174
+#: actions/apitimelinehome.php:80 actions/apitimelinementions.php:80
+#: actions/apitimelineuser.php:82 actions/avatarbynickname.php:75
+#: actions/favoritesrss.php:74 actions/foaf.php:40 actions/foaf.php:58
+#: actions/hcard.php:67 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/rsd.php:116 actions/showfavorites.php:105
+#: actions/userbyid.php:74 actions/usergroups.php:93 actions/userrss.php:40
+#: actions/xrds.php:71 lib/command.php:478 lib/galleryaction.php:59
+#: lib/mailbox.php:82 lib/profileaction.php:77
+msgid "No such user."
+msgstr "Ingen bruger fundet."
+
+#. TRANS: Page title. %1$s is user nickname, %2$d is page number
+#: actions/all.php:90
+#, php-format
+msgid "%1$s and friends, page %2$d"
+msgstr "%1$s og venner, side %2$d"
+
+#. TRANS: Page title. %1$s is user nickname
+#. TRANS: H1 text. %1$s is user nickname
+#. TRANS: Message is used as link title. %s is a user nickname.
+#: actions/all.php:93 actions/all.php:185 actions/allrss.php:116
+#: actions/apitimelinefriends.php:210 actions/apitimelinehome.php:116
+#: lib/personalgroupnav.php:100
+#, php-format
+msgid "%s and friends"
+msgstr "%s og venner"
+
+#. TRANS: %1$s is user nickname
+#: actions/all.php:107
+#, php-format
+msgid "Feed for friends of %s (RSS 1.0)"
+msgstr "Feed for venner af %s (RSS 1.0)"
+
+#. TRANS: %1$s is user nickname
+#: actions/all.php:116
+#, php-format
+msgid "Feed for friends of %s (RSS 2.0)"
+msgstr "Feed for venner af %s (RSS 1.0)"
+
+#. TRANS: %1$s is user nickname
+#: actions/all.php:125
+#, php-format
+msgid "Feed for friends of %s (Atom)"
+msgstr "Feed for venner af %s (Atom)"
+
+#. TRANS: %1$s is user nickname
+#: actions/all.php:138
+#, php-format
+msgid ""
+"This is the timeline for %s and friends but no one has posted anything yet."
+msgstr ""
+"Dette er tidslinjen for %s og venner, men ingen har skrevet noget endnu."
+
+#: actions/all.php:143
+#, php-format
+msgid ""
+"Try subscribing to more people, [join a group](%%action.groups%%) or post "
+"something yourself."
+msgstr ""
+"Prøv at abonnere på flere personer, [deltage i en gruppe] (%%action.groups%"
+"%) eller skriv noget selv."
+
+#. TRANS: %1$s is user nickname, %2$s is user nickname, %2$s is user nickname prefixed with "@"
+#: actions/all.php:146
+#, php-format
+msgid ""
+"You can try to [nudge %1$s](../%2$s) from their profile or [post something "
+"to them](%%%%action.newnotice%%%%?status_textarea=%3$s)."
+msgstr ""
+
+#: actions/all.php:149 actions/replies.php:210 actions/showstream.php:211
+#, fuzzy, php-format
+msgid ""
+"Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
+"post a notice to them."
+msgstr ""
+"Hvorfor ikke [registrere en konto] (%%action.register%%), og vær den første "
+"til at tilføje en meddelelse til dine favoritter!"
+
+#. TRANS: H1 text
+#: actions/all.php:182
+msgid "You and friends"
+msgstr "Du og vennerne"
+
+#. TRANS: Message is used as link description. %1$s is a username, %2$s is a site name.
+#. TRANS: Message is used as a subtitle. %1$s is a user nickname, %2$s is a site name.
+#: actions/allrss.php:121 actions/apitimelinefriends.php:216
+#: actions/apitimelinehome.php:122
+#, php-format
+msgid "Updates from %1$s and friends on %2$s!"
+msgstr "Opdateringer fra %1$s og venner på %2$s!"
+
+#: actions/apiaccountratelimitstatus.php:72
+#: actions/apiaccountupdatedeliverydevice.php:94
+#: actions/apiaccountupdateprofile.php:97
+#: actions/apiaccountupdateprofilebackgroundimage.php:94
+#: actions/apiaccountupdateprofilecolors.php:118
+#: actions/apiaccountverifycredentials.php:70 actions/apidirectmessage.php:156
+#: actions/apifavoritecreate.php:100 actions/apifavoritedestroy.php:101
+#: actions/apifriendshipscreate.php:100 actions/apifriendshipsdestroy.php:100
+#: actions/apifriendshipsshow.php:128 actions/apigroupcreate.php:139
+#: actions/apigroupismember.php:115 actions/apigroupjoin.php:156
+#: actions/apigroupleave.php:142 actions/apigrouplist.php:137
+#: actions/apigrouplistall.php:122 actions/apigroupmembership.php:107
+#: actions/apigroupshow.php:116 actions/apihelptest.php:88
+#: actions/apistatusesdestroy.php:104 actions/apistatusesretweets.php:112
+#: actions/apistatusesshow.php:109 actions/apistatusnetconfig.php:141
+#: actions/apistatusnetversion.php:93 actions/apisubscriptions.php:111
+#: actions/apitimelinefavorites.php:174 actions/apitimelinefriends.php:271
+#: actions/apitimelinegroup.php:154 actions/apitimelinehome.php:175
+#: actions/apitimelinementions.php:174 actions/apitimelinepublic.php:241
+#: actions/apitimelineretweetedtome.php:121
+#: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161
+#: actions/apitimelineuser.php:163 actions/apiusershow.php:101
+msgid "API method not found."
+msgstr "API metode ikke fundet."
+
+#: actions/apiaccountupdatedeliverydevice.php:86
+#: actions/apiaccountupdateprofile.php:89
+#: actions/apiaccountupdateprofilebackgroundimage.php:86
+#: actions/apiaccountupdateprofilecolors.php:110
+#: actions/apiaccountupdateprofileimage.php:84 actions/apiblockcreate.php:89
+#: actions/apiblockdestroy.php:88 actions/apidirectmessagenew.php:109
+#: actions/apifavoritecreate.php:91 actions/apifavoritedestroy.php:92
+#: actions/apifriendshipscreate.php:91 actions/apifriendshipsdestroy.php:91
+#: actions/apigroupcreate.php:105 actions/apigroupjoin.php:92
+#: actions/apigroupleave.php:92 actions/apimediaupload.php:67
+#: actions/apistatusesretweet.php:65 actions/apistatusesupdate.php:198
+msgid "This method requires a POST."
+msgstr "Denne metode kræver en POST."
+
+#: actions/apiaccountupdatedeliverydevice.php:106
+msgid ""
+"You must specify a parameter named 'device' with a value of one of: sms, im, "
+"none."
+msgstr ""
+"Du skal angive en parameter med navnet 'device', med værdien sat til en af "
+"følgende: sms, im, none."
+
+#: actions/apiaccountupdatedeliverydevice.php:133
+msgid "Could not update user."
+msgstr "Kunne ikke opdatere brugeren."
+
+#: actions/apiaccountupdateprofile.php:112
+#: actions/apiaccountupdateprofilebackgroundimage.php:194
+#: actions/apiaccountupdateprofilecolors.php:185
+#: actions/apiaccountupdateprofileimage.php:130 actions/apiusershow.php:108
+#: actions/avatarbynickname.php:80 actions/foaf.php:65 actions/hcard.php:74
+#: actions/replies.php:80 actions/usergroups.php:100 lib/galleryaction.php:66
+#: lib/profileaction.php:84
+msgid "User has no profile."
+msgstr "Brugeren har ingen profil."
+
+#: actions/apiaccountupdateprofile.php:147
+msgid "Could not save profile."
+msgstr "Kunne ikke gemme profilen."
+
+#: actions/apiaccountupdateprofilebackgroundimage.php:108
+#: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80
+#: actions/apistatusesupdate.php:212 actions/avatarsettings.php:257
+#: actions/designadminpanel.php:123 actions/editapplication.php:118
+#: actions/newapplication.php:101 actions/newnotice.php:94
+#: lib/designsettings.php:283
+#, php-format
+msgid ""
+"The server was unable to handle that much POST data (%s bytes) due to its "
+"current configuration."
+msgstr ""
+"Serveren var ikke i stand til at håndtere så meget POST data (%s bytes) på "
+"grund af sin nuværende konfiguration."
+
+#: actions/apiaccountupdateprofilebackgroundimage.php:136
+#: actions/apiaccountupdateprofilebackgroundimage.php:146
+#: actions/apiaccountupdateprofilecolors.php:164
+#: actions/apiaccountupdateprofilecolors.php:174
+#: actions/groupdesignsettings.php:290 actions/groupdesignsettings.php:300
+#: actions/userdesignsettings.php:210 actions/userdesignsettings.php:220
+#: actions/userdesignsettings.php:263 actions/userdesignsettings.php:273
+msgid "Unable to save your design settings."
+msgstr "Kunne ikke gemme dine design indstillinger."
+
+#: actions/apiaccountupdateprofilebackgroundimage.php:187
+#: actions/apiaccountupdateprofilecolors.php:142
+msgid "Could not update your design."
+msgstr "Kunne ikke opdatere dit design."
+
+#: actions/apiblockcreate.php:105
+msgid "You cannot block yourself!"
+msgstr "Du kan ikke blokere dig selv!"
+
+#: actions/apiblockcreate.php:126
+msgid "Block user failed."
+msgstr "Blokering af bruger mislykkedes"
+
+#: actions/apiblockdestroy.php:114
+msgid "Unblock user failed."
+msgstr "Ophæv blokering af bruger mislykkedes."
+
+#: actions/apidirectmessage.php:89
+#, php-format
+msgid "Direct messages from %s"
+msgstr "Direkte beskeder fra %s"
+
+#: actions/apidirectmessage.php:93
+#, php-format
+msgid "All the direct messages sent from %s"
+msgstr "Alle direkte beskeder, sendt fra %s"
+
+#: actions/apidirectmessage.php:101
+#, php-format
+msgid "Direct messages to %s"
+msgstr "Direkte beskeder til %s"
+
+#: actions/apidirectmessage.php:105
+#, php-format
+msgid "All the direct messages sent to %s"
+msgstr "Alle direkte beskeder, sendt til %s"
+
+#: actions/apidirectmessagenew.php:118
+msgid "No message text!"
+msgstr "Ingen besked tekst!"
+
+#: actions/apidirectmessagenew.php:127 actions/newmessage.php:150
+#, php-format
+msgid "That's too long. Max message size is %d chars."
+msgstr "Det er for langt. Maksimal besked størrelse er %d tegn."
+
+#: actions/apidirectmessagenew.php:138
+msgid "Recipient user not found."
+msgstr "Modtager bruger ikke fundet"
+
+#: actions/apidirectmessagenew.php:142
+msgid "Can't send direct messages to users who aren't your friend."
+msgstr "Kan ikke sende direkte beskeder til brugere, som ikke din ven."
+
+#: actions/apifavoritecreate.php:109 actions/apifavoritedestroy.php:110
+#: actions/apistatusesdestroy.php:121
+msgid "No status found with that ID."
+msgstr "Ingen status fundet med dette ID."
+
+#: actions/apifavoritecreate.php:120
+msgid "This status is already a favorite."
+msgstr "Denne status er allerede en favorit."
+
+#: actions/apifavoritecreate.php:131 actions/favor.php:84 lib/command.php:285
+msgid "Could not create favorite."
+msgstr "Kunne ikke oprette favorit."
+
+#: actions/apifavoritedestroy.php:123
+msgid "That status is not a favorite."
+msgstr "Denne status er ikke en favorit."
+
+#: actions/apifavoritedestroy.php:135 actions/disfavor.php:87
+msgid "Could not delete favorite."
+msgstr "Kunne ikke slette favorit."
+
+#: actions/apifriendshipscreate.php:109
+msgid "Could not follow user: profile not found."
+msgstr ""
+
+#: actions/apifriendshipscreate.php:118
+#, php-format
+msgid "Could not follow user: %s is already on your list."
+msgstr "Kunne ikke følge bruger: %s er allerede på din liste."
+
+#: actions/apifriendshipsdestroy.php:109
+msgid "Could not unfollow user: User not found."
+msgstr "Kunne ikke stoppe følgeskab af bruger: Bruger ikke fundet."
+
+#: actions/apifriendshipsdestroy.php:120
+msgid "You cannot unfollow yourself."
+msgstr "Du kan ikke ophæve følgeskab til dig selv."
+
+#: actions/apifriendshipsexists.php:91
+msgid "Two valid IDs or screen_names must be supplied."
+msgstr ""
+
+#: actions/apifriendshipsshow.php:134
+msgid "Could not determine source user."
+msgstr "Kunne ikke finde kilde bruger"
+
+#: actions/apifriendshipsshow.php:142
+msgid "Could not find target user."
+msgstr "Kunne ikke finde mål bruger."
+
+#: actions/apigroupcreate.php:167 actions/editgroup.php:186
+#: actions/newgroup.php:126 actions/profilesettings.php:215
+#: actions/register.php:212
+msgid "Nickname must have only lowercase letters and numbers and no spaces."
+msgstr "Kaldenavn må kun have små bogstaver og tal og ingen mellemrum."
+
+#: actions/apigroupcreate.php:176 actions/editgroup.php:190
+#: actions/newgroup.php:130 actions/profilesettings.php:238
+#: actions/register.php:215
+msgid "Nickname already in use. Try another one."
+msgstr "Kaldenavn allerede er i brug. Prøv med et andet."
+
+#: actions/apigroupcreate.php:183 actions/editgroup.php:193
+#: actions/newgroup.php:133 actions/profilesettings.php:218
+#: actions/register.php:217
+msgid "Not a valid nickname."
+msgstr "Ikke et gyldigt kaldenavn"
+
+#: actions/apigroupcreate.php:199 actions/editapplication.php:215
+#: actions/editgroup.php:199 actions/newapplication.php:203
+#: actions/newgroup.php:139 actions/profilesettings.php:222
+#: actions/register.php:224
+msgid "Homepage is not a valid URL."
+msgstr "Hjemmesiden er ikke en gyldig URL adresse."
+
+#: actions/apigroupcreate.php:208 actions/editgroup.php:202
+#: actions/newgroup.php:142 actions/profilesettings.php:225
+#: actions/register.php:227
+msgid "Full name is too long (max 255 chars)."
+msgstr "Fulde navn er for langt (max 255 tegn)."
+
+#: actions/apigroupcreate.php:216 actions/editapplication.php:190
+#: actions/newapplication.php:172
+#, php-format
+msgid "Description is too long (max %d chars)."
+msgstr "Beskrivelse er for lang (max %d tegn)."
+
+#: actions/apigroupcreate.php:227 actions/editgroup.php:208
+#: actions/newgroup.php:148 actions/profilesettings.php:232
+#: actions/register.php:234
+msgid "Location is too long (max 255 chars)."
+msgstr "Placering er for lang (max 255 tegn)."
+
+#: actions/apigroupcreate.php:246 actions/editgroup.php:219
+#: actions/newgroup.php:159
+#, php-format
+msgid "Too many aliases! Maximum %d."
+msgstr "Alt for mange aliaser! Maksimum %d."
+
+#: actions/apigroupcreate.php:267
+#, php-format
+msgid "Invalid alias: \"%s\"."
+msgstr "Ugyldigt alias: \"%s\"."
+
+#: actions/apigroupcreate.php:276 actions/editgroup.php:232
+#: actions/newgroup.php:172
+#, php-format
+msgid "Alias \"%s\" already in use. Try another one."
+msgstr "Alias \"%s\" er allerede i brug. Prøv med et andet."
+
+#: actions/apigroupcreate.php:289 actions/editgroup.php:238
+#: actions/newgroup.php:178
+msgid "Alias can't be the same as nickname."
+msgstr "Alias kan ikke være det samme som kaldenavn."
+
+#: actions/apigroupismember.php:96 actions/apigroupjoin.php:105
+#: actions/apigroupleave.php:105 actions/apigroupmembership.php:92
+#: actions/apigroupshow.php:83 actions/apitimelinegroup.php:92
+msgid "Group not found."
+msgstr "Gruppen blev ikke fundet."
+
+#: actions/apigroupjoin.php:111 actions/joingroup.php:100
+msgid "You are already a member of that group."
+msgstr "Du er allerede medlem af denne gruppe."
+
+#: actions/apigroupjoin.php:120 actions/joingroup.php:105 lib/command.php:327
+msgid "You have been blocked from that group by the admin."
+msgstr "Du er blevet blokeret fra denne gruppe af administratoren."
+
+#: actions/apigroupjoin.php:139 actions/joingroup.php:134
+#, php-format
+msgid "Could not join user %1$s to group %2$s."
+msgstr "Kunne ikke tilslutte bruger %1$s til gruppe %2$s."
+
+#: actions/apigroupleave.php:115
+msgid "You are not a member of this group."
+msgstr "Du er ikke medlem af denne gruppe."
+
+#: actions/apigroupleave.php:125 actions/leavegroup.php:129
+#, php-format
+msgid "Could not remove user %1$s from group %2$s."
+msgstr "Kunne ikke fjerne brugeren %1$s fra gruppen %2$s."
+
+#. TRANS: %s is a user name
+#: actions/apigrouplist.php:98
+#, php-format
+msgid "%s's groups"
+msgstr "%s's grupper"
+
+#. TRANS: Meant to convey the user %2$s is a member of each of the groups listed on site %1$s
+#: actions/apigrouplist.php:108
+#, php-format
+msgid "%1$s groups %2$s is a member of."
+msgstr "%1$s grupper som %2$s er medlem af."
+
+#. TRANS: Message is used as a title. %s is a site name.
+#. TRANS: Message is used as a page title. %s is a nick name.
+#: actions/apigrouplistall.php:92 actions/usergroups.php:63
+#, php-format
+msgid "%s groups"
+msgstr "%s's grupper"
+
+#: actions/apigrouplistall.php:96
+#, php-format
+msgid "groups on %s"
+msgstr "grupper på %s"
+
+#: actions/apimediaupload.php:99
+#, fuzzy
+msgid "Upload failed."
+msgstr "Ophæv blokering af bruger mislykkedes."
+
+#: actions/apioauthauthorize.php:101
+msgid "No oauth_token parameter provided."
+msgstr "Ingen oauth_token parameter angivet."
+
+#: actions/apioauthauthorize.php:106
+msgid "Invalid token."
+msgstr "Ugyldigt token."
+
+#: actions/apioauthauthorize.php:123 actions/avatarsettings.php:268
+#: actions/deletenotice.php:169 actions/disfavor.php:74
+#: actions/emailsettings.php:267 actions/favor.php:75 actions/geocode.php:55
+#: actions/groupblock.php:66 actions/grouplogo.php:312
+#: actions/groupunblock.php:66 actions/imsettings.php:227
+#: actions/invite.php:56 actions/login.php:137 actions/makeadmin.php:66
+#: actions/newmessage.php:135 actions/newnotice.php:103 actions/nudge.php:80
+#: actions/oauthappssettings.php:159 actions/oauthconnectionssettings.php:135
+#: actions/othersettings.php:145 actions/passwordsettings.php:138
+#: actions/profilesettings.php:194 actions/recoverpassword.php:350
+#: actions/register.php:172 actions/remotesubscribe.php:77
+#: actions/repeat.php:83 actions/smssettings.php:256 actions/subedit.php:38
+#: actions/subscribe.php:86 actions/tagother.php:166
+#: actions/unsubscribe.php:69 actions/userauthorization.php:52
+#: lib/designsettings.php:294
+msgid "There was a problem with your session token. Try again, please."
+msgstr "Der var et problem med din session token. Venligst prøv igen."
+
+#: actions/apioauthauthorize.php:135
+msgid "Invalid nickname / password!"
+msgstr "Ugyldig kaldenavn / password!"
+
+#: actions/apioauthauthorize.php:159
+msgid "Database error deleting OAuth application user."
+msgstr "Databasefejl ved sletning af OAuth applikationsbruger."
+
+#: actions/apioauthauthorize.php:185
+msgid "Database error inserting OAuth application user."
+msgstr "Databasefejl ved tilføjelse af OAuth applikationsbruger."
+
+#: actions/apioauthauthorize.php:214
+#, php-format
+msgid ""
+"The request token %s has been authorized. Please exchange it for an access "
+"token."
+msgstr ""
+"Anmodnings-token %s er blevet godkendt. Venligst anvend den til en Adgangs-"
+"token."
+
+#: actions/apioauthauthorize.php:227
+#, php-format
+msgid "The request token %s has been denied and revoked."
+msgstr "Anmodnings-token %s er blevet afvist og trukket tilbage."
+
+#. TRANS: Message given submitting a form with an unknown action in e-mail settings.
+#. TRANS: Message given submitting a form with an unknown action in IM settings.
+#. TRANS: Message given submitting a form with an unknown action in SMS settings.
+#: actions/apioauthauthorize.php:232 actions/avatarsettings.php:281
+#: actions/designadminpanel.php:104 actions/editapplication.php:139
+#: actions/emailsettings.php:286 actions/grouplogo.php:322
+#: actions/imsettings.php:242 actions/newapplication.php:121
+#: actions/oauthconnectionssettings.php:147 actions/recoverpassword.php:44
+#: actions/smssettings.php:277 lib/designsettings.php:304
+msgid "Unexpected form submission."
+msgstr "Uventet formularafsendelse."
+
+#: actions/apioauthauthorize.php:259
+msgid "An application would like to connect to your account"
+msgstr "En applikation vil gerne forbinde til din konto"
+
+#: actions/apioauthauthorize.php:276
+msgid "Allow or deny access"
+msgstr "Tillad eller Afvis adgang"
+
+#: 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> af %2$s</strong> vil gerne <strong>%3$s</"
+"strong> dine data for konto %4$s. Du bør kun give adgang til din %4$s konto "
+"til tredjemand du stoler på."
+
+#. TRANS: Main menu option when logged in for access to user settings
+#: actions/apioauthauthorize.php:310 lib/action.php:450
+msgid "Account"
+msgstr "Konto"
+
+#: actions/apioauthauthorize.php:313 actions/login.php:252
+#: actions/profilesettings.php:106 actions/register.php:431
+#: actions/showgroup.php:245 actions/tagother.php:94
+#: actions/userauthorization.php:145 lib/groupeditform.php:152
+#: lib/userprofile.php:132
+msgid "Nickname"
+msgstr "Kaldenavn"
+
+#. TRANS: Link description in user account settings menu.
+#: actions/apioauthauthorize.php:316 actions/login.php:255
+#: actions/register.php:436 lib/accountsettingsaction.php:125
+msgid "Password"
+msgstr "Adgangskode"
+
+#: actions/apioauthauthorize.php:328
+msgid "Deny"
+msgstr "Nægt"
+
+#: actions/apioauthauthorize.php:334
+msgid "Allow"
+msgstr "Tillad"
+
+#: actions/apioauthauthorize.php:351
+msgid "Allow or deny access to your account information."
+msgstr "Tillad eller nægte adgang til dine kontooplysninger."
+
+#: actions/apistatusesdestroy.php:112
+msgid "This method requires a POST or DELETE."
+msgstr "Denne metode kræver en POST eller DELETE."
+
+#: actions/apistatusesdestroy.php:135
+msgid "You may not delete another user's status."
+msgstr "Du kan ikke slette en anden brugers status."
+
+#: actions/apistatusesretweet.php:75 actions/apistatusesretweets.php:72
+#: actions/deletenotice.php:52 actions/shownotice.php:92
+msgid "No such notice."
+msgstr "Ingen sådan meddelelse."
+
+#: actions/apistatusesretweet.php:83
+msgid "Cannot repeat your own notice."
+msgstr "Kan ikke gentage din egen meddelelse."
+
+#: actions/apistatusesretweet.php:91
+msgid "Already repeated that notice."
+msgstr "Allerede gentaget denne medelelse."
+
+#: actions/apistatusesshow.php:139
+msgid "Status deleted."
+msgstr "Status slettet."
+
+#: actions/apistatusesshow.php:145
+msgid "No status with that ID found."
+msgstr "Ingen status med dette ID fundet."
+
+#: actions/apistatusesupdate.php:221
+msgid "Client must provide a 'status' parameter with a value."
+msgstr ""
+
+#: actions/apistatusesupdate.php:242 actions/newnotice.php:155
+#: lib/mailhandler.php:60
+#, php-format
+msgid "That's too long. Max notice size is %d chars."
+msgstr "Det er for langt. Maksimal besked størrelse er %d tegn."
+
+#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96
+msgid "Not found."
+msgstr "Ikke fundet."
+
+#: actions/apistatusesupdate.php:306 actions/newnotice.php:178
+#, php-format
+msgid "Max notice size is %d chars, including attachment URL."
+msgstr "Max meddelelse størrelse er %d tegn, inklusiv vedlagt URL."
+
+#: actions/apisubscriptions.php:232 actions/apisubscriptions.php:262
+msgid "Unsupported format."
+msgstr "Formatet understøttes ikke"
+
+#: actions/apitimelinefavorites.php:110
+#, php-format
+msgid "%1$s / Favorites from %2$s"
+msgstr "%1$s / favoritter fra %2$s"
+
+#: actions/apitimelinefavorites.php:119
+#, php-format
+msgid "%1$s updates favorited by %2$s / %2$s."
+msgstr "%1$s opdateringer favoriseret af %2$s / %2$s."
+
+#: actions/apitimelinementions.php:118
+#, php-format
+msgid "%1$s / Updates mentioning %2$s"
+msgstr "%1$s / opdateringer nævner %2$s"
+
+#: actions/apitimelinementions.php:131
+#, php-format
+msgid "%1$s updates that reply to updates from %2$s / %3$s."
+msgstr "%1$s opdateringer, som svar på opdateringer fra %2$s / %3$s."
+
+#: actions/apitimelinepublic.php:197 actions/publicrss.php:103
+#, php-format
+msgid "%s public timeline"
+msgstr "%s offentlig tidslinie"
+
+#: actions/apitimelinepublic.php:202 actions/publicrss.php:105
+#, php-format
+msgid "%s updates from everyone!"
+msgstr "%s opdateringer fra alle!"
+
+#: actions/apitimelineretweetedtome.php:111
+#, php-format
+msgid "Repeated to %s"
+msgstr "Gentagne til %s"
+
+#: actions/apitimelineretweetsofme.php:114
+#, php-format
+msgid "Repeats of %s"
+msgstr "Gentaget af %s"
+
+#: actions/apitimelinetag.php:105 actions/tag.php:67
+#, php-format
+msgid "Notices tagged with %s"
+msgstr "Bekendtgørelser tagged med %s"
+
+#: actions/apitimelinetag.php:107 actions/tagrss.php:65
+#, php-format
+msgid "Updates tagged with %1$s on %2$s!"
+msgstr "Opdateringer tagged med %1$s på %2$s!"
+
+#: actions/apitrends.php:87
+msgid "API method under construction."
+msgstr ""
+
+#: actions/attachment.php:73
+msgid "No such attachment."
+msgstr "Ingen sådan fil."
+
+#: actions/avatarbynickname.php:59 actions/blockedfromgroup.php:73
+#: actions/editgroup.php:84 actions/groupdesignsettings.php:84
+#: actions/grouplogo.php:86 actions/groupmembers.php:76
+#: actions/grouprss.php:91 actions/showgroup.php:121
+msgid "No nickname."
+msgstr "Ingen kaldenavn."
+
+#: actions/avatarbynickname.php:64
+msgid "No size."
+msgstr "Ingen størrelse."
+
+#: actions/avatarbynickname.php:69
+msgid "Invalid size."
+msgstr "Ugyldig størrelse."
+
+#. TRANS: Link description in user account settings menu.
+#: actions/avatarsettings.php:67 actions/showgroup.php:230
+#: lib/accountsettingsaction.php:118
+msgid "Avatar"
+msgstr "Avatar"
+
+#: actions/avatarsettings.php:78
+#, php-format
+msgid "You can upload your personal avatar. The maximum file size is %s."
+msgstr ""
+"Du kan uploade dine personlige avatar. Den maksimale filstørrelse er %s."
+
+#: actions/avatarsettings.php:106 actions/avatarsettings.php:185
+#: actions/grouplogo.php:181 actions/remotesubscribe.php:191
+#: actions/userauthorization.php:72 actions/userrss.php:108
+msgid "User without matching profile."
+msgstr "Bruger uden matchende profil."
+
+#: actions/avatarsettings.php:119 actions/avatarsettings.php:197
+#: actions/grouplogo.php:254
+msgid "Avatar settings"
+msgstr "Avatar indstillinger"
+
+#: actions/avatarsettings.php:127 actions/avatarsettings.php:205
+#: actions/grouplogo.php:202 actions/grouplogo.php:262
+msgid "Original"
+msgstr "Original"
+
+#: actions/avatarsettings.php:142 actions/avatarsettings.php:217
+#: actions/grouplogo.php:213 actions/grouplogo.php:274
+msgid "Preview"
+msgstr "Forhåndsvisning"
+
+#: actions/avatarsettings.php:149 actions/showapplication.php:252
+#: lib/deleteuserform.php:66 lib/noticelist.php:656
+msgid "Delete"
+msgstr "Slet"
+
+#: actions/avatarsettings.php:166 actions/grouplogo.php:236
+msgid "Upload"
+msgstr "Oplægge"
+
+#: actions/avatarsettings.php:231 actions/grouplogo.php:289
+msgid "Crop"
+msgstr "Beskær"
+
+#: actions/avatarsettings.php:305
+msgid "No file uploaded."
+msgstr "Ingen fil uploaded."
+
+#: actions/avatarsettings.php:332
+msgid "Pick a square area of the image to be your avatar"
+msgstr "Vælg en firkantet område af billedet til at være din avatar"
+
+#: actions/avatarsettings.php:347 actions/grouplogo.php:380
+msgid "Lost our file data."
+msgstr "Mistede vores fil data."
+
+#: actions/avatarsettings.php:370
+msgid "Avatar updated."
+msgstr "Avatar opdateret."
+
+#: actions/avatarsettings.php:373
+msgid "Failed updating avatar."
+msgstr "Mislykket ajourføring af Avatar."
+
+#: actions/avatarsettings.php:397
+msgid "Avatar deleted."
+msgstr "Avatar slettet."
+
+#: actions/block.php:69
+msgid "You already blocked that user."
+msgstr "Du har allerede blokeret for denne bruger."
+
+#: actions/block.php:107 actions/block.php:136 actions/groupblock.php:158
+msgid "Block user"
+msgstr "Bloker bruger"
+
+#: actions/block.php:138
+msgid ""
+"Are you sure you want to block this user? Afterwards, they will be "
+"unsubscribed from you, unable to subscribe to you in the future, and you "
+"will not be notified of any @-replies from them."
+msgstr ""
+"Er du sikker på du vil blokere denne bruger? Bagefter vil de blive afmeldt "
+"fra dig, ude af stand til at abonnere på dig i fremtiden, og du vil ikke "
+"blive underrettet om nogen @-svar fra dem."
+
+#. TRANS: Button label on the user block form.
+#. TRANS: Button label on the delete application form.
+#. TRANS: Button label on the delete notice form.
+#. TRANS: Button label on the delete user form.
+#. TRANS: Button label on the form to block a user from a group.
+#: actions/block.php:153 actions/deleteapplication.php:154
+#: actions/deletenotice.php:147 actions/deleteuser.php:152
+#: actions/groupblock.php:178
+msgctxt "BUTTON"
+msgid "No"
+msgstr "Nej"
+
+#. TRANS: Submit button title for 'No' when blocking a user.
+#. TRANS: Submit button title for 'No' when deleting a user.
+#: actions/block.php:157 actions/deleteuser.php:156
+msgid "Do not block this user"
+msgstr "Bloker ikke denne bruger"
+
+#. TRANS: Button label on the user block form.
+#. TRANS: Button label on the delete application form.
+#. TRANS: Button label on the delete notice form.
+#. TRANS: Button label on the delete user form.
+#. TRANS: Button label on the form to block a user from a group.
+#: actions/block.php:160 actions/deleteapplication.php:161
+#: actions/deletenotice.php:154 actions/deleteuser.php:159
+#: actions/groupblock.php:185
+msgctxt "BUTTON"
+msgid "Yes"
+msgstr "Ja"
+
+#. TRANS: Submit button title for 'Yes' when blocking a user.
+#: actions/block.php:164 actions/groupmembers.php:392 lib/blockform.php:80
+msgid "Block this user"
+msgstr "Bloker denne bruger"
+
+#: actions/block.php:187
+msgid "Failed to save block information."
+msgstr "Kunne ikke gemme blokerings oplysninger."
+
+#: actions/blockedfromgroup.php:80 actions/blockedfromgroup.php:87
+#: actions/editgroup.php:100 actions/foafgroup.php:44 actions/foafgroup.php:62
+#: actions/foafgroup.php:69 actions/groupblock.php:86 actions/groupbyid.php:83
+#: actions/groupdesignsettings.php:100 actions/grouplogo.php:102
+#: actions/groupmembers.php:83 actions/groupmembers.php:90
+#: actions/grouprss.php:98 actions/grouprss.php:105
+#: actions/groupunblock.php:86 actions/joingroup.php:82
+#: actions/joingroup.php:93 actions/leavegroup.php:82
+#: actions/leavegroup.php:93 actions/makeadmin.php:86
+#: actions/showgroup.php:138 actions/showgroup.php:146 lib/command.php:166
+#: lib/command.php:368
+msgid "No such group."
+msgstr "Ingen sådan gruppe."
+
+#: actions/blockedfromgroup.php:97
+#, php-format
+msgid "%s blocked profiles"
+msgstr "%s blokerede profiler"
+
+#: actions/blockedfromgroup.php:100
+#, php-format
+msgid "%1$s blocked profiles, page %2$d"
+msgstr "%1$s blokerede profiler, side %2$d"
+
+#: actions/blockedfromgroup.php:115
+msgid "A list of the users blocked from joining this group."
+msgstr "En liste over brugere blokeret fra at deltage i denne gruppe."
+
+#: actions/blockedfromgroup.php:288
+msgid "Unblock user from group"
+msgstr "Ophæv blokering af bruger fra gruppe"
+
+#: actions/blockedfromgroup.php:320 lib/unblockform.php:69
+msgid "Unblock"
+msgstr "Fjern blokering"
+
+#: actions/blockedfromgroup.php:320 lib/unblockform.php:80
+msgid "Unblock this user"
+msgstr "Fjern blokeringen af denne bruger"
+
+#. TRANS: Title for mini-posting window loaded from bookmarklet.
+#: actions/bookmarklet.php:51
+#, php-format
+msgid "Post to %s"
+msgstr "Post til %s"
+
+#: actions/confirmaddress.php:75
+msgid "No confirmation code."
+msgstr "Ingen bekræftelseskode."
+
+#: actions/confirmaddress.php:80
+msgid "Confirmation code not found."
+msgstr "Bekræftelseskode ikke fundet."
+
+#: actions/confirmaddress.php:85
+msgid "That confirmation code is not for you!"
+msgstr "Denne bekræftelseskode er ikke til dig!"
+
+#. TRANS: Server error for an unknow address type, which can be 'email', 'jabber', or 'sms'.
+#: actions/confirmaddress.php:91
+#, php-format
+msgid "Unrecognized address type %s."
+msgstr "Ukendte adresse type %s."
+
+#. TRANS: Client error for an already confirmed email/jabbel/sms address.
+#: actions/confirmaddress.php:96
+msgid "That address has already been confirmed."
+msgstr "Denne adresse er allerede blevet bekræftet."
+
+#. TRANS: Server error thrown on database error updating e-mail preferences.
+#. TRANS: Server error thrown on database error removing a registered e-mail address.
+#. TRANS: Server error thrown on database error updating IM preferences.
+#. TRANS: Server error thrown on database error removing a registered IM address.
+#. TRANS: Server error thrown on database error updating SMS preferences.
+#. TRANS: Server error thrown on database error removing a registered SMS phone number.
+#: actions/confirmaddress.php:116 actions/emailsettings.php:327
+#: actions/emailsettings.php:473 actions/imsettings.php:280
+#: actions/imsettings.php:439 actions/othersettings.php:174
+#: actions/profilesettings.php:283 actions/smssettings.php:308
+#: actions/smssettings.php:464
+msgid "Couldn't update user."
+msgstr "Kunne ikke opdatere brugeren."
+
+#. TRANS: Server error thrown on database error canceling e-mail address confirmation.
+#. TRANS: Server error thrown on database error canceling SMS phone number confirmation.
+#: actions/confirmaddress.php:128 actions/emailsettings.php:433
+#: actions/smssettings.php:422
+msgid "Couldn't delete email confirmation."
+msgstr "Kunne ikke slette e-mail bekræftelse."
+
+#: actions/confirmaddress.php:146
+msgid "Confirm address"
+msgstr "Bekræft adresse"
+
+#: actions/confirmaddress.php:161
+#, php-format
+msgid "The address \"%s\" has been confirmed for your account."
+msgstr "Adressen \"%s\" er blevet bekræftet for din konto."
+
+#: actions/conversation.php:99
+msgid "Conversation"
+msgstr "Samtale"
+
+#: actions/conversation.php:154 lib/mailbox.php:116 lib/noticelist.php:87
+#: lib/profileaction.php:229 lib/searchgroupnav.php:82
+msgid "Notices"
+msgstr "Bekendtgørelser"
+
+#: actions/deleteapplication.php:63
+msgid "You must be logged in to delete an application."
+msgstr "Du skal være logget ind for at slette et program."
+
+#: actions/deleteapplication.php:71
+msgid "Application not found."
+msgstr "Program ikke fundet."
+
+#: actions/deleteapplication.php:78 actions/editapplication.php:77
+#: actions/showapplication.php:94
+msgid "You are not the owner of this application."
+msgstr "Du er ikke ejer af dette program."
+
+#: actions/deleteapplication.php:102 actions/editapplication.php:127
+#: actions/newapplication.php:110 actions/showapplication.php:118
+#: lib/action.php:1263
+msgid "There was a problem with your session token."
+msgstr "Der var et problem med din session token."
+
+#: actions/deleteapplication.php:123 actions/deleteapplication.php:147
+msgid "Delete application"
+msgstr "Slet program"
+
+#: actions/deleteapplication.php:149
+msgid ""
+"Are you sure you want to delete this application? This will clear all data "
+"about the application from the database, including all existing user "
+"connections."
+msgstr ""
+"Er du sikker på du vil slette dette program? Dette vil slette alle data om "
+"anvendelsen fra databasen, herunder alle eksisterende bruger indstillinger."
+
+#. TRANS: Submit button title for 'No' when deleting an application.
+#: actions/deleteapplication.php:158
+msgid "Do not delete this application"
+msgstr "Slet ikke dette program"
+
+#. TRANS: Submit button title for 'Yes' when deleting an application.
+#: actions/deleteapplication.php:164
+msgid "Delete this application"
+msgstr "Slet dette program"
+
+#. TRANS: Client error message thrown when trying to access the admin panel while not logged in.
+#: actions/deletenotice.php:67 actions/disfavor.php:61 actions/favor.php:62
+#: actions/groupblock.php:61 actions/groupunblock.php:61 actions/logout.php:69
+#: actions/makeadmin.php:61 actions/newmessage.php:87 actions/newnotice.php:89
+#: actions/nudge.php:63 actions/subedit.php:31 actions/subscribe.php:96
+#: actions/tagother.php:33 actions/unsubscribe.php:52
+#: lib/adminpanelaction.php:73 lib/profileformaction.php:64
+#: lib/settingsaction.php:72
+msgid "Not logged in."
+msgstr "Ikke logget ind"
+
+#: actions/deletenotice.php:71
+msgid "Can't delete this notice."
+msgstr "Kan ikke slette denne meddelelse."
+
+#: actions/deletenotice.php:103
+msgid ""
+"You are about to permanently delete a notice. Once this is done, it cannot "
+"be undone."
+msgstr ""
+"Du er ved permanent at slette en meddelelse. NÃ¥r dette er gjort, kan det "
+"ikke fortrydes."
+
+#: actions/deletenotice.php:109 actions/deletenotice.php:141
+msgid "Delete notice"
+msgstr "Slet meddelelse"
+
+#: actions/deletenotice.php:144
+msgid "Are you sure you want to delete this notice?"
+msgstr "Er du sikker på du vil slette denne meddelelse?"
+
+#. TRANS: Submit button title for 'No' when deleting a notice.
+#: actions/deletenotice.php:151
+msgid "Do not delete this notice"
+msgstr "Slet ikke denne meddelelse"
+
+#. TRANS: Submit button title for 'Yes' when deleting a notice.
+#: actions/deletenotice.php:158 lib/noticelist.php:656
+msgid "Delete this notice"
+msgstr "Slet denne meddelelse"
+
+#: actions/deleteuser.php:67
+msgid "You cannot delete users."
+msgstr "Du kan ikke slette brugere."
+
+#: actions/deleteuser.php:74
+msgid "You can only delete local users."
+msgstr "Du kan kun slette de lokale brugere."
+
+#: actions/deleteuser.php:110 actions/deleteuser.php:133
+msgid "Delete user"
+msgstr "Slet bruger"
+
+#: actions/deleteuser.php:136
+msgid ""
+"Are you sure you want to delete this user? This will clear all data about "
+"the user from the database, without a backup."
+msgstr ""
+"Er du sikker på du vil slette denne bruger? Dette vil slette alle data om "
+"brugeren fra databasen, uden en sikkerhedskopi."
+
+#. TRANS: Submit button title for 'Yes' when deleting a user.
+#: actions/deleteuser.php:163 lib/deleteuserform.php:77
+msgid "Delete this user"
+msgstr "Slet denne bruger"
+
+#. TRANS: Message used as title for design settings for the site.
+#. TRANS: Link description in user account settings menu.
+#: actions/designadminpanel.php:63 lib/accountsettingsaction.php:139
+#: lib/groupnav.php:119
+msgid "Design"
+msgstr "Design"
+
+#: actions/designadminpanel.php:74
+msgid "Design settings for this StatusNet site."
+msgstr "Design indstillinger for dette StatusNet site."
+
+#: actions/designadminpanel.php:318
+msgid "Invalid logo URL."
+msgstr "Ugyldig logo URL."
+
+#: actions/designadminpanel.php:322
+#, php-format
+msgid "Theme not available: %s."
+msgstr "Tema ikke tilgængelige: %s."
+
+#: actions/designadminpanel.php:426
+msgid "Change logo"
+msgstr "Skift logo"
+
+#: actions/designadminpanel.php:431
+msgid "Site logo"
+msgstr "Site logo"
+
+#: actions/designadminpanel.php:443
+msgid "Change theme"
+msgstr "Skift tema"
+
+#: actions/designadminpanel.php:460
+msgid "Site theme"
+msgstr "Site tema"
+
+#: actions/designadminpanel.php:461
+msgid "Theme for the site."
+msgstr "Tema for webstedet."
+
+#: actions/designadminpanel.php:467
+msgid "Custom theme"
+msgstr "Brugerdefineret tema"
+
+#: actions/designadminpanel.php:471
+msgid "You can upload a custom StatusNet theme as a .ZIP archive."
+msgstr "Du kan uploade en brugerdefineret StatusNet tema som en. ZIP arkiv."
+
+#: actions/designadminpanel.php:486 lib/designsettings.php:101
+msgid "Change background image"
+msgstr "Skift baggrundsbillede"
+
+#: actions/designadminpanel.php:491 actions/designadminpanel.php:574
+#: lib/designsettings.php:178
+msgid "Background"
+msgstr "Baggrund"
+
+#: actions/designadminpanel.php:496
+#, php-format
+msgid ""
+"You can upload a background image for the site. The maximum file size is %1"
+"$s."
+msgstr ""
+"Du kan uploade et baggrundsbillede til webstedet. Den maksimale filstørrelse "
+"er %1$s."
+
+#. TRANS: Used as radio button label to add a background image.
+#: actions/designadminpanel.php:527 lib/designsettings.php:139
+msgid "On"
+msgstr "Til"
+
+#. TRANS: Used as radio button label to not add a background image.
+#: actions/designadminpanel.php:544 lib/designsettings.php:155
+msgid "Off"
+msgstr "Fra"
+
+#: actions/designadminpanel.php:545 lib/designsettings.php:156
+msgid "Turn background image on or off."
+msgstr "Slå baggrundsbilledet til eller fra."
+
+#: actions/designadminpanel.php:550 lib/designsettings.php:161
+msgid "Tile background image"
+msgstr "Tile baggrundsbillede"
+
+#: actions/designadminpanel.php:564 lib/designsettings.php:170
+msgid "Change colours"
+msgstr "Skift farver"
+
+#: actions/designadminpanel.php:587 lib/designsettings.php:191
+msgid "Content"
+msgstr "Indhold"
+
+#: actions/designadminpanel.php:600 lib/designsettings.php:204
+msgid "Sidebar"
+msgstr "Sidebar"
+
+#: actions/designadminpanel.php:613 lib/designsettings.php:217
+msgid "Text"
+msgstr "Tekst"
+
+#: actions/designadminpanel.php:626 lib/designsettings.php:230
+msgid "Links"
+msgstr "Henvisninger"
+
+#: actions/designadminpanel.php:651
+msgid "Advanced"
+msgstr "Avanceret"
+
+#: actions/designadminpanel.php:655
+msgid "Custom CSS"
+msgstr "Personlig CSS"
+
+#: actions/designadminpanel.php:676 lib/designsettings.php:247
+msgid "Use defaults"
+msgstr "Brug standardindstillinger"
+
+#: actions/designadminpanel.php:677 lib/designsettings.php:248
+msgid "Restore default designs"
+msgstr "Gendan standard indstillinger"
+
+#: actions/designadminpanel.php:683 lib/designsettings.php:254
+msgid "Reset back to default"
+msgstr "Nulstil til standard værdier"
+
+#. TRANS: Submit button title
+#: actions/designadminpanel.php:685 actions/othersettings.php:126
+#: actions/pathsadminpanel.php:351 actions/profilesettings.php:174
+#: actions/sessionsadminpanel.php:199 actions/siteadminpanel.php:292
+#: actions/sitenoticeadminpanel.php:195 actions/snapshotadminpanel.php:245
+#: actions/subscriptions.php:226 actions/tagother.php:154
+#: actions/useradminpanel.php:294 lib/applicationeditform.php:363
+#: lib/designsettings.php:256 lib/groupeditform.php:202
+msgid "Save"
+msgstr "Gem"
+
+#: actions/designadminpanel.php:686 lib/designsettings.php:257
+msgid "Save design"
+msgstr "Gem design"
+
+#: actions/disfavor.php:81
+msgid "This notice is not a favorite!"
+msgstr "Denne meddelelse er ikke en favorit!"
+
+#: actions/disfavor.php:94
+msgid "Add to favorites"
+msgstr "Tilføj til favoritter"
+
+#: actions/doc.php:158
+#, php-format
+msgid "No such document \"%s\""
+msgstr "Ingen sådan dokument \"%s\""
+
+#: actions/editapplication.php:54
+msgid "Edit Application"
+msgstr "Rediger program"
+
+#: actions/editapplication.php:66
+msgid "You must be logged in to edit an application."
+msgstr "Du skal være logget ind for at redigere et program."
+
+#: actions/editapplication.php:81 actions/oauthconnectionssettings.php:166
+#: actions/showapplication.php:87
+msgid "No such application."
+msgstr "Ingen sådan program"
+
+#: actions/editapplication.php:161
+msgid "Use this form to edit your application."
+msgstr "Brug denne formular til at redigere dit program."
+
+#: actions/editapplication.php:177 actions/newapplication.php:159
+msgid "Name is required."
+msgstr "Navn er påkrævet."
+
+#: actions/editapplication.php:180 actions/newapplication.php:165
+msgid "Name is too long (max 255 chars)."
+msgstr "Navnet er for langt (max 255 tegn)."
+
+#: actions/editapplication.php:183 actions/newapplication.php:162
+msgid "Name already in use. Try another one."
+msgstr "Navn allerede i brug. Prøv et andet."
+
+#: actions/editapplication.php:186 actions/newapplication.php:168
+msgid "Description is required."
+msgstr "Beskrivelse er påkrævet."
+
+#: actions/editapplication.php:194
+msgid "Source URL is too long."
+msgstr "Kilde-URL er for lang."
+
+#: actions/editapplication.php:200 actions/newapplication.php:185
+msgid "Source URL is not valid."
+msgstr "Kilde-URL er ikke gyldig."
+
+#: actions/editapplication.php:203 actions/newapplication.php:188
+msgid "Organization is required."
+msgstr "Organisationen er påkrævet."
+
+#: actions/editapplication.php:206 actions/newapplication.php:191
+msgid "Organization is too long (max 255 chars)."
+msgstr "Organisationen er for lang (max 255 tegn)."
+
+#: actions/editapplication.php:209 actions/newapplication.php:194
+msgid "Organization homepage is required."
+msgstr "Organisationens hjemmeside er påkrævet."
+
+#: actions/editapplication.php:218 actions/newapplication.php:206
+msgid "Callback is too long."
+msgstr "Callback er for lang."
+
+#: actions/editapplication.php:225 actions/newapplication.php:215
+msgid "Callback URL is not valid."
+msgstr "Tilbagekaldswebadresse er ikke gyldig."
+
+#: actions/editapplication.php:258
+msgid "Could not update application."
+msgstr "Kunne ikke opdatere programmet."
+
+#: actions/editgroup.php:56
+#, php-format
+msgid "Edit %s group"
+msgstr "Rediger %s gruppe"
+
+#: actions/editgroup.php:68 actions/grouplogo.php:70 actions/newgroup.php:65
+msgid "You must be logged in to create a group."
+msgstr "Du skal være logget ind for at oprette en gruppe."
+
+#: actions/editgroup.php:107 actions/editgroup.php:172
+#: actions/groupdesignsettings.php:107 actions/grouplogo.php:109
+msgid "You must be an admin to edit the group."
+msgstr "Du skal være administrator for at redigere gruppen."
+
+#: actions/editgroup.php:158
+msgid "Use this form to edit the group."
+msgstr "Brug denne formular til at redigere gruppen."
+
+#: actions/editgroup.php:205 actions/newgroup.php:145
+#, php-format
+msgid "description is too long (max %d chars)."
+msgstr "Beskrivelsen er for lang (max %d tegn)."
+
+#: actions/editgroup.php:228 actions/newgroup.php:168
+#, php-format
+msgid "Invalid alias: \"%s\""
+msgstr "Ugyldigt alias: \"%s\"."
+
+#: actions/editgroup.php:258
+msgid "Could not update group."
+msgstr "Kunne ikke opdatere gruppe."
+
+#. TRANS: Server exception thrown when creating group aliases failed.
+#: actions/editgroup.php:264 classes/User_group.php:514
+msgid "Could not create aliases."
+msgstr "Kunne ikke oprette aliaser."
+
+#: actions/editgroup.php:280
+msgid "Options saved."
+msgstr "Valg gemt."
+
+#. TRANS: Title for e-mail settings.
+#: actions/emailsettings.php:61
+msgid "Email settings"
+msgstr "Email indstillinger"
+
+#. TRANS: E-mail settings page instructions.
+#. TRANS: %%site.name%% is the name of the site.
+#: actions/emailsettings.php:76
+#, php-format
+msgid "Manage how you get email from %%site.name%%."
+msgstr "Administrer hvordan du får e-mail fra %%site.name%%."
+
+#. TRANS: Form legend for e-mail settings form.
+#. TRANS: Field label for e-mail address input in e-mail settings form.
+#: actions/emailsettings.php:106 actions/emailsettings.php:132
+msgid "Email address"
+msgstr "E-mail adresse"
+
+#. TRANS: Form note in e-mail settings form.
+#: actions/emailsettings.php:112
+msgid "Current confirmed email address."
+msgstr "Nuværende bekræftet email-adresse."
+
+#. TRANS: Button label to remove a confirmed e-mail address.
+#. TRANS: Button label for removing a set sender e-mail address to post notices from.
+#. TRANS: Button label to remove a confirmed IM address.
+#. TRANS: Button label to remove a confirmed SMS address.
+#. TRANS: Button label for removing a set sender SMS e-mail address to post notices from.
+#: actions/emailsettings.php:115 actions/emailsettings.php:158
+#: actions/imsettings.php:116 actions/smssettings.php:124
+#: actions/smssettings.php:180
+msgctxt "BUTTON"
+msgid "Remove"
+msgstr "Fjern"
+
+#: actions/emailsettings.php:122
+msgid ""
+"Awaiting confirmation on this address. Check your inbox (and spam box!) for "
+"a message with further instructions."
+msgstr ""
+"Afventer bekræftelse på denne adresse. Tjek din indbakke (og spam box!) for "
+"en besked med yderligere instruktioner."
+
+#. TRANS: Button label to cancel an e-mail address confirmation procedure.
+#. TRANS: Button label to cancel an IM address confirmation procedure.
+#. TRANS: Button label to cancel a SMS address confirmation procedure.
+#. TRANS: Button label
+#: actions/emailsettings.php:127 actions/imsettings.php:131
+#: actions/smssettings.php:137 lib/applicationeditform.php:357
+msgctxt "BUTTON"
+msgid "Cancel"
+msgstr "Afbryd"
+
+#. TRANS: Instructions for e-mail address input form.
+#: actions/emailsettings.php:135
+msgid "Email address, like \"UserName@example.org\""
+msgstr "E-mail adresse, som \"UserName@example.org\""
+
+#. TRANS: Button label for adding an e-mail address in e-mail settings form.
+#. TRANS: Button label for adding an IM address in IM settings form.
+#. TRANS: Button label for adding a SMS phone number in SMS settings form.
+#: actions/emailsettings.php:139 actions/imsettings.php:148
+#: actions/smssettings.php:162
+msgctxt "BUTTON"
+msgid "Add"
+msgstr "Tilføj"
+
+#. TRANS: Form legend for incoming e-mail settings form.
+#. TRANS: Form legend for incoming SMS settings form.
+#: actions/emailsettings.php:147 actions/smssettings.php:171
+msgid "Incoming email"
+msgstr "Indgående e-mail"
+
+#. TRANS: Form instructions for incoming e-mail form in e-mail settings.
+#. TRANS: Form instructions for incoming SMS e-mail address form in SMS settings.
+#: actions/emailsettings.php:155 actions/smssettings.php:178
+msgid "Send email to this address to post new notices."
+msgstr "Send e-mail til denne adresse for at skrive nye bekendtgørelser."
+
+#. TRANS: Instructions for incoming e-mail address input form.
+#. TRANS: Instructions for incoming SMS e-mail address input form.
+#: actions/emailsettings.php:164 actions/smssettings.php:186
+msgid "Make a new email address for posting to; cancels the old one."
+msgstr ""
+"Opret en ny e-mail adresse til postering af beskeder; annullerer den gamle."
+
+#. TRANS: Button label for adding an e-mail address to send notices from.
+#. TRANS: Button label for adding an SMS e-mail address to send notices from.
+#: actions/emailsettings.php:168 actions/smssettings.php:189
+msgctxt "BUTTON"
+msgid "New"
+msgstr "Ny"
+
+#. TRANS: Form legend for e-mail preferences form.
+#: actions/emailsettings.php:174
+msgid "Email preferences"
+msgstr "Email indstillinger"
+
+#. TRANS: Checkbox label in e-mail preferences form.
+#: actions/emailsettings.php:180
+msgid "Send me notices of new subscriptions through email."
+msgstr "Send mig meddelelser om nye abonnementer via e-mail."
+
+#. TRANS: Checkbox label in e-mail preferences form.
+#: actions/emailsettings.php:186
+msgid "Send me email when someone adds my notice as a favorite."
+msgstr "Send mig email, når nogen har tilføjet min meddelelse som en favorit."
+
+#. TRANS: Checkbox label in e-mail preferences form.
+#: actions/emailsettings.php:193
+msgid "Send me email when someone sends me a private message."
+msgstr "Send mig email, når nogen sender mig en privat besked."
+
+#. TRANS: Checkbox label in e-mail preferences form.
+#: actions/emailsettings.php:199
+msgid "Send me email when someone sends me an \"@-reply\"."
+msgstr "Send mig email, når nogen sender mig et \"@-svar\"."
+
+#. TRANS: Checkbox label in e-mail preferences form.
+#: actions/emailsettings.php:205
+msgid "Allow friends to nudge me and send me an email."
+msgstr "Tillad venner at puffe mig og at sende mig en e-mail."
+
+#. TRANS: Checkbox label in e-mail preferences form.
+#: actions/emailsettings.php:212
+msgid "I want to post notices by email."
+msgstr "Jeg ønsker at sende meddelelser via e-mail."
+
+#. TRANS: Checkbox label in e-mail preferences form.
+#: actions/emailsettings.php:219
+msgid "Publish a MicroID for my email address."
+msgstr "Udgiv et MicroID til min email adresse."
+
+#. TRANS: Confirmation message for successful e-mail preferences save.
+#: actions/emailsettings.php:334
+msgid "Email preferences saved."
+msgstr "Email indstillinger gemt."
+
+#. TRANS: Message given saving e-mail address without having provided one.
+#: actions/emailsettings.php:353
+msgid "No email address."
+msgstr "Ingen e-mail-adresse."
+
+#. TRANS: Message given saving e-mail address that cannot be normalised.
+#: actions/emailsettings.php:361
+msgid "Cannot normalize that email address"
+msgstr "Kan ikke normalisere denne e-mail adresse"
+
+#. TRANS: Message given saving e-mail address that not valid.
+#: actions/emailsettings.php:366 actions/register.php:208
+#: actions/siteadminpanel.php:144
+msgid "Not a valid email address."
+msgstr "Ikke en gyldig e-mail adresse."
+
+#. TRANS: Message given saving e-mail address that is already set.
+#: actions/emailsettings.php:370
+msgid "That is already your email address."
+msgstr "Det er allerede din e-mail adresse."
+
+#. TRANS: Message given saving e-mail address that is already set for another user.
+#: actions/emailsettings.php:374
+msgid "That email address already belongs to another user."
+msgstr "Denne e-mail adresse tilhører allerede en anden bruger."
+
+#. TRANS: Server error thrown on database error adding e-mail confirmation code.
+#. TRANS: Server error thrown on database error adding IM confirmation code.
+#. TRANS: Server error thrown on database error adding SMS confirmation code.
+#: actions/emailsettings.php:391 actions/imsettings.php:348
+#: actions/smssettings.php:373
+msgid "Couldn't insert confirmation code."
+msgstr "Kunne ikke indsætte bekræftelseskode."
+
+#. TRANS: Message given saving valid e-mail address that is to be confirmed.
+#: actions/emailsettings.php:398
+msgid ""
+"A confirmation code was sent to the email address you added. Check your "
+"inbox (and spam box!) for the code and instructions on how to use it."
+msgstr ""
+"En bekræftelse kode blev sendt til den e-mail adresse, du har tilføjet. Tjek "
+"din indbakke (og spam box!) for koden og vejledning om, hvordan man bruger "
+"den."
+
+#. TRANS: Message given canceling e-mail address confirmation that is not pending.
+#. TRANS: Message given canceling IM address confirmation that is not pending.
+#. TRANS: Message given canceling SMS phone number confirmation that is not pending.
+#: actions/emailsettings.php:419 actions/imsettings.php:383
+#: actions/smssettings.php:408
+msgid "No pending confirmation to cancel."
+msgstr "Ingen afventende bekræftelse at annullere."
+
+#. TRANS: Message given canceling e-mail address confirmation for the wrong e-mail address.
+#: actions/emailsettings.php:424
+msgid "That is the wrong email address."
+msgstr "Det er den forkerte e-mail adresse."
+
+#. TRANS: Message given after successfully canceling e-mail address confirmation.
+#: actions/emailsettings.php:438
+msgid "Email confirmation cancelled."
+msgstr "Email bekræftelse aflyst."
+
+#. TRANS: Message given trying to remove an e-mail address that is not
+#. TRANS: registered for the active user.
+#: actions/emailsettings.php:458
+msgid "That is not your email address."
+msgstr "Det er ikke din e-mail adresse."
+
+#. TRANS: Message given after successfully removing a registered e-mail address.
+#: actions/emailsettings.php:479
+msgid "The email address was removed."
+msgstr "E-mail adressen blev fjernet."
+
+#: actions/emailsettings.php:493 actions/smssettings.php:568
+msgid "No incoming email address."
+msgstr "Ingen indkommende e-mail adresse."
+
+#. TRANS: Server error thrown on database error removing incoming e-mail address.
+#. TRANS: Server error thrown on database error adding incoming e-mail address.
+#: actions/emailsettings.php:504 actions/emailsettings.php:528
+#: actions/smssettings.php:578 actions/smssettings.php:602
+msgid "Couldn't update user record."
+msgstr "Kunne ikke opdatere bruger oplysninger."
+
+#. TRANS: Message given after successfully removing an incoming e-mail address.
+#: actions/emailsettings.php:508 actions/smssettings.php:581
+msgid "Incoming email address removed."
+msgstr "Indgående e-mail adresse fjernet."
+
+#. TRANS: Message given after successfully adding an incoming e-mail address.
+#: actions/emailsettings.php:532 actions/smssettings.php:605
+msgid "New incoming email address added."
+msgstr "Ny indkommende e-mail adresse tilføjet."
+
+#: actions/favor.php:79
+msgid "This notice is already a favorite!"
+msgstr "Denne meddelelse er allerede en favorit!"
+
+#: actions/favor.php:92 lib/disfavorform.php:140
+msgid "Disfavor favorite"
+msgstr "Fjern markering som favorit"
+
+#: actions/favorited.php:65 lib/popularnoticesection.php:91
+#: lib/publicgroupnav.php:93
+msgid "Popular notices"
+msgstr "Populære bekendtgørelser"
+
+#: actions/favorited.php:67
+#, php-format
+msgid "Popular notices, page %d"
+msgstr "Populære bekendtgørelser, side %d"
+
+#: actions/favorited.php:79
+msgid "The most popular notices on the site right now."
+msgstr "De mest populære opslag på hjemmesiden lige nu."
+
+#: actions/favorited.php:150
+msgid "Favorite notices appear on this page but no one has favorited one yet."
+msgstr ""
+"Favorit bekendtgørelser vises på denne side, men ingen har markeret en "
+"favorit endnu."
+
+#: actions/favorited.php:153
+msgid ""
+"Be the first to add a notice to your favorites by clicking the fave button "
+"next to any notice you like."
+msgstr ""
+"Vær den første til at tilføje en meddelelse til dine favoritter ved at "
+"klikke på favorit knappen ved siden af en meddelelse, du syntes om."
+
+#: actions/favorited.php:156
+#, php-format
+msgid ""
+"Why not [register an account](%%action.register%%) and be the first to add a "
+"notice to your favorites!"
+msgstr ""
+"Hvorfor ikke [registrere en konto] (%%action.register%%), og vær den første "
+"til at tilføje en meddelelse til dine favoritter!"
+
+#: actions/favoritesrss.php:111 actions/showfavorites.php:77
+#: lib/personalgroupnav.php:115
+#, php-format
+msgid "%s's favorite notices"
+msgstr "%s's favorit bekendtgørelser"
+
+#: actions/favoritesrss.php:115
+#, php-format
+msgid "Updates favored by %1$s on %2$s!"
+msgstr "Opdateringer markeret som favorit af %1$s på %2$s!"
+
+#: actions/featured.php:69 lib/featureduserssection.php:87
+#: lib/publicgroupnav.php:89
+msgid "Featured users"
+msgstr "Udvalgte brugere"
+
+#: actions/featured.php:71
+#, php-format
+msgid "Featured users, page %d"
+msgstr "Udvalgte brugere, side %d"
+
+#: actions/featured.php:99
+#, php-format
+msgid "A selection of some great users on %s"
+msgstr "Et udvalg af nogle top brugere på %s"
+
+#: actions/file.php:34
+msgid "No notice ID."
+msgstr "Ingen meddelelses ID."
+
+#: actions/file.php:38
+msgid "No notice."
+msgstr "Ingen meddelelse."
+
+#: actions/file.php:42
+msgid "No attachments."
+msgstr "Ingen vedhæftede filer."
+
+#: actions/file.php:51
+msgid "No uploaded attachments."
+msgstr "Ingen uploaded vedhæftede filer."
+
+#: actions/finishremotesubscribe.php:69
+msgid "Not expecting this response!"
+msgstr "Forventer ikke dette svar!"
+
+#: actions/finishremotesubscribe.php:80
+msgid "User being listened to does not exist."
+msgstr "Brugeren som lyttes til, findes ikke."
+
+#: actions/finishremotesubscribe.php:87 actions/remotesubscribe.php:59
+msgid "You can use the local subscription!"
+msgstr "Du kan bruge det lokale abonnement!"
+
+#: actions/finishremotesubscribe.php:99
+msgid "That user has blocked you from subscribing."
+msgstr "Denne bruger har blokeret dig fra at abonnere."
+
+#: actions/finishremotesubscribe.php:110
+msgid "You are not authorized."
+msgstr "Du har ikke tilladelse."
+
+#: actions/finishremotesubscribe.php:113
+msgid "Could not convert request token to access token."
+msgstr "Kunne ikke konvertere anmodnings-token til et adgangs-token."
+
+#: actions/finishremotesubscribe.php:118
+msgid "Remote service uses unknown version of OMB protocol."
+msgstr "Fjerntjenesten bruger en ukendt version af 0MB protokol."
+
+#: actions/finishremotesubscribe.php:138
+msgid "Error updating remote profile."
+msgstr "Fejl ved opdatering af fjernbetjeningsprofil."
+
+#: actions/getfile.php:79
+msgid "No such file."
+msgstr "Ingen sådan fil."
+
+#: actions/getfile.php:83
+msgid "Cannot read file."
+msgstr "Kan ikke læse filen."
+
+#: actions/grantrole.php:62 actions/revokerole.php:62
+msgid "Invalid role."
+msgstr "Ugyldig rolle."
+
+#: actions/grantrole.php:66 actions/revokerole.php:66
+msgid "This role is reserved and cannot be set."
+msgstr "Denne rolle er reserveret og kan ikke indstilles."
+
+#: actions/grantrole.php:75
+msgid "You cannot grant user roles on this site."
+msgstr "Du kan ikke tildele brugerroller på dette site."
+
+#: actions/grantrole.php:82
+msgid "User already has this role."
+msgstr "Bruger har allerede denne rolle."
+
+#: actions/groupblock.php:71 actions/groupunblock.php:71
+#: actions/makeadmin.php:71 actions/subedit.php:46
+#: lib/profileformaction.php:79
+msgid "No profile specified."
+msgstr "Ingen profil specificeret."
+
+#: actions/groupblock.php:76 actions/groupunblock.php:76
+#: actions/makeadmin.php:76 actions/subedit.php:53 actions/tagother.php:46
+#: actions/unsubscribe.php:84 lib/profileformaction.php:86
+msgid "No profile with that ID."
+msgstr "Ingen profil med det ID."
+
+#: actions/groupblock.php:81 actions/groupunblock.php:81
+#: actions/makeadmin.php:81
+msgid "No group specified."
+msgstr "Ingen gruppe angivet."
+
+#: actions/groupblock.php:91
+msgid "Only an admin can block group members."
+msgstr "Kun en administrator kan blokere gruppens medlemmer."
+
+#: actions/groupblock.php:95
+msgid "User is already blocked from group."
+msgstr "Bruger er allerede blokeret fra gruppen."
+
+#: actions/groupblock.php:100
+msgid "User is not a member of group."
+msgstr "Brugeren er ikke medlem af gruppen."
+
+#: actions/groupblock.php:134 actions/groupmembers.php:360
+msgid "Block user from group"
+msgstr "Bloker bruger fra gruppe"
+
+#: actions/groupblock.php:160
+#, php-format
+msgid ""
+"Are you sure you want to block user \"%1$s\" from the group \"%2$s\"? They "
+"will be removed from the group, unable to post, and unable to subscribe to "
+"the group in the future."
+msgstr ""
+"Er du sikker på du vil blokere bruger \"%1$s\" fra gruppen \"%2$s\"? De vil "
+"blive fjernet fra gruppen, ude af stand til at postere, og ude af stand til "
+"at tilmelde sig gruppen i fremtiden."
+
+#. TRANS: Submit button title for 'No' when blocking a user from a group.
+#: actions/groupblock.php:182
+msgid "Do not block this user from this group"
+msgstr "Bloker ikke denne bruger fra denne gruppe"
+
+#. TRANS: Submit button title for 'Yes' when blocking a user from a group.
+#: actions/groupblock.php:189
+msgid "Block this user from this group"
+msgstr "Bloker denne bruger fra denne gruppe"
+
+#: actions/groupblock.php:206
+msgid "Database error blocking user from group."
+msgstr "Database fejl ved blokering af bruger fra gruppen."
+
+#: actions/groupbyid.php:74 actions/userbyid.php:70
+msgid "No ID."
+msgstr "Ingen ID."
+
+#: actions/groupdesignsettings.php:68
+msgid "You must be logged in to edit a group."
+msgstr "Du skal være logget på for at redigere en gruppe."
+
+#: actions/groupdesignsettings.php:144
+msgid "Group design"
+msgstr "Gruppe design"
+
+#: actions/groupdesignsettings.php:155
+msgid ""
+"Customize the way your group looks with a background image and a colour "
+"palette of your choice."
+msgstr ""
+"Tilpas den måde din gruppe vises på, med et baggrundsbillede og en "
+"farvepalet efter dit valg."
+
+#: actions/groupdesignsettings.php:266 actions/userdesignsettings.php:186
+#: lib/designsettings.php:391 lib/designsettings.php:413
+msgid "Couldn't update your design."
+msgstr "Kunne ikke opdatere dit design."
+
+#: actions/groupdesignsettings.php:311 actions/userdesignsettings.php:231
+msgid "Design preferences saved."
+msgstr "Design præferencer gemt."
+
+#: actions/grouplogo.php:142 actions/grouplogo.php:195
+msgid "Group logo"
+msgstr "Gruppe logo"
+
+#: actions/grouplogo.php:153
+#, php-format
+msgid ""
+"You can upload a logo image for your group. The maximum file size is %s."
+msgstr ""
+"Du kan uploade et logo billede til din gruppe. Den maksimale filstørrelse er "
+"%s."
+
+#: actions/grouplogo.php:365
+msgid "Pick a square area of the image to be the logo."
+msgstr "Vælg en firkantet område af billedet, der skal logoet."
+
+#: actions/grouplogo.php:399
+msgid "Logo updated."
+msgstr "Logo opdateret."
+
+#: actions/grouplogo.php:401
+msgid "Failed updating logo."
+msgstr "Mislykket ajourføring af logo."
+
+#: actions/groupmembers.php:100 lib/groupnav.php:92
+#, php-format
+msgid "%s group members"
+msgstr "%s gruppe medlemmer"
+
+#: actions/groupmembers.php:103
+#, php-format
+msgid "%1$s group members, page %2$d"
+msgstr ""
+
+#: actions/groupmembers.php:118
+msgid "A list of the users in this group."
+msgstr ""
+
+#: actions/groupmembers.php:182 lib/groupnav.php:107
+msgid "Admin"
+msgstr ""
+
+#: actions/groupmembers.php:392 lib/blockform.php:69
+msgid "Block"
+msgstr ""
+
+#: actions/groupmembers.php:487
+msgid "Make user an admin of the group"
+msgstr ""
+
+#: actions/groupmembers.php:519
+msgid "Make Admin"
+msgstr ""
+
+#: actions/groupmembers.php:519
+msgid "Make this user an admin"
+msgstr ""
+
+#. TRANS: Message is used as link title. %s is a user nickname.
+#. TRANS: Title in atom group notice feed. %s is a group name.
+#. TRANS: Title in atom user notice feed. %s is a user name.
+#: actions/grouprss.php:139 actions/userrss.php:94
+#: lib/atomgroupnoticefeed.php:63 lib/atomusernoticefeed.php:69
+#, php-format
+msgid "%s timeline"
+msgstr ""
+
+#. TRANS: Message is used as link description. %1$s is a username, %2$s is a site name.
+#: actions/grouprss.php:142
+#, php-format
+msgid "Updates from members of %1$s on %2$s!"
+msgstr ""
+
+#: actions/groups.php:62 lib/profileaction.php:223 lib/profileaction.php:249
+#: lib/publicgroupnav.php:81 lib/searchgroupnav.php:84 lib/subgroupnav.php:98
+msgid "Groups"
+msgstr ""
+
+#: actions/groups.php:64
+#, php-format
+msgid "Groups, page %d"
+msgstr ""
+
+#: actions/groups.php:90
+#, php-format
+msgid ""
+"%%%%site.name%%%% groups let you find and talk with people of similar "
+"interests. After you join a group you can send messages to all other members "
+"using the syntax \"!groupname\". Don't see a group you like? Try [searching "
+"for one](%%%%action.groupsearch%%%%) or [start your own!](%%%%action.newgroup"
+"%%%%)"
+msgstr ""
+
+#: actions/groups.php:107 actions/usergroups.php:126 lib/groupeditform.php:122
+msgid "Create a new group"
+msgstr ""
+
+#: actions/groupsearch.php:52
+#, php-format
+msgid ""
+"Search for groups on %%site.name%% by their name, location, or description. "
+"Separate the terms by spaces; they must be 3 characters or more."
+msgstr ""
+
+#: actions/groupsearch.php:58
+msgid "Group search"
+msgstr ""
+
+#: actions/groupsearch.php:79 actions/noticesearch.php:117
+#: actions/peoplesearch.php:83
+msgid "No results."
+msgstr ""
+
+#: actions/groupsearch.php:82
+#, php-format
+msgid ""
+"If you can't find the group you're looking for, you can [create it](%%action."
+"newgroup%%) yourself."
+msgstr ""
+
+#: actions/groupsearch.php:85
+#, php-format
+msgid ""
+"Why not [register an account](%%action.register%%) and [create the group](%%"
+"action.newgroup%%) yourself!"
+msgstr ""
+
+#: actions/groupunblock.php:91
+msgid "Only an admin can unblock group members."
+msgstr ""
+
+#: actions/groupunblock.php:95
+msgid "User is not blocked from group."
+msgstr ""
+
+#: actions/groupunblock.php:128 actions/unblock.php:86
+msgid "Error removing the block."
+msgstr ""
+
+#. TRANS: Title for instance messaging settings.
+#: actions/imsettings.php:60
+msgid "IM settings"
+msgstr ""
+
+#. TRANS: Instant messaging settings page instructions.
+#. TRANS: [instant messages] is link text, "(%%doc.im%%)" is the link.
+#. TRANS: the order and formatting of link text and link should remain unchanged.
+#: actions/imsettings.php:74
+#, php-format
+msgid ""
+"You can send and receive notices through Jabber/GTalk [instant messages](%%"
+"doc.im%%). Configure your address and settings below."
+msgstr ""
+
+#. TRANS: Message given in the IM settings if XMPP is not enabled on the site.
+#: actions/imsettings.php:94
+msgid "IM is not available."
+msgstr ""
+
+#. TRANS: Form legend for IM settings form.
+#. TRANS: Field label for IM address input in IM settings form.
+#: actions/imsettings.php:106 actions/imsettings.php:136
+msgid "IM address"
+msgstr ""
+
+#: actions/imsettings.php:113
+msgid "Current confirmed Jabber/GTalk address."
+msgstr ""
+
+#. TRANS: Form note in IM settings form.
+#. TRANS: %s is the IM address set for the site.
+#: actions/imsettings.php:124
+#, php-format
+msgid ""
+"Awaiting confirmation on this address. Check your Jabber/GTalk account for a "
+"message with further instructions. (Did you add %s to your buddy list?)"
+msgstr ""
+
+#. TRANS: IM address input field instructions in IM settings form.
+#. TRANS: %s is the IM address set for the site.
+#: actions/imsettings.php:140
+#, php-format
+msgid ""
+"Jabber or GTalk address, like \"UserName@example.org\". First, make sure to "
+"add %s to your buddy list in your IM client or on GTalk."
+msgstr ""
+
+#. TRANS: Form legend for IM preferences form.
+#: actions/imsettings.php:155
+msgid "IM preferences"
+msgstr ""
+
+#. TRANS: Checkbox label in IM preferences form.
+#: actions/imsettings.php:160
+msgid "Send me notices through Jabber/GTalk."
+msgstr ""
+
+#. TRANS: Checkbox label in IM preferences form.
+#: actions/imsettings.php:166
+msgid "Post a notice when my Jabber/GTalk status changes."
+msgstr ""
+
+#. TRANS: Checkbox label in IM preferences form.
+#: actions/imsettings.php:172
+msgid "Send me replies through Jabber/GTalk from people I'm not subscribed to."
+msgstr ""
+
+#. TRANS: Checkbox label in IM preferences form.
+#: actions/imsettings.php:179
+msgid "Publish a MicroID for my Jabber/GTalk address."
+msgstr ""
+
+#. TRANS: Confirmation message for successful IM preferences save.
+#: actions/imsettings.php:287 actions/othersettings.php:180
+msgid "Preferences saved."
+msgstr ""
+
+#. TRANS: Message given saving IM address without having provided one.
+#: actions/imsettings.php:309
+msgid "No Jabber ID."
+msgstr ""
+
+#. TRANS: Message given saving IM address that cannot be normalised.
+#: actions/imsettings.php:317
+msgid "Cannot normalize that Jabber ID"
+msgstr ""
+
+#. TRANS: Message given saving IM address that not valid.
+#: actions/imsettings.php:322
+msgid "Not a valid Jabber ID"
+msgstr ""
+
+#. TRANS: Message given saving IM address that is already set.
+#: actions/imsettings.php:326
+msgid "That is already your Jabber ID."
+msgstr ""
+
+#. TRANS: Message given saving IM address that is already set for another user.
+#: actions/imsettings.php:330
+msgid "Jabber ID already belongs to another user."
+msgstr ""
+
+#. TRANS: Message given saving valid IM address that is to be confirmed.
+#. TRANS: %s is the IM address set for the site.
+#: actions/imsettings.php:358
+#, php-format
+msgid ""
+"A confirmation code was sent to the IM address you added. You must approve %"
+"s for sending messages to you."
+msgstr ""
+
+#. TRANS: Message given canceling IM address confirmation for the wrong IM address.
+#: actions/imsettings.php:388
+msgid "That is the wrong IM address."
+msgstr ""
+
+#. TRANS: Server error thrown on database error canceling IM address confirmation.
+#: actions/imsettings.php:397
+msgid "Couldn't delete IM confirmation."
+msgstr ""
+
+#. TRANS: Message given after successfully canceling IM address confirmation.
+#: actions/imsettings.php:402
+msgid "IM confirmation cancelled."
+msgstr ""
+
+#. TRANS: Message given trying to remove an IM address that is not
+#. TRANS: registered for the active user.
+#: actions/imsettings.php:424
+msgid "That is not your Jabber ID."
+msgstr ""
+
+#. TRANS: Message given after successfully removing a registered IM address.
+#: actions/imsettings.php:447
+msgid "The IM address was removed."
+msgstr ""
+
+#: actions/inbox.php:59
+#, php-format
+msgid "Inbox for %1$s - page %2$d"
+msgstr ""
+
+#: actions/inbox.php:62
+#, php-format
+msgid "Inbox for %s"
+msgstr ""
+
+#: actions/inbox.php:115
+msgid "This is your inbox, which lists your incoming private messages."
+msgstr ""
+
+#: actions/invite.php:39
+msgid "Invites have been disabled."
+msgstr ""
+
+#: actions/invite.php:41
+#, php-format
+msgid "You must be logged in to invite other users to use %s."
+msgstr ""
+
+#: actions/invite.php:72
+#, php-format
+msgid "Invalid email address: %s"
+msgstr ""
+
+#: actions/invite.php:110
+msgid "Invitation(s) sent"
+msgstr ""
+
+#: actions/invite.php:112
+msgid "Invite new users"
+msgstr ""
+
+#: actions/invite.php:128
+msgid "You are already subscribed to these users:"
+msgstr ""
+
+#. TRANS: Whois output.
+#. TRANS: %1$s nickname of the queried user, %2$s is their profile URL.
+#: actions/invite.php:131 actions/invite.php:139 lib/command.php:414
+#, php-format
+msgid "%1$s (%2$s)"
+msgstr ""
+
+#: actions/invite.php:136
+msgid ""
+"These people are already users and you were automatically subscribed to them:"
+msgstr ""
+
+#: actions/invite.php:144
+msgid "Invitation(s) sent to the following people:"
+msgstr ""
+
+#: actions/invite.php:150
+msgid ""
+"You will be notified when your invitees accept the invitation and register "
+"on the site. Thanks for growing the community!"
+msgstr ""
+
+#: actions/invite.php:162
+msgid ""
+"Use this form to invite your friends and colleagues to use this service."
+msgstr ""
+
+#: actions/invite.php:187
+msgid "Email addresses"
+msgstr ""
+
+#: actions/invite.php:189
+msgid "Addresses of friends to invite (one per line)"
+msgstr ""
+
+#: actions/invite.php:192
+msgid "Personal message"
+msgstr ""
+
+#: actions/invite.php:194
+msgid "Optionally add a personal message to the invitation."
+msgstr ""
+
+#. TRANS: Send button for inviting friends
+#: actions/invite.php:198
+msgctxt "BUTTON"
+msgid "Send"
+msgstr ""
+
+#. TRANS: Subject for invitation email. Note that 'them' is correct as a gender-neutral singular 3rd-person pronoun in English.
+#: actions/invite.php:228
+#, php-format
+msgid "%1$s has invited you to join them on %2$s"
+msgstr ""
+
+#. TRANS: Body text for invitation email. Note that 'them' is correct as a gender-neutral singular 3rd-person pronoun in English.
+#: actions/invite.php:231
+#, php-format
+msgid ""
+"%1$s has invited you to join them on %2$s (%3$s).\n"
+"\n"
+"%2$s is a micro-blogging service that lets you keep up-to-date with people "
+"you know and people who interest you.\n"
+"\n"
+"You can also share news about yourself, your thoughts, or your life online "
+"with people who know about you. It's also great for meeting new people who "
+"share your interests.\n"
+"\n"
+"%1$s said:\n"
+"\n"
+"%4$s\n"
+"\n"
+"You can see %1$s's profile page on %2$s here:\n"
+"\n"
+"%5$s\n"
+"\n"
+"If you'd like to try the service, click on the link below to accept the "
+"invitation.\n"
+"\n"
+"%6$s\n"
+"\n"
+"If not, you can ignore this message. Thanks for your patience and your "
+"time.\n"
+"\n"
+"Sincerely, %2$s\n"
+msgstr ""
+
+#: actions/joingroup.php:60
+msgid "You must be logged in to join a group."
+msgstr ""
+
+#: actions/joingroup.php:88 actions/leavegroup.php:88
+msgid "No nickname or ID."
+msgstr ""
+
+#. TRANS: Message given having added a user to a group.
+#. TRANS: %1$s is the nickname of the user, %2$s is the nickname of the group.
+#: actions/joingroup.php:141 lib/command.php:346
+#, php-format
+msgid "%1$s joined group %2$s"
+msgstr ""
+
+#: actions/leavegroup.php:60
+msgid "You must be logged in to leave a group."
+msgstr ""
+
+#: actions/leavegroup.php:100 lib/command.php:373
+msgid "You are not a member of that group."
+msgstr ""
+
+#. TRANS: Message given having removed a user from a group.
+#. TRANS: %1$s is the nickname of the user, %2$s is the nickname of the group.
+#: actions/leavegroup.php:137 lib/command.php:392
+#, php-format
+msgid "%1$s left group %2$s"
+msgstr ""
+
+#: actions/login.php:102 actions/otp.php:62 actions/register.php:144
+msgid "Already logged in."
+msgstr ""
+
+#: actions/login.php:148
+msgid "Incorrect username or password."
+msgstr ""
+
+#: actions/login.php:154 actions/otp.php:120
+msgid "Error setting user. You are probably not authorized."
+msgstr ""
+
+#: actions/login.php:210 actions/login.php:263 lib/logingroupnav.php:79
+msgid "Login"
+msgstr ""
+
+#: actions/login.php:249
+msgid "Login to site"
+msgstr ""
+
+#: actions/login.php:258 actions/register.php:485
+msgid "Remember me"
+msgstr ""
+
+#: actions/login.php:259 actions/register.php:487
+msgid "Automatically login in the future; not for shared computers!"
+msgstr ""
+
+#: actions/login.php:269
+msgid "Lost or forgotten password?"
+msgstr ""
+
+#: actions/login.php:288
+msgid ""
+"For security reasons, please re-enter your user name and password before "
+"changing your settings."
+msgstr ""
+
+#: actions/login.php:292
+msgid "Login with your username and password."
+msgstr ""
+
+#: actions/login.php:295
+#, php-format
+msgid ""
+"Don't have a username yet? [Register](%%action.register%%) a new account."
+msgstr ""
+
+#: actions/makeadmin.php:92
+msgid "Only an admin can make another user an admin."
+msgstr ""
+
+#: actions/makeadmin.php:96
+#, php-format
+msgid "%1$s is already an admin for group \"%2$s\"."
+msgstr ""
+
+#: actions/makeadmin.php:133
+#, php-format
+msgid "Can't get membership record for %1$s in group %2$s."
+msgstr ""
+
+#: actions/makeadmin.php:146
+#, php-format
+msgid "Can't make %1$s an admin for group %2$s."
+msgstr ""
+
+#: actions/microsummary.php:69
+msgid "No current status."
+msgstr ""
+
+#: actions/newapplication.php:52
+msgid "New Application"
+msgstr ""
+
+#: actions/newapplication.php:64
+msgid "You must be logged in to register an application."
+msgstr ""
+
+#: actions/newapplication.php:143
+msgid "Use this form to register a new application."
+msgstr ""
+
+#: actions/newapplication.php:176
+msgid "Source URL is required."
+msgstr ""
+
+#: actions/newapplication.php:258 actions/newapplication.php:267
+msgid "Could not create application."
+msgstr ""
+
+#: actions/newgroup.php:53
+msgid "New group"
+msgstr ""
+
+#: actions/newgroup.php:110
+msgid "Use this form to create a new group."
+msgstr ""
+
+#: actions/newmessage.php:71 actions/newmessage.php:231
+msgid "New message"
+msgstr ""
+
+#: actions/newmessage.php:121 actions/newmessage.php:161 lib/command.php:481
+msgid "You can't send a message to this user."
+msgstr ""
+
+#: actions/newmessage.php:144 actions/newnotice.php:136 lib/command.php:463
+#: lib/command.php:555
+msgid "No content!"
+msgstr ""
+
+#: actions/newmessage.php:158
+msgid "No recipient specified."
+msgstr ""
+
+#: actions/newmessage.php:164 lib/command.php:484
+msgid ""
+"Don't send a message to yourself; just say it to yourself quietly instead."
+msgstr ""
+
+#: actions/newmessage.php:181
+msgid "Message sent"
+msgstr ""
+
+#: actions/newmessage.php:185
+#, php-format
+msgid "Direct message to %s sent."
+msgstr ""
+
+#: actions/newmessage.php:210 actions/newnotice.php:251 lib/channel.php:189
+msgid "Ajax Error"
+msgstr ""
+
+#: actions/newnotice.php:69
+msgid "New notice"
+msgstr ""
+
+#: actions/newnotice.php:217
+msgid "Notice posted"
+msgstr ""
+
+#: actions/noticesearch.php:68
+#, php-format
+msgid ""
+"Search for notices on %%site.name%% by their contents. Separate search terms "
+"by spaces; they must be 3 characters or more."
+msgstr ""
+
+#: actions/noticesearch.php:78
+msgid "Text search"
+msgstr ""
+
+#: actions/noticesearch.php:91
+#, php-format
+msgid "Search results for \"%1$s\" on %2$s"
+msgstr ""
+
+#: actions/noticesearch.php:121
+#, php-format
+msgid ""
+"Be the first to [post on this topic](%%%%action.newnotice%%%%?"
+"status_textarea=%s)!"
+msgstr ""
+
+#: actions/noticesearch.php:124
+#, php-format
+msgid ""
+"Why not [register an account](%%%%action.register%%%%) and be the first to "
+"[post on this topic](%%%%action.newnotice%%%%?status_textarea=%s)!"
+msgstr ""
+
+#: actions/noticesearchrss.php:96
+#, php-format
+msgid "Updates with \"%s\""
+msgstr ""
+
+#: actions/noticesearchrss.php:98
+#, php-format
+msgid "Updates matching search term \"%1$s\" on %2$s!"
+msgstr ""
+
+#: actions/nudge.php:85
+msgid ""
+"This user doesn't allow nudges or hasn't confirmed or set their email yet."
+msgstr ""
+
+#: actions/nudge.php:94
+msgid "Nudge sent"
+msgstr ""
+
+#: actions/nudge.php:97
+msgid "Nudge sent!"
+msgstr ""
+
+#: actions/oauthappssettings.php:59
+msgid "You must be logged in to list your applications."
+msgstr ""
+
+#: actions/oauthappssettings.php:74
+msgid "OAuth applications"
+msgstr ""
+
+#: actions/oauthappssettings.php:85
+msgid "Applications you have registered"
+msgstr ""
+
+#: actions/oauthappssettings.php:135
+#, php-format
+msgid "You have not registered any applications yet."
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:72
+msgid "Connected applications"
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:83
+msgid "You have allowed the following applications to access you account."
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:175
+msgid "You are not a user of that application."
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:186
+#, php-format
+msgid "Unable to revoke access for app: %s."
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:198
+msgid "You have not authorized any applications to use your account."
+msgstr ""
+
+#: actions/oauthconnectionssettings.php:211
+msgid "Developers can edit the registration settings for their applications "
+msgstr ""
+
+#: actions/oembed.php:80 actions/shownotice.php:100
+msgid "Notice has no profile."
+msgstr ""
+
+#: actions/oembed.php:87 actions/shownotice.php:175
+#, php-format
+msgid "%1$s's status on %2$s"
+msgstr ""
+
+#. TRANS: Error message displaying attachments. %s is a raw MIME type (eg 'image/png')
+#: actions/oembed.php:159
+#, php-format
+msgid "Content type %s not supported."
+msgstr ""
+
+#. TRANS: Error message displaying attachments. %s is the site's base URL.
+#: actions/oembed.php:163
+#, php-format
+msgid "Only %s URLs over plain HTTP please."
+msgstr ""
+
+#. TRANS: Client error on an API request with an unsupported data format.
+#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1204
+#: lib/apiaction.php:1232 lib/apiaction.php:1355
+msgid "Not a supported data format."
+msgstr ""
+
+#: actions/opensearch.php:64
+msgid "People Search"
+msgstr ""
+
+#: actions/opensearch.php:67
+msgid "Notice Search"
+msgstr ""
+
+#: actions/othersettings.php:60
+msgid "Other settings"
+msgstr ""
+
+#: actions/othersettings.php:71
+msgid "Manage various other options."
+msgstr ""
+
+#: actions/othersettings.php:108
+msgid " (free service)"
+msgstr ""
+
+#: actions/othersettings.php:116
+msgid "Shorten URLs with"
+msgstr ""
+
+#: actions/othersettings.php:117
+msgid "Automatic shortening service to use."
+msgstr ""
+
+#: actions/othersettings.php:122
+msgid "View profile designs"
+msgstr ""
+
+#: actions/othersettings.php:123
+msgid "Show or hide profile designs."
+msgstr ""
+
+#: actions/othersettings.php:153
+msgid "URL shortening service is too long (max 50 chars)."
+msgstr ""
+
+#: actions/otp.php:69
+msgid "No user ID specified."
+msgstr ""
+
+#: actions/otp.php:83
+msgid "No login token specified."
+msgstr ""
+
+#: actions/otp.php:90
+msgid "No login token requested."
+msgstr ""
+
+#: actions/otp.php:95
+msgid "Invalid login token specified."
+msgstr ""
+
+#: actions/otp.php:104
+msgid "Login token expired."
+msgstr ""
+
+#: actions/outbox.php:58
+#, php-format
+msgid "Outbox for %1$s - page %2$d"
+msgstr ""
+
+#: actions/outbox.php:61
+#, php-format
+msgid "Outbox for %s"
+msgstr ""
+
+#: actions/outbox.php:116
+msgid "This is your outbox, which lists private messages you have sent."
+msgstr ""
+
+#: actions/passwordsettings.php:58
+msgid "Change password"
+msgstr ""
+
+#: actions/passwordsettings.php:69
+msgid "Change your password."
+msgstr ""
+
+#: actions/passwordsettings.php:96 actions/recoverpassword.php:231
+msgid "Password change"
+msgstr ""
+
+#: actions/passwordsettings.php:104
+msgid "Old password"
+msgstr ""
+
+#: actions/passwordsettings.php:108 actions/recoverpassword.php:235
+msgid "New password"
+msgstr ""
+
+#: actions/passwordsettings.php:109
+msgid "6 or more characters"
+msgstr ""
+
+#: actions/passwordsettings.php:112 actions/recoverpassword.php:239
+#: actions/register.php:440
+msgid "Confirm"
+msgstr ""
+
+#: actions/passwordsettings.php:113 actions/recoverpassword.php:240
+msgid "Same as password above"
+msgstr ""
+
+#: actions/passwordsettings.php:117
+msgid "Change"
+msgstr ""
+
+#: actions/passwordsettings.php:154 actions/register.php:237
+msgid "Password must be 6 or more characters."
+msgstr ""
+
+#: actions/passwordsettings.php:157 actions/register.php:240
+msgid "Passwords don't match."
+msgstr ""
+
+#: actions/passwordsettings.php:165
+msgid "Incorrect old password"
+msgstr ""
+
+#: actions/passwordsettings.php:181
+msgid "Error saving user; invalid."
+msgstr ""
+
+#: actions/passwordsettings.php:186 actions/recoverpassword.php:381
+msgid "Can't save new password."
+msgstr ""
+
+#: actions/passwordsettings.php:192 actions/recoverpassword.php:211
+msgid "Password saved."
+msgstr ""
+
+#. TRANS: Menu item for site administration
+#: actions/pathsadminpanel.php:59 lib/adminpanelaction.php:384
+msgid "Paths"
+msgstr ""
+
+#: actions/pathsadminpanel.php:70
+msgid "Path and server settings for this StatusNet site."
+msgstr ""
+
+#: actions/pathsadminpanel.php:157
+#, php-format
+msgid "Theme directory not readable: %s."
+msgstr ""
+
+#: actions/pathsadminpanel.php:163
+#, php-format
+msgid "Avatar directory not writable: %s."
+msgstr ""
+
+#: actions/pathsadminpanel.php:169
+#, php-format
+msgid "Background directory not writable: %s."
+msgstr ""
+
+#: actions/pathsadminpanel.php:177
+#, php-format
+msgid "Locales directory not readable: %s."
+msgstr ""
+
+#: actions/pathsadminpanel.php:183
+msgid "Invalid SSL server. The maximum length is 255 characters."
+msgstr ""
+
+#: actions/pathsadminpanel.php:234 actions/siteadminpanel.php:58
+msgid "Site"
+msgstr ""
+
+#: actions/pathsadminpanel.php:238
+msgid "Server"
+msgstr ""
+
+#: actions/pathsadminpanel.php:238
+msgid "Site's server hostname."
+msgstr ""
+
+#: actions/pathsadminpanel.php:242
+msgid "Path"
+msgstr ""
+
+#: actions/pathsadminpanel.php:242
+msgid "Site path"
+msgstr ""
+
+#: actions/pathsadminpanel.php:246
+msgid "Path to locales"
+msgstr ""
+
+#: actions/pathsadminpanel.php:246
+msgid "Directory path to locales"
+msgstr ""
+
+#: actions/pathsadminpanel.php:250
+msgid "Fancy URLs"
+msgstr ""
+
+#: actions/pathsadminpanel.php:252
+msgid "Use fancy (more readable and memorable) URLs?"
+msgstr ""
+
+#: actions/pathsadminpanel.php:259
+msgid "Theme"
+msgstr ""
+
+#: actions/pathsadminpanel.php:264
+msgid "Theme server"
+msgstr ""
+
+#: actions/pathsadminpanel.php:268
+msgid "Theme path"
+msgstr ""
+
+#: actions/pathsadminpanel.php:272
+msgid "Theme directory"
+msgstr ""
+
+#: actions/pathsadminpanel.php:279
+msgid "Avatars"
+msgstr ""
+
+#: actions/pathsadminpanel.php:284
+msgid "Avatar server"
+msgstr ""
+
+#: actions/pathsadminpanel.php:288
+msgid "Avatar path"
+msgstr ""
+
+#: actions/pathsadminpanel.php:292
+msgid "Avatar directory"
+msgstr ""
+
+#: actions/pathsadminpanel.php:301
+msgid "Backgrounds"
+msgstr ""
+
+#: actions/pathsadminpanel.php:305
+msgid "Background server"
+msgstr ""
+
+#: actions/pathsadminpanel.php:309
+msgid "Background path"
+msgstr ""
+
+#: actions/pathsadminpanel.php:313
+msgid "Background directory"
+msgstr ""
+
+#: actions/pathsadminpanel.php:320
+msgid "SSL"
+msgstr ""
+
+#: actions/pathsadminpanel.php:323 actions/snapshotadminpanel.php:202
+msgid "Never"
+msgstr ""
+
+#: actions/pathsadminpanel.php:324
+msgid "Sometimes"
+msgstr ""
+
+#: actions/pathsadminpanel.php:325
+msgid "Always"
+msgstr ""
+
+#: actions/pathsadminpanel.php:329
+msgid "Use SSL"
+msgstr ""
+
+#: actions/pathsadminpanel.php:330
+msgid "When to use SSL"
+msgstr ""
+
+#: actions/pathsadminpanel.php:335
+msgid "SSL server"
+msgstr ""
+
+#: actions/pathsadminpanel.php:336
+msgid "Server to direct SSL requests to"
+msgstr ""
+
+#: actions/pathsadminpanel.php:352
+msgid "Save paths"
+msgstr ""
+
+#: actions/peoplesearch.php:52
+#, php-format
+msgid ""
+"Search for people on %%site.name%% by their name, location, or interests. "
+"Separate the terms by spaces; they must be 3 characters or more."
+msgstr ""
+
+#: actions/peoplesearch.php:58
+msgid "People search"
+msgstr ""
+
+#: actions/peopletag.php:68
+#, php-format
+msgid "Not a valid people tag: %s."
+msgstr ""
+
+#: actions/peopletag.php:142
+#, php-format
+msgid "Users self-tagged with %1$s - page %2$d"
+msgstr ""
+
+#: actions/postnotice.php:95
+msgid "Invalid notice content."
+msgstr ""
+
+#: actions/postnotice.php:101
+#, php-format
+msgid "Notice license ‘%1$s’ is not compatible with site license ‘%2$s’."
+msgstr ""
+
+#: actions/profilesettings.php:60
+msgid "Profile settings"
+msgstr ""
+
+#: actions/profilesettings.php:71
+msgid ""
+"You can update your personal profile info here so people know more about you."
+msgstr ""
+
+#: actions/profilesettings.php:99
+msgid "Profile information"
+msgstr ""
+
+#: actions/profilesettings.php:108 lib/groupeditform.php:154
+msgid "1-64 lowercase letters or numbers, no punctuation or spaces"
+msgstr ""
+
+#: actions/profilesettings.php:111 actions/register.php:455
+#: actions/showgroup.php:256 actions/tagother.php:104
+#: lib/groupeditform.php:157 lib/userprofile.php:150
+msgid "Full name"
+msgstr ""
+
+#. TRANS: Form input field label.
+#: actions/profilesettings.php:115 actions/register.php:460
+#: lib/applicationeditform.php:244 lib/groupeditform.php:161
+msgid "Homepage"
+msgstr ""
+
+#: actions/profilesettings.php:117 actions/register.php:462
+msgid "URL of your homepage, blog, or profile on another site"
+msgstr ""
+
+#: actions/profilesettings.php:122 actions/register.php:468
+#, php-format
+msgid "Describe yourself and your interests in %d chars"
+msgstr ""
+
+#: actions/profilesettings.php:125 actions/register.php:471
+msgid "Describe yourself and your interests"
+msgstr ""
+
+#: actions/profilesettings.php:127 actions/register.php:473
+msgid "Bio"
+msgstr ""
+
+#: actions/profilesettings.php:132 actions/register.php:478
+#: actions/showgroup.php:265 actions/tagother.php:112
+#: actions/userauthorization.php:166 lib/groupeditform.php:177
+#: lib/userprofile.php:165
+msgid "Location"
+msgstr ""
+
+#: actions/profilesettings.php:134 actions/register.php:480
+msgid "Where you are, like \"City, State (or Region), Country\""
+msgstr ""
+
+#: actions/profilesettings.php:138
+msgid "Share my current location when posting notices"
+msgstr ""
+
+#: actions/profilesettings.php:145 actions/tagother.php:149
+#: actions/tagother.php:209 lib/subscriptionlist.php:106
+#: lib/subscriptionlist.php:108 lib/userprofile.php:210
+msgid "Tags"
+msgstr ""
+
+#: actions/profilesettings.php:147
+msgid ""
+"Tags for yourself (letters, numbers, -, ., and _), comma- or space- separated"
+msgstr ""
+
+#: actions/profilesettings.php:151
+msgid "Language"
+msgstr ""
+
+#: actions/profilesettings.php:152
+msgid "Preferred language"
+msgstr ""
+
+#: actions/profilesettings.php:161
+msgid "Timezone"
+msgstr ""
+
+#: actions/profilesettings.php:162
+msgid "What timezone are you normally in?"
+msgstr ""
+
+#: actions/profilesettings.php:167
+msgid ""
+"Automatically subscribe to whoever subscribes to me (best for non-humans)"
+msgstr ""
+
+#: actions/profilesettings.php:228 actions/register.php:230
+#, php-format
+msgid "Bio is too long (max %d chars)."
+msgstr ""
+
+#: actions/profilesettings.php:235 actions/siteadminpanel.php:151
+msgid "Timezone not selected."
+msgstr ""
+
+#: actions/profilesettings.php:241
+msgid "Language is too long (max 50 chars)."
+msgstr ""
+
+#: actions/profilesettings.php:253 actions/tagother.php:178
+#, php-format
+msgid "Invalid tag: \"%s\""
+msgstr ""
+
+#: actions/profilesettings.php:306
+msgid "Couldn't update user for autosubscribe."
+msgstr ""
+
+#: actions/profilesettings.php:363
+msgid "Couldn't save location prefs."
+msgstr ""
+
+#: actions/profilesettings.php:375
+msgid "Couldn't save profile."
+msgstr ""
+
+#: actions/profilesettings.php:383
+msgid "Couldn't save tags."
+msgstr ""
+
+#. TRANS: Message after successful saving of administrative settings.
+#: actions/profilesettings.php:391 lib/adminpanelaction.php:141
+msgid "Settings saved."
+msgstr ""
+
+#: actions/public.php:83
+#, php-format
+msgid "Beyond the page limit (%s)."
+msgstr ""
+
+#: actions/public.php:92
+msgid "Could not retrieve public stream."
+msgstr ""
+
+#: actions/public.php:130
+#, php-format
+msgid "Public timeline, page %d"
+msgstr ""
+
+#: actions/public.php:132 lib/publicgroupnav.php:79
+msgid "Public timeline"
+msgstr ""
+
+#: actions/public.php:160
+msgid "Public Stream Feed (RSS 1.0)"
+msgstr ""
+
+#: actions/public.php:164
+msgid "Public Stream Feed (RSS 2.0)"
+msgstr ""
+
+#: actions/public.php:168
+msgid "Public Stream Feed (Atom)"
+msgstr ""
+
+#: actions/public.php:188
+#, php-format
+msgid ""
+"This is the public timeline for %%site.name%% but no one has posted anything "
+"yet."
+msgstr ""
+
+#: actions/public.php:191
+msgid "Be the first to post!"
+msgstr ""
+
+#: actions/public.php:195
+#, php-format
+msgid ""
+"Why not [register an account](%%action.register%%) and be the first to post!"
+msgstr ""
+
+#: actions/public.php:242
+#, php-format
+msgid ""
+"This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
+"blogging) service based on the Free Software [StatusNet](http://status.net/) "
+"tool. [Join now](%%action.register%%) to share notices about yourself with "
+"friends, family, and colleagues! ([Read more](%%doc.help%%))"
+msgstr ""
+
+#: actions/public.php:247
+#, php-format
+msgid ""
+"This is %%site.name%%, a [micro-blogging](http://en.wikipedia.org/wiki/Micro-"
+"blogging) service based on the Free Software [StatusNet](http://status.net/) "
+"tool."
+msgstr ""
+
+#: actions/publictagcloud.php:57
+msgid "Public tag cloud"
+msgstr ""
+
+#: actions/publictagcloud.php:63
+#, php-format
+msgid "These are most popular recent tags on %s "
+msgstr ""
+
+#: actions/publictagcloud.php:69
+#, php-format
+msgid "No one has posted a notice with a [hashtag](%%doc.tags%%) yet."
+msgstr ""
+
+#: actions/publictagcloud.php:72
+msgid "Be the first to post one!"
+msgstr ""
+
+#: actions/publictagcloud.php:75
+#, php-format
+msgid ""
+"Why not [register an account](%%action.register%%) and be the first to post "
+"one!"
+msgstr ""
+
+#: actions/publictagcloud.php:134
+msgid "Tag cloud"
+msgstr ""
+
+#: actions/recoverpassword.php:36
+msgid "You are already logged in!"
+msgstr ""
+
+#: actions/recoverpassword.php:62
+msgid "No such recovery code."
+msgstr ""
+
+#: actions/recoverpassword.php:66
+msgid "Not a recovery code."
+msgstr ""
+
+#: actions/recoverpassword.php:73
+msgid "Recovery code for unknown user."
+msgstr ""
+
+#: actions/recoverpassword.php:86
+msgid "Error with confirmation code."
+msgstr ""
+
+#: actions/recoverpassword.php:97
+msgid "This confirmation code is too old. Please start again."
+msgstr ""
+
+#: actions/recoverpassword.php:111
+msgid "Could not update user with confirmed email address."
+msgstr ""
+
+#: actions/recoverpassword.php:152
+msgid ""
+"If you have forgotten or lost your password, you can get a new one sent to "
+"the email address you have stored in your account."
+msgstr ""
+
+#: actions/recoverpassword.php:158
+msgid "You have been identified. Enter a new password below. "
+msgstr ""
+
+#: actions/recoverpassword.php:188
+msgid "Password recovery"
+msgstr ""
+
+#: actions/recoverpassword.php:191
+msgid "Nickname or email address"
+msgstr ""
+
+#: actions/recoverpassword.php:193
+msgid "Your nickname on this server, or your registered email address."
+msgstr ""
+
+#: actions/recoverpassword.php:199 actions/recoverpassword.php:200
+msgid "Recover"
+msgstr ""
+
+#: actions/recoverpassword.php:208
+msgid "Reset password"
+msgstr ""
+
+#: actions/recoverpassword.php:209
+msgid "Recover password"
+msgstr ""
+
+#: actions/recoverpassword.php:210 actions/recoverpassword.php:335
+msgid "Password recovery requested"
+msgstr ""
+
+#: actions/recoverpassword.php:213
+msgid "Unknown action"
+msgstr ""
+
+#: actions/recoverpassword.php:236
+msgid "6 or more characters, and don't forget it!"
+msgstr ""
+
+#: actions/recoverpassword.php:243
+msgid "Reset"
+msgstr ""
+
+#: actions/recoverpassword.php:252
+msgid "Enter a nickname or email address."
+msgstr ""
+
+#: actions/recoverpassword.php:282
+msgid "No user with that email address or username."
+msgstr ""
+
+#: actions/recoverpassword.php:299
+msgid "No registered email address for that user."
+msgstr ""
+
+#: actions/recoverpassword.php:313
+msgid "Error saving address confirmation."
+msgstr ""
+
+#: actions/recoverpassword.php:338
+msgid ""
+"Instructions for recovering your password have been sent to the email "
+"address registered to your account."
+msgstr ""
+
+#: actions/recoverpassword.php:357
+msgid "Unexpected password reset."
+msgstr ""
+
+#: actions/recoverpassword.php:365
+msgid "Password must be 6 chars or more."
+msgstr ""
+
+#: actions/recoverpassword.php:369
+msgid "Password and confirmation do not match."
+msgstr ""
+
+#: actions/recoverpassword.php:388 actions/register.php:255
+msgid "Error setting user."
+msgstr ""
+
+#: actions/recoverpassword.php:395
+msgid "New password successfully saved. You are now logged in."
+msgstr ""
+
+#: actions/register.php:92 actions/register.php:196 actions/register.php:412
+msgid "Sorry, only invited people can register."
+msgstr ""
+
+#: actions/register.php:99
+msgid "Sorry, invalid invitation code."
+msgstr ""
+
+#: actions/register.php:119
+msgid "Registration successful"
+msgstr ""
+
+#: actions/register.php:121 actions/register.php:506 lib/logingroupnav.php:85
+msgid "Register"
+msgstr ""
+
+#: actions/register.php:142
+msgid "Registration not allowed."
+msgstr ""
+
+#: actions/register.php:205
+msgid "You can't register if you don't agree to the license."
+msgstr ""
+
+#: actions/register.php:219
+msgid "Email address already exists."
+msgstr ""
+
+#: actions/register.php:250 actions/register.php:272
+msgid "Invalid username or password."
+msgstr ""
+
+#: actions/register.php:350
+msgid ""
+"With this form you can create a new account. You can then post notices and "
+"link up to friends and colleagues. "
+msgstr ""
+
+#: actions/register.php:432
+msgid "1-64 lowercase letters or numbers, no punctuation or spaces. Required."
+msgstr ""
+
+#: actions/register.php:437
+msgid "6 or more characters. Required."
+msgstr ""
+
+#: actions/register.php:441
+msgid "Same as password above. Required."
+msgstr ""
+
+#. TRANS: Link description in user account settings menu.
+#: actions/register.php:445 actions/register.php:449
+#: actions/siteadminpanel.php:238 lib/accountsettingsaction.php:132
+msgid "Email"
+msgstr ""
+
+#: actions/register.php:446 actions/register.php:450
+msgid "Used only for updates, announcements, and password recovery"
+msgstr ""
+
+#: actions/register.php:457
+msgid "Longer name, preferably your \"real\" name"
+msgstr ""
+
+#: actions/register.php:518
+#, php-format
+msgid ""
+"I understand that content and data of %1$s are private and confidential."
+msgstr ""
+
+#: actions/register.php:528
+#, php-format
+msgid "My text and files are copyright by %1$s."
+msgstr ""
+
+#. TRANS: Copyright checkbox label in registration dialog, for all rights reserved with ownership left to contributors.
+#: actions/register.php:532
+msgid "My text and files remain under my own copyright."
+msgstr ""
+
+#. TRANS: Copyright checkbox label in registration dialog, for all rights reserved.
+#: actions/register.php:535
+msgid "All rights reserved."
+msgstr ""
+
+#. TRANS: Copyright checkbox label in registration dialog, for Creative Commons-style licenses.
+#: actions/register.php:540
+#, php-format
+msgid ""
+"My text and files are available under %s except this private data: password, "
+"email address, IM address, and phone number."
+msgstr ""
+
+#: actions/register.php:583
+#, php-format
+msgid ""
+"Congratulations, %1$s! And welcome to %%%%site.name%%%%. From here, you may "
+"want to...\n"
+"\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"
+"* 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"
+"\n"
+"Thanks for signing up and we hope you enjoy using this service."
+msgstr ""
+
+#: actions/register.php:607
+msgid ""
+"(You should receive a message by email momentarily, with instructions on how "
+"to confirm your email address.)"
+msgstr ""
+
+#: actions/remotesubscribe.php:98
+#, php-format
+msgid ""
+"To subscribe, you can [login](%%action.login%%), or [register](%%action."
+"register%%) a new account. If you already have an account on a [compatible "
+"microblogging site](%%doc.openmublog%%), enter your profile URL below."
+msgstr ""
+
+#: actions/remotesubscribe.php:112
+msgid "Remote subscribe"
+msgstr ""
+
+#: actions/remotesubscribe.php:124
+msgid "Subscribe to a remote user"
+msgstr ""
+
+#: actions/remotesubscribe.php:129
+msgid "User nickname"
+msgstr ""
+
+#: actions/remotesubscribe.php:130
+msgid "Nickname of the user you want to follow"
+msgstr ""
+
+#: actions/remotesubscribe.php:133
+msgid "Profile URL"
+msgstr ""
+
+#: actions/remotesubscribe.php:134
+msgid "URL of your profile on another compatible microblogging service"
+msgstr ""
+
+#: actions/remotesubscribe.php:137 lib/subscribeform.php:139
+#: lib/userprofile.php:406
+msgid "Subscribe"
+msgstr ""
+
+#: actions/remotesubscribe.php:159
+msgid "Invalid profile URL (bad format)"
+msgstr ""
+
+#: actions/remotesubscribe.php:168
+msgid "Not a valid profile URL (no YADIS document or invalid XRDS defined)."
+msgstr ""
+
+#: actions/remotesubscribe.php:176
+msgid "That’s a local profile! Login to subscribe."
+msgstr ""
+
+#: actions/remotesubscribe.php:183
+msgid "Couldn’t get a request token."
+msgstr ""
+
+#: actions/repeat.php:57
+msgid "Only logged-in users can repeat notices."
+msgstr ""
+
+#: actions/repeat.php:64 actions/repeat.php:71
+msgid "No notice specified."
+msgstr ""
+
+#: actions/repeat.php:76
+msgid "You can't repeat your own notice."
+msgstr ""
+
+#: actions/repeat.php:90
+msgid "You already repeated that notice."
+msgstr ""
+
+#: actions/repeat.php:114 lib/noticelist.php:675
+msgid "Repeated"
+msgstr ""
+
+#: actions/repeat.php:119
+msgid "Repeated!"
+msgstr ""
+
+#: actions/replies.php:126 actions/repliesrss.php:68
+#: lib/personalgroupnav.php:105
+#, php-format
+msgid "Replies to %s"
+msgstr ""
+
+#: actions/replies.php:128
+#, php-format
+msgid "Replies to %1$s, page %2$d"
+msgstr ""
+
+#: actions/replies.php:145
+#, php-format
+msgid "Replies feed for %s (RSS 1.0)"
+msgstr ""
+
+#: actions/replies.php:152
+#, php-format
+msgid "Replies feed for %s (RSS 2.0)"
+msgstr ""
+
+#: actions/replies.php:159
+#, php-format
+msgid "Replies feed for %s (Atom)"
+msgstr ""
+
+#: actions/replies.php:199
+#, fuzzy, php-format
+msgid ""
+"This is the timeline showing replies to %1$s but %2$s hasn't received a "
+"notice to them yet."
+msgstr ""
+"Dette er tidslinjen for %s og venner, men ingen har skrevet noget endnu."
+
+#: actions/replies.php:204
+#, php-format
+msgid ""
+"You can engage other users in a conversation, subscribe to more people or "
+"[join groups](%%action.groups%%)."
+msgstr ""
+
+#: actions/replies.php:206
+#, php-format
+msgid ""
+"You can try to [nudge %1$s](../%2$s) or [post something to them](%%%%action."
+"newnotice%%%%?status_textarea=%3$s)."
+msgstr ""
+
+#: actions/repliesrss.php:72
+#, php-format
+msgid "Replies to %1$s on %2$s!"
+msgstr ""
+
+#: actions/revokerole.php:75
+msgid "You cannot revoke user roles on this site."
+msgstr ""
+
+#: actions/revokerole.php:82
+msgid "User doesn't have this role."
+msgstr ""
+
+#: actions/rsd.php:146 actions/version.php:159
+msgid "StatusNet"
+msgstr ""
+
+#: 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 ""
+
+#. TRANS: Menu item for site administration
+#: actions/sessionsadminpanel.php:54 actions/sessionsadminpanel.php:170
+#: lib/adminpanelaction.php:392
+msgid "Sessions"
+msgstr ""
+
+#: actions/sessionsadminpanel.php:65
+msgid "Session settings for this StatusNet site."
+msgstr ""
+
+#: actions/sessionsadminpanel.php:175
+msgid "Handle sessions"
+msgstr ""
+
+#: actions/sessionsadminpanel.php:177
+msgid "Whether to handle sessions ourselves."
+msgstr ""
+
+#: actions/sessionsadminpanel.php:181
+msgid "Session debugging"
+msgstr ""
+
+#: actions/sessionsadminpanel.php:183
+msgid "Turn on debugging output for sessions."
+msgstr ""
+
+#: actions/sessionsadminpanel.php:199 actions/siteadminpanel.php:292
+#: actions/useradminpanel.php:294
+msgid "Save site settings"
+msgstr ""
+
+#: actions/showapplication.php:82
+msgid "You must be logged in to view an application."
+msgstr ""
+
+#: actions/showapplication.php:157
+msgid "Application profile"
+msgstr ""
+
+#. TRANS: Form input field label for application icon.
+#: actions/showapplication.php:159 lib/applicationeditform.php:182
+msgid "Icon"
+msgstr ""
+
+#. TRANS: Form input field label for application name.
+#: actions/showapplication.php:169 actions/version.php:197
+#: lib/applicationeditform.php:199
+msgid "Name"
+msgstr ""
+
+#. TRANS: Form input field label.
+#: actions/showapplication.php:178 lib/applicationeditform.php:235
+msgid "Organization"
+msgstr ""
+
+#. TRANS: Form input field label.
+#: actions/showapplication.php:187 actions/version.php:200
+#: lib/applicationeditform.php:216 lib/groupeditform.php:172
+msgid "Description"
+msgstr ""
+
+#: actions/showapplication.php:192 actions/showgroup.php:436
+#: lib/profileaction.php:187
+msgid "Statistics"
+msgstr ""
+
+#: actions/showapplication.php:203
+#, php-format
+msgid "Created by %1$s - %2$s access by default - %3$d users"
+msgstr ""
+
+#: actions/showapplication.php:213
+msgid "Application actions"
+msgstr ""
+
+#: actions/showapplication.php:236
+msgid "Reset key & secret"
+msgstr ""
+
+#: actions/showapplication.php:261
+msgid "Application info"
+msgstr ""
+
+#: actions/showapplication.php:263
+msgid "Consumer key"
+msgstr ""
+
+#: actions/showapplication.php:268
+msgid "Consumer secret"
+msgstr ""
+
+#: actions/showapplication.php:273
+msgid "Request token URL"
+msgstr ""
+
+#: actions/showapplication.php:278
+msgid "Access token URL"
+msgstr ""
+
+#: actions/showapplication.php:283
+msgid "Authorize URL"
+msgstr ""
+
+#: actions/showapplication.php:288
+msgid ""
+"Note: We support HMAC-SHA1 signatures. We do not support the plaintext "
+"signature method."
+msgstr ""
+
+#: actions/showapplication.php:309
+msgid "Are you sure you want to reset your consumer key and secret?"
+msgstr ""
+
+#: actions/showfavorites.php:79
+#, php-format
+msgid "%1$s's favorite notices, page %2$d"
+msgstr ""
+
+#: actions/showfavorites.php:132
+msgid "Could not retrieve favorite notices."
+msgstr ""
+
+#: actions/showfavorites.php:171
+#, php-format
+msgid "Feed for favorites of %s (RSS 1.0)"
+msgstr ""
+
+#: actions/showfavorites.php:178
+#, php-format
+msgid "Feed for favorites of %s (RSS 2.0)"
+msgstr ""
+
+#: actions/showfavorites.php:185
+#, php-format
+msgid "Feed for favorites of %s (Atom)"
+msgstr ""
+
+#: actions/showfavorites.php:206
+msgid ""
+"You haven't chosen any favorite notices yet. Click the fave button on "
+"notices you like to bookmark them for later or shed a spotlight on them."
+msgstr ""
+
+#: actions/showfavorites.php:208
+#, php-format
+msgid ""
+"%s hasn't added any favorite notices yet. Post something interesting they "
+"would add to their favorites :)"
+msgstr ""
+
+#: actions/showfavorites.php:212
+#, php-format
+msgid ""
+"%s hasn't added any favorite notices yet. Why not [register an account](%%%%"
+"action.register%%%%) and then post something interesting they would add to "
+"their favorites :)"
+msgstr ""
+
+#: actions/showfavorites.php:243
+msgid "This is a way to share what you like."
+msgstr ""
+
+#: actions/showgroup.php:82 lib/groupnav.php:86
+#, php-format
+msgid "%s group"
+msgstr ""
+
+#: actions/showgroup.php:84
+#, php-format
+msgid "%1$s group, page %2$d"
+msgstr ""
+
+#: actions/showgroup.php:227
+msgid "Group profile"
+msgstr ""
+
+#: actions/showgroup.php:272 actions/tagother.php:118
+#: actions/userauthorization.php:175 lib/userprofile.php:178
+msgid "URL"
+msgstr ""
+
+#: actions/showgroup.php:283 actions/tagother.php:128
+#: actions/userauthorization.php:187 lib/userprofile.php:195
+msgid "Note"
+msgstr ""
+
+#: actions/showgroup.php:293 lib/groupeditform.php:184
+msgid "Aliases"
+msgstr ""
+
+#: actions/showgroup.php:302
+msgid "Group actions"
+msgstr ""
+
+#: actions/showgroup.php:338
+#, php-format
+msgid "Notice feed for %s group (RSS 1.0)"
+msgstr ""
+
+#: actions/showgroup.php:344
+#, php-format
+msgid "Notice feed for %s group (RSS 2.0)"
+msgstr ""
+
+#: actions/showgroup.php:350
+#, php-format
+msgid "Notice feed for %s group (Atom)"
+msgstr ""
+
+#: actions/showgroup.php:355
+#, php-format
+msgid "FOAF for %s group"
+msgstr ""
+
+#: actions/showgroup.php:393 actions/showgroup.php:445 lib/groupnav.php:91
+msgid "Members"
+msgstr ""
+
+#: actions/showgroup.php:398 lib/profileaction.php:117
+#: lib/profileaction.php:152 lib/profileaction.php:255 lib/section.php:95
+#: lib/subscriptionlist.php:127 lib/tagcloudsection.php:71
+msgid "(None)"
+msgstr ""
+
+#: actions/showgroup.php:404
+msgid "All members"
+msgstr ""
+
+#: actions/showgroup.php:439
+msgid "Created"
+msgstr ""
+
+#: actions/showgroup.php:455
+#, php-format
+msgid ""
+"**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en."
+"wikipedia.org/wiki/Micro-blogging) service based on the Free Software "
+"[StatusNet](http://status.net/) tool. Its members share short messages about "
+"their life and interests. [Join now](%%%%action.register%%%%) to become part "
+"of this group and many more! ([Read more](%%%%doc.help%%%%))"
+msgstr ""
+
+#: actions/showgroup.php:461
+#, php-format
+msgid ""
+"**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en."
+"wikipedia.org/wiki/Micro-blogging) service based on the Free Software "
+"[StatusNet](http://status.net/) tool. Its members share short messages about "
+"their life and interests. "
+msgstr ""
+
+#: actions/showgroup.php:489
+msgid "Admins"
+msgstr ""
+
+#: actions/showmessage.php:81
+msgid "No such message."
+msgstr ""
+
+#: actions/showmessage.php:98
+msgid "Only the sender and recipient may read this message."
+msgstr ""
+
+#: actions/showmessage.php:108
+#, php-format
+msgid "Message to %1$s on %2$s"
+msgstr ""
+
+#: actions/showmessage.php:113
+#, php-format
+msgid "Message from %1$s on %2$s"
+msgstr ""
+
+#: actions/shownotice.php:90
+msgid "Notice deleted."
+msgstr ""
+
+#: actions/showstream.php:73
+#, php-format
+msgid " tagged %s"
+msgstr ""
+
+#: actions/showstream.php:79
+#, php-format
+msgid "%1$s, page %2$d"
+msgstr ""
+
+#: actions/showstream.php:122
+#, php-format
+msgid "Notice feed for %1$s tagged %2$s (RSS 1.0)"
+msgstr ""
+
+#: actions/showstream.php:129
+#, php-format
+msgid "Notice feed for %s (RSS 1.0)"
+msgstr ""
+
+#: actions/showstream.php:136
+#, php-format
+msgid "Notice feed for %s (RSS 2.0)"
+msgstr ""
+
+#: actions/showstream.php:143
+#, php-format
+msgid "Notice feed for %s (Atom)"
+msgstr ""
+
+#: actions/showstream.php:148
+#, php-format
+msgid "FOAF for %s"
+msgstr ""
+
+#: 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: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:207
+#, php-format
+msgid ""
+"You can try to nudge %1$s or [post something to them](%%%%action.newnotice%%%"
+"%?status_textarea=%2$s)."
+msgstr ""
+
+#: actions/showstream.php:243
+#, php-format
+msgid ""
+"**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
+"wikipedia.org/wiki/Micro-blogging) service based on the Free Software "
+"[StatusNet](http://status.net/) tool. [Join now](%%%%action.register%%%%) to "
+"follow **%s**'s notices and many more! ([Read more](%%%%doc.help%%%%))"
+msgstr ""
+
+#: actions/showstream.php:248
+#, php-format
+msgid ""
+"**%s** has an account on %%%%site.name%%%%, a [micro-blogging](http://en."
+"wikipedia.org/wiki/Micro-blogging) service based on the Free Software "
+"[StatusNet](http://status.net/) tool. "
+msgstr ""
+
+#: actions/showstream.php:305
+#, php-format
+msgid "Repeat of %s"
+msgstr ""
+
+#: actions/silence.php:65 actions/unsilence.php:65
+msgid "You cannot silence users on this site."
+msgstr ""
+
+#: actions/silence.php:72
+msgid "User is already silenced."
+msgstr ""
+
+#: actions/siteadminpanel.php:69
+msgid "Basic settings for this StatusNet site"
+msgstr ""
+
+#: actions/siteadminpanel.php:133
+msgid "Site name must have non-zero length."
+msgstr ""
+
+#: actions/siteadminpanel.php:141
+msgid "You must have a valid contact email address."
+msgstr ""
+
+#: actions/siteadminpanel.php:159
+#, php-format
+msgid "Unknown language \"%s\"."
+msgstr ""
+
+#: actions/siteadminpanel.php:165
+msgid "Minimum text limit is 0 (unlimited)."
+msgstr ""
+
+#: actions/siteadminpanel.php:171
+msgid "Dupe limit must be one or more seconds."
+msgstr ""
+
+#: actions/siteadminpanel.php:221
+msgid "General"
+msgstr ""
+
+#: actions/siteadminpanel.php:224
+msgid "Site name"
+msgstr ""
+
+#: actions/siteadminpanel.php:225
+msgid "The name of your site, like \"Yourcompany Microblog\""
+msgstr ""
+
+#: actions/siteadminpanel.php:229
+msgid "Brought by"
+msgstr ""
+
+#: actions/siteadminpanel.php:230
+msgid "Text used for credits link in footer of each page"
+msgstr ""
+
+#: actions/siteadminpanel.php:234
+msgid "Brought by URL"
+msgstr ""
+
+#: actions/siteadminpanel.php:235
+msgid "URL used for credits link in footer of each page"
+msgstr ""
+
+#: actions/siteadminpanel.php:239
+msgid "Contact email address for your site"
+msgstr ""
+
+#: actions/siteadminpanel.php:245
+msgid "Local"
+msgstr ""
+
+#: actions/siteadminpanel.php:256
+msgid "Default timezone"
+msgstr ""
+
+#: actions/siteadminpanel.php:257
+msgid "Default timezone for the site; usually UTC."
+msgstr ""
+
+#: actions/siteadminpanel.php:262
+msgid "Default language"
+msgstr ""
+
+#: actions/siteadminpanel.php:263
+msgid "Site language when autodetection from browser settings is not available"
+msgstr ""
+
+#: actions/siteadminpanel.php:271
+msgid "Limits"
+msgstr ""
+
+#: actions/siteadminpanel.php:274
+msgid "Text limit"
+msgstr ""
+
+#: actions/siteadminpanel.php:274
+msgid "Maximum number of characters for notices."
+msgstr ""
+
+#: actions/siteadminpanel.php:278
+msgid "Dupe limit"
+msgstr ""
+
+#: actions/siteadminpanel.php:278
+msgid "How long users must wait (in seconds) to post the same thing again."
+msgstr ""
+
+#: actions/sitenoticeadminpanel.php:56
+msgid "Site Notice"
+msgstr ""
+
+#: actions/sitenoticeadminpanel.php:67
+msgid "Edit site-wide message"
+msgstr ""
+
+#: actions/sitenoticeadminpanel.php:103
+msgid "Unable to save site notice."
+msgstr ""
+
+#: actions/sitenoticeadminpanel.php:113
+msgid "Max length for the site-wide notice is 255 chars."
+msgstr ""
+
+#: actions/sitenoticeadminpanel.php:176
+msgid "Site notice text"
+msgstr ""
+
+#: actions/sitenoticeadminpanel.php:178
+msgid "Site-wide notice text (255 chars max; HTML okay)"
+msgstr ""
+
+#: actions/sitenoticeadminpanel.php:198
+msgid "Save site notice"
+msgstr ""
+
+#. TRANS: Title for SMS settings.
+#: actions/smssettings.php:59
+msgid "SMS settings"
+msgstr ""
+
+#. TRANS: SMS settings page instructions.
+#. TRANS: %%site.name%% is the name of the site.
+#: actions/smssettings.php:74
+#, php-format
+msgid "You can receive SMS messages through email from %%site.name%%."
+msgstr ""
+
+#. TRANS: Message given in the SMS settings if SMS is not enabled on the site.
+#: actions/smssettings.php:97
+msgid "SMS is not available."
+msgstr ""
+
+#. TRANS: Form legend for SMS settings form.
+#: actions/smssettings.php:111
+msgid "SMS address"
+msgstr ""
+
+#. TRANS: Form guide in SMS settings form.
+#: actions/smssettings.php:120
+msgid "Current confirmed SMS-enabled phone number."
+msgstr ""
+
+#. TRANS: Form guide in IM settings form.
+#: actions/smssettings.php:133
+msgid "Awaiting confirmation on this phone number."
+msgstr ""
+
+#. TRANS: Field label for SMS address input in SMS settings form.
+#: actions/smssettings.php:142
+msgid "Confirmation code"
+msgstr ""
+
+#. TRANS: Form field instructions in SMS settings form.
+#: actions/smssettings.php:144
+msgid "Enter the code you received on your phone."
+msgstr ""
+
+#. TRANS: Button label to confirm SMS confirmation code in SMS settings.
+#: actions/smssettings.php:148
+msgctxt "BUTTON"
+msgid "Confirm"
+msgstr ""
+
+#. TRANS: Field label for SMS phone number input in SMS settings form.
+#: actions/smssettings.php:153
+msgid "SMS phone number"
+msgstr ""
+
+#. TRANS: SMS phone number input field instructions in SMS settings form.
+#: actions/smssettings.php:156
+msgid "Phone number, no punctuation or spaces, with area code"
+msgstr ""
+
+#. TRANS: Form legend for SMS preferences form.
+#: actions/smssettings.php:195
+msgid "SMS preferences"
+msgstr ""
+
+#. TRANS: Checkbox label in SMS preferences form.
+#: actions/smssettings.php:201
+msgid ""
+"Send me notices through SMS; I understand I may incur exorbitant charges "
+"from my carrier."
+msgstr ""
+
+#. TRANS: Confirmation message for successful SMS preferences save.
+#: actions/smssettings.php:315
+msgid "SMS preferences saved."
+msgstr ""
+
+#. TRANS: Message given saving SMS phone number without having provided one.
+#: actions/smssettings.php:338
+msgid "No phone number."
+msgstr ""
+
+#. TRANS: Message given saving SMS phone number without having selected a carrier.
+#: actions/smssettings.php:344
+msgid "No carrier selected."
+msgstr ""
+
+#. TRANS: Message given saving SMS phone number that is already set.
+#: actions/smssettings.php:352
+msgid "That is already your phone number."
+msgstr ""
+
+#. TRANS: Message given saving SMS phone number that is already set for another user.
+#: actions/smssettings.php:356
+msgid "That phone number already belongs to another user."
+msgstr ""
+
+#. TRANS: Message given saving valid SMS phone number that is to be confirmed.
+#: actions/smssettings.php:384
+msgid ""
+"A confirmation code was sent to the phone number you added. Check your phone "
+"for the code and instructions on how to use it."
+msgstr ""
+
+#. TRANS: Message given canceling SMS phone number confirmation for the wrong phone number.
+#: actions/smssettings.php:413
+msgid "That is the wrong confirmation number."
+msgstr ""
+
+#. TRANS: Message given after successfully canceling SMS phone number confirmation.
+#: actions/smssettings.php:427
+msgid "SMS confirmation cancelled."
+msgstr ""
+
+#. TRANS: Message given trying to remove an SMS phone number that is not
+#. TRANS: registered for the active user.
+#: actions/smssettings.php:448
+msgid "That is not your phone number."
+msgstr ""
+
+#. TRANS: Message given after successfully removing a registered SMS phone number.
+#: actions/smssettings.php:470
+msgid "The SMS phone number was removed."
+msgstr ""
+
+#. TRANS: Label for mobile carrier dropdown menu in SMS settings.
+#: actions/smssettings.php:511
+msgid "Mobile carrier"
+msgstr ""
+
+#. TRANS: Default option for mobile carrier dropdown menu in SMS settings.
+#: actions/smssettings.php:516
+msgid "Select a carrier"
+msgstr ""
+
+#. TRANS: Form instructions for mobile carrier dropdown menu in SMS settings.
+#. TRANS: %s is an administrative contact's e-mail address.
+#: actions/smssettings.php:525
+#, php-format
+msgid ""
+"Mobile carrier for your phone. If you know a carrier that accepts SMS over "
+"email but isn't listed here, send email to let us know at %s."
+msgstr ""
+
+#. TRANS: Message given saving SMS phone number confirmation code without having provided one.
+#: actions/smssettings.php:548
+msgid "No code entered"
+msgstr ""
+
+#. TRANS: Menu item for site administration
+#: actions/snapshotadminpanel.php:54 actions/snapshotadminpanel.php:196
+#: lib/adminpanelaction.php:408
+msgid "Snapshots"
+msgstr ""
+
+#: actions/snapshotadminpanel.php:65
+msgid "Manage snapshot configuration"
+msgstr ""
+
+#: actions/snapshotadminpanel.php:127
+msgid "Invalid snapshot run value."
+msgstr ""
+
+#: actions/snapshotadminpanel.php:133
+msgid "Snapshot frequency must be a number."
+msgstr ""
+
+#: actions/snapshotadminpanel.php:144
+msgid "Invalid snapshot report URL."
+msgstr ""
+
+#: actions/snapshotadminpanel.php:200
+msgid "Randomly during web hit"
+msgstr ""
+
+#: actions/snapshotadminpanel.php:201
+msgid "In a scheduled job"
+msgstr ""
+
+#: actions/snapshotadminpanel.php:206
+msgid "Data snapshots"
+msgstr ""
+
+#: actions/snapshotadminpanel.php:208
+msgid "When to send statistical data to status.net servers"
+msgstr ""
+
+#: actions/snapshotadminpanel.php:217
+msgid "Frequency"
+msgstr ""
+
+#: actions/snapshotadminpanel.php:218
+msgid "Snapshots will be sent once every N web hits"
+msgstr ""
+
+#: actions/snapshotadminpanel.php:226
+msgid "Report URL"
+msgstr ""
+
+#: actions/snapshotadminpanel.php:227
+msgid "Snapshots will be sent to this URL"
+msgstr ""
+
+#: actions/snapshotadminpanel.php:248
+msgid "Save snapshot settings"
+msgstr ""
+
+#: actions/subedit.php:70
+msgid "You are not subscribed to that profile."
+msgstr ""
+
+#. TRANS: Exception thrown when a subscription could not be stored on the server.
+#: actions/subedit.php:83 classes/Subscription.php:136
+msgid "Could not save subscription."
+msgstr ""
+
+#: actions/subscribe.php:77
+msgid "This action only accepts POST requests."
+msgstr ""
+
+#: actions/subscribe.php:107
+msgid "No such profile."
+msgstr ""
+
+#: actions/subscribe.php:117
+msgid "You cannot subscribe to an OMB 0.1 remote profile with this action."
+msgstr ""
+
+#: actions/subscribe.php:145
+msgid "Subscribed"
+msgstr ""
+
+#: actions/subscribers.php:50
+#, php-format
+msgid "%s subscribers"
+msgstr ""
+
+#: actions/subscribers.php:52
+#, php-format
+msgid "%1$s subscribers, page %2$d"
+msgstr ""
+
+#: actions/subscribers.php:63
+msgid "These are the people who listen to your notices."
+msgstr ""
+
+#: actions/subscribers.php:67
+#, php-format
+msgid "These are the people who listen to %s's notices."
+msgstr ""
+
+#: actions/subscribers.php:108
+msgid ""
+"You have no subscribers. Try subscribing to people you know and they might "
+"return the favor"
+msgstr ""
+
+#: actions/subscribers.php:110
+#, php-format
+msgid "%s has no subscribers. Want to be the first?"
+msgstr ""
+
+#: actions/subscribers.php:114
+#, php-format
+msgid ""
+"%s has no subscribers. Why not [register an account](%%%%action.register%%%"
+"%) and be the first?"
+msgstr ""
+
+#: actions/subscriptions.php:52
+#, php-format
+msgid "%s subscriptions"
+msgstr ""
+
+#: actions/subscriptions.php:54
+#, php-format
+msgid "%1$s subscriptions, page %2$d"
+msgstr ""
+
+#: actions/subscriptions.php:65
+msgid "These are the people whose notices you listen to."
+msgstr ""
+
+#: actions/subscriptions.php:69
+#, php-format
+msgid "These are the people whose notices %s listens to."
+msgstr ""
+
+#: actions/subscriptions.php:126
+#, php-format
+msgid ""
+"You're not listening to anyone's notices right now, try subscribing to "
+"people you know. Try [people search](%%action.peoplesearch%%), look for "
+"members in groups you're interested in and in our [featured users](%%action."
+"featured%%). If you're a [Twitter user](%%action.twittersettings%%), you can "
+"automatically subscribe to people you already follow there."
+msgstr ""
+
+#: actions/subscriptions.php:128 actions/subscriptions.php:132
+#, php-format
+msgid "%s is not listening to anyone."
+msgstr ""
+
+#: actions/subscriptions.php:208
+msgid "Jabber"
+msgstr ""
+
+#: actions/subscriptions.php:222 lib/connectsettingsaction.php:115
+msgid "SMS"
+msgstr ""
+
+#: actions/tag.php:69
+#, php-format
+msgid "Notices tagged with %1$s, page %2$d"
+msgstr ""
+
+#: actions/tag.php:87
+#, php-format
+msgid "Notice feed for tag %s (RSS 1.0)"
+msgstr ""
+
+#: actions/tag.php:93
+#, php-format
+msgid "Notice feed for tag %s (RSS 2.0)"
+msgstr ""
+
+#: actions/tag.php:99
+#, php-format
+msgid "Notice feed for tag %s (Atom)"
+msgstr ""
+
+#: actions/tagother.php:39
+msgid "No ID argument."
+msgstr ""
+
+#: actions/tagother.php:65
+#, php-format
+msgid "Tag %s"
+msgstr ""
+
+#: actions/tagother.php:77 lib/userprofile.php:76
+msgid "User profile"
+msgstr ""
+
+#: actions/tagother.php:81 actions/userauthorization.php:132
+#: lib/userprofile.php:103
+msgid "Photo"
+msgstr ""
+
+#: actions/tagother.php:141
+msgid "Tag user"
+msgstr ""
+
+#: actions/tagother.php:151
+msgid ""
+"Tags for this user (letters, numbers, -, ., and _), comma- or space- "
+"separated"
+msgstr ""
+
+#: actions/tagother.php:193
+msgid ""
+"You can only tag people you are subscribed to or who are subscribed to you."
+msgstr ""
+
+#: actions/tagother.php:200
+msgid "Could not save tags."
+msgstr ""
+
+#: actions/tagother.php:236
+msgid "Use this form to add tags to your subscribers or subscriptions."
+msgstr ""
+
+#: actions/tagrss.php:35
+msgid "No such tag."
+msgstr ""
+
+#: actions/unblock.php:59
+msgid "You haven't blocked that user."
+msgstr ""
+
+#: actions/unsandbox.php:72
+msgid "User is not sandboxed."
+msgstr ""
+
+#: actions/unsilence.php:72
+msgid "User is not silenced."
+msgstr ""
+
+#: actions/unsubscribe.php:77
+msgid "No profile ID in request."
+msgstr ""
+
+#: actions/unsubscribe.php:98
+msgid "Unsubscribed"
+msgstr ""
+
+#: actions/updateprofile.php:64 actions/userauthorization.php:337
+#, php-format
+msgid ""
+"Listenee stream license ‘%1$s’ is not compatible with site license ‘%2$s’."
+msgstr ""
+
+#. TRANS: User admin panel title
+#: actions/useradminpanel.php:59
+msgctxt "TITLE"
+msgid "User"
+msgstr ""
+
+#: actions/useradminpanel.php:70
+msgid "User settings for this StatusNet site."
+msgstr ""
+
+#: actions/useradminpanel.php:149
+msgid "Invalid bio limit. Must be numeric."
+msgstr ""
+
+#: actions/useradminpanel.php:155
+msgid "Invalid welcome text. Max length is 255 characters."
+msgstr ""
+
+#: actions/useradminpanel.php:165
+#, php-format
+msgid "Invalid default subscripton: '%1$s' is not user."
+msgstr ""
+
+#. TRANS: Link description in user account settings menu.
+#: actions/useradminpanel.php:218 lib/accountsettingsaction.php:111
+#: lib/personalgroupnav.php:109
+msgid "Profile"
+msgstr ""
+
+#: actions/useradminpanel.php:222
+msgid "Bio Limit"
+msgstr ""
+
+#: actions/useradminpanel.php:223
+msgid "Maximum length of a profile bio in characters."
+msgstr ""
+
+#: actions/useradminpanel.php:231
+msgid "New users"
+msgstr ""
+
+#: actions/useradminpanel.php:235
+msgid "New user welcome"
+msgstr ""
+
+#: actions/useradminpanel.php:236
+msgid "Welcome text for new users (Max 255 chars)."
+msgstr ""
+
+#: actions/useradminpanel.php:241
+msgid "Default subscription"
+msgstr ""
+
+#: actions/useradminpanel.php:242
+msgid "Automatically subscribe new users to this user."
+msgstr ""
+
+#: actions/useradminpanel.php:251
+msgid "Invitations"
+msgstr ""
+
+#: actions/useradminpanel.php:256
+msgid "Invitations enabled"
+msgstr ""
+
+#: actions/useradminpanel.php:258
+msgid "Whether to allow users to invite new users."
+msgstr ""
+
+#: actions/userauthorization.php:105
+msgid "Authorize subscription"
+msgstr ""
+
+#: actions/userauthorization.php:110
+msgid ""
+"Please check these details to make sure that you want to subscribe to this "
+"user’s notices. If you didn’t just ask to subscribe to someone’s notices, "
+"click “Rejectâ€."
+msgstr ""
+
+#: actions/userauthorization.php:196 actions/version.php:167
+msgid "License"
+msgstr ""
+
+#: actions/userauthorization.php:217
+msgid "Accept"
+msgstr ""
+
+#: actions/userauthorization.php:218 lib/subscribeform.php:115
+#: lib/subscribeform.php:139
+msgid "Subscribe to this user"
+msgstr ""
+
+#: actions/userauthorization.php:219
+msgid "Reject"
+msgstr ""
+
+#: actions/userauthorization.php:220
+msgid "Reject this subscription"
+msgstr ""
+
+#: actions/userauthorization.php:232
+msgid "No authorization request!"
+msgstr ""
+
+#: actions/userauthorization.php:254
+msgid "Subscription authorized"
+msgstr ""
+
+#: actions/userauthorization.php:256
+msgid ""
+"The subscription has been authorized, but no callback URL was passed. Check "
+"with the site’s instructions for details on how to authorize the "
+"subscription. Your subscription token is:"
+msgstr ""
+
+#: actions/userauthorization.php:266
+msgid "Subscription rejected"
+msgstr ""
+
+#: actions/userauthorization.php:268
+msgid ""
+"The subscription has been rejected, but no callback URL was passed. Check "
+"with the site’s instructions for details on how to fully reject the "
+"subscription."
+msgstr ""
+
+#: actions/userauthorization.php:303
+#, php-format
+msgid "Listener URI ‘%s’ not found here."
+msgstr ""
+
+#: actions/userauthorization.php:308
+#, php-format
+msgid "Listenee URI ‘%s’ is too long."
+msgstr ""
+
+#: actions/userauthorization.php:314
+#, php-format
+msgid "Listenee URI ‘%s’ is a local user."
+msgstr ""
+
+#: actions/userauthorization.php:329
+#, php-format
+msgid "Profile URL ‘%s’ is for a local user."
+msgstr ""
+
+#: actions/userauthorization.php:345
+#, php-format
+msgid "Avatar URL ‘%s’ is not valid."
+msgstr ""
+
+#: actions/userauthorization.php:350
+#, php-format
+msgid "Can’t read avatar URL ‘%s’."
+msgstr ""
+
+#: actions/userauthorization.php:355
+#, php-format
+msgid "Wrong image type for avatar URL ‘%s’."
+msgstr ""
+
+#: actions/userdesignsettings.php:76 lib/designsettings.php:65
+msgid "Profile design"
+msgstr ""
+
+#: actions/userdesignsettings.php:87 lib/designsettings.php:76
+msgid ""
+"Customize the way your profile looks with a background image and a colour "
+"palette of your choice."
+msgstr ""
+
+#: actions/userdesignsettings.php:282
+msgid "Enjoy your hotdog!"
+msgstr ""
+
+#. TRANS: Message is used as a page title. %1$s is a nick name, %2$d is a page number.
+#: actions/usergroups.php:66
+#, php-format
+msgid "%1$s groups, page %2$d"
+msgstr ""
+
+#: actions/usergroups.php:132
+msgid "Search for more groups"
+msgstr ""
+
+#: actions/usergroups.php:159
+#, php-format
+msgid "%s is not a member of any group."
+msgstr ""
+
+#: actions/usergroups.php:164
+#, php-format
+msgid "Try [searching for groups](%%action.groupsearch%%) and joining them."
+msgstr ""
+
+#. TRANS: Message is used as link description. %1$s is a username, %2$s is a site name.
+#. TRANS: Message is used as a subtitle in atom group notice feed.
+#. TRANS: %1$s is a group name, %2$s is a site name.
+#. TRANS: Message is used as a subtitle in atom user notice feed.
+#. TRANS: %1$s is a user name, %2$s is a site name.
+#: actions/userrss.php:97 lib/atomgroupnoticefeed.php:70
+#: lib/atomusernoticefeed.php:76
+#, php-format
+msgid "Updates from %1$s on %2$s!"
+msgstr ""
+
+#: actions/version.php:75
+#, php-format
+msgid "StatusNet %s"
+msgstr ""
+
+#: actions/version.php:155
+#, php-format
+msgid ""
+"This site is powered by %1$s version %2$s, Copyright 2008-2010 StatusNet, "
+"Inc. and contributors."
+msgstr ""
+
+#: actions/version.php:163
+msgid "Contributors"
+msgstr ""
+
+#: actions/version.php:170
+msgid ""
+"StatusNet is free software: you can redistribute it and/or modify it under "
+"the terms of the GNU Affero General Public License as published by the Free "
+"Software Foundation, either version 3 of the License, or (at your option) "
+"any later version. "
+msgstr ""
+
+#: actions/version.php:176
+msgid ""
+"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. "
+msgstr ""
+
+#: actions/version.php:182
+#, php-format
+msgid ""
+"You should have received a copy of the GNU Affero General Public License "
+"along with this program. If not, see %s."
+msgstr ""
+
+#: actions/version.php:191
+msgid "Plugins"
+msgstr ""
+
+#. TRANS: Secondary navigation menu option leading to version information on the StatusNet site.
+#: actions/version.php:198 lib/action.php:789
+msgid "Version"
+msgstr ""
+
+#: actions/version.php:199
+msgid "Author(s)"
+msgstr ""
+
+#. TRANS: Server exception thrown when a URL cannot be processed.
+#: classes/File.php:143
+#, php-format
+msgid "Cannot process URL '%s'"
+msgstr ""
+
+#. TRANS: Server exception thrown when... Robin thinks something is impossible!
+#: classes/File.php:175
+msgid "Robin thinks something is impossible."
+msgstr ""
+
+#. TRANS: Message given if an upload is larger than the configured maximum.
+#. TRANS: %1$d is the byte limit for uploads, %2$d is the byte count for the uploaded file.
+#: classes/File.php:190
+#, php-format
+msgid ""
+"No file may be larger than %1$d bytes and the file you sent was %2$d bytes. "
+"Try to upload a smaller version."
+msgstr ""
+
+#. TRANS: Message given if an upload would exceed user quota.
+#. TRANS: %d (number) is the user quota in bytes.
+#: classes/File.php:202
+#, php-format
+msgid "A file this large would exceed your user quota of %d bytes."
+msgstr ""
+
+#. TRANS: Message given id an upload would exceed a user's monthly quota.
+#. TRANS: $d (number) is the monthly user quota in bytes.
+#: classes/File.php:211
+#, php-format
+msgid "A file this large would exceed your monthly quota of %d bytes."
+msgstr ""
+
+#. TRANS: Client exception thrown if a file upload does not have a valid name.
+#: classes/File.php:248 classes/File.php:263
+msgid "Invalid filename."
+msgstr ""
+
+#. TRANS: Exception thrown when joining a group fails.
+#: classes/Group_member.php:42
+msgid "Group join failed."
+msgstr ""
+
+#. TRANS: Exception thrown when trying to leave a group the user is not a member of.
+#: classes/Group_member.php:55
+msgid "Not part of group."
+msgstr ""
+
+#. TRANS: Exception thrown when trying to leave a group fails.
+#: classes/Group_member.php:63
+msgid "Group leave failed."
+msgstr ""
+
+#. TRANS: Server exception thrown when updating a local group fails.
+#: classes/Local_group.php:42
+msgid "Could not update local group."
+msgstr ""
+
+#. TRANS: Exception thrown when trying creating a login token failed.
+#. TRANS: %s is the user nickname for which token creation failed.
+#: classes/Login_token.php:78
+#, php-format
+msgid "Could not create login token for %s"
+msgstr ""
+
+#. TRANS: Exception thrown when database name or Data Source Name could not be found.
+#: classes/Memcached_DataObject.php:533
+msgid "No database name or DSN found anywhere."
+msgstr ""
+
+#. TRANS: Client exception thrown when a user tries to send a direct message while being banned from sending them.
+#: classes/Message.php:46
+msgid "You are banned from sending direct messages."
+msgstr ""
+
+#. TRANS: Message given when a message could not be stored on the server.
+#: classes/Message.php:63
+msgid "Could not insert message."
+msgstr ""
+
+#. TRANS: Message given when a message could not be updated on the server.
+#: classes/Message.php:74
+msgid "Could not update message with new URI."
+msgstr ""
+
+#. TRANS: Server exception thrown when a user profile for a notice cannot be found.
+#. TRANS: %1$d is a profile ID (number), %2$d is a notice ID (number).
+#: classes/Notice.php:98
+#, php-format
+msgid "No such profile (%1$d) for notice (%2$d)."
+msgstr ""
+
+#. TRANS: Server exception. %s are the error details.
+#: classes/Notice.php:190
+#, php-format
+msgid "Database error inserting hashtag: %s"
+msgstr ""
+
+#. TRANS: Client exception thrown if a notice contains too many characters.
+#: classes/Notice.php:260
+msgid "Problem saving notice. Too long."
+msgstr ""
+
+#. TRANS: Client exception thrown when trying to save a notice for an unknown user.
+#: classes/Notice.php:265
+msgid "Problem saving notice. Unknown user."
+msgstr ""
+
+#. TRANS: Client exception thrown when a user tries to post too many notices in a given time frame.
+#: classes/Notice.php:271
+msgid ""
+"Too many notices too fast; take a breather and post again in a few minutes."
+msgstr ""
+
+#. TRANS: Client exception thrown when a user tries to post too many duplicate notices in a given time frame.
+#: classes/Notice.php:278
+msgid ""
+"Too many duplicate messages too quickly; take a breather and post again in a "
+"few minutes."
+msgstr ""
+
+#. TRANS: Client exception thrown when a user tries to post while being banned.
+#: classes/Notice.php:286
+msgid "You are banned from posting notices on this site."
+msgstr ""
+
+#. TRANS: Server exception thrown when a notice cannot be saved.
+#. TRANS: Server exception thrown when a notice cannot be updated.
+#: classes/Notice.php:353 classes/Notice.php:380
+msgid "Problem saving notice."
+msgstr ""
+
+#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups().
+#: classes/Notice.php:892
+msgid "Bad type provided to saveKnownGroups"
+msgstr ""
+
+#. TRANS: Server exception thrown when an update for a group inbox fails.
+#: classes/Notice.php:991
+msgid "Problem saving group inbox."
+msgstr ""
+
+#. TRANS: Message used to repeat a notice. RT is the abbreviation of 'retweet'.
+#. TRANS: %1$s is the repeated user's name, %2$s is the repeated notice.
+#: classes/Notice.php:1614
+#, php-format
+msgid "RT @%1$s %2$s"
+msgstr ""
+
+#. TRANS: Exception thrown when trying to revoke an existing role for a user that does not exist.
+#. TRANS: %1$s is the role name, %2$s is the user ID (number).
+#: classes/Profile.php:740
+#, php-format
+msgid "Cannot revoke role \"%1$s\" for user #%2$d; does not exist."
+msgstr ""
+
+#. TRANS: Exception thrown when trying to revoke a role for a user with a failing database query.
+#. TRANS: %1$s is the role name, %2$s is the user ID (number).
+#: classes/Profile.php:749
+#, php-format
+msgid "Cannot revoke role \"%1$s\" for user #%2$d; database error."
+msgstr ""
+
+#. TRANS: Exception thrown when a right for a non-existing user profile is checked.
+#: classes/Remote_profile.php:54
+msgid "Missing profile."
+msgstr ""
+
+#. TRANS: Exception thrown when a tag cannot be saved.
+#: classes/Status_network.php:346
+msgid "Unable to save tag."
+msgstr ""
+
+#. TRANS: Exception thrown when trying to subscribe while being banned from subscribing.
+#: classes/Subscription.php:75 lib/oauthstore.php:465
+msgid "You have been banned from subscribing."
+msgstr ""
+
+#. TRANS: Exception thrown when trying to subscribe while already subscribed.
+#: classes/Subscription.php:80
+msgid "Already subscribed!"
+msgstr ""
+
+#. TRANS: Exception thrown when trying to subscribe to a user who has blocked the subscribing user.
+#: classes/Subscription.php:85
+msgid "User has blocked you."
+msgstr ""
+
+#. TRANS: Exception thrown when trying to unsibscribe without a subscription.
+#: classes/Subscription.php:171
+msgid "Not subscribed!"
+msgstr ""
+
+#. TRANS: Exception thrown when trying to unsubscribe a user from themselves.
+#: classes/Subscription.php:178
+msgid "Could not delete self-subscription."
+msgstr ""
+
+#. TRANS: Exception thrown when the OMB token for a subscription could not deleted on the server.
+#: classes/Subscription.php:206
+msgid "Could not delete subscription OMB token."
+msgstr ""
+
+#. TRANS: Exception thrown when a subscription could not be deleted on the server.
+#: classes/Subscription.php:218
+msgid "Could not delete subscription."
+msgstr ""
+
+#. TRANS: Notice given on user registration.
+#. TRANS: %1$s is the sitename, $2$s is the registering user's nickname.
+#: classes/User.php:365
+#, php-format
+msgid "Welcome to %1$s, @%2$s!"
+msgstr ""
+
+#. TRANS: Server exception thrown when creating a group failed.
+#: classes/User_group.php:496
+msgid "Could not create group."
+msgstr ""
+
+#. TRANS: Server exception thrown when updating a group URI failed.
+#: classes/User_group.php:506
+msgid "Could not set group URI."
+msgstr ""
+
+#. TRANS: Server exception thrown when setting group membership failed.
+#: classes/User_group.php:529
+msgid "Could not set group membership."
+msgstr ""
+
+#. TRANS: Server exception thrown when saving local group information failed.
+#: classes/User_group.php:544
+msgid "Could not save local group info."
+msgstr ""
+
+#. TRANS: Link title attribute in user account settings menu.
+#: lib/accountsettingsaction.php:109
+msgid "Change your profile settings"
+msgstr ""
+
+#. TRANS: Link title attribute in user account settings menu.
+#: lib/accountsettingsaction.php:116
+msgid "Upload an avatar"
+msgstr ""
+
+#. TRANS: Link title attribute in user account settings menu.
+#: lib/accountsettingsaction.php:123
+msgid "Change your password"
+msgstr ""
+
+#. TRANS: Link title attribute in user account settings menu.
+#: lib/accountsettingsaction.php:130
+msgid "Change email handling"
+msgstr ""
+
+#. TRANS: Link title attribute in user account settings menu.
+#: lib/accountsettingsaction.php:137
+msgid "Design your profile"
+msgstr ""
+
+#. TRANS: Link title attribute in user account settings menu.
+#: lib/accountsettingsaction.php:144
+msgid "Other options"
+msgstr ""
+
+#. TRANS: Link description in user account settings menu.
+#: lib/accountsettingsaction.php:146
+msgid "Other"
+msgstr ""
+
+#. TRANS: Page title. %1$s is the title, %2$s is the site name.
+#: lib/action.php:145
+#, php-format
+msgid "%1$s - %2$s"
+msgstr ""
+
+#. TRANS: Page title for a page without a title set.
+#: lib/action.php:161
+msgid "Untitled page"
+msgstr ""
+
+#. TRANS: DT element for primary navigation menu. String is hidden in default CSS.
+#: lib/action.php:436
+msgid "Primary site navigation"
+msgstr ""
+
+#. TRANS: Tooltip for main menu option "Personal"
+#: lib/action.php:442
+msgctxt "TOOLTIP"
+msgid "Personal profile and friends timeline"
+msgstr ""
+
+#. TRANS: Main menu option when logged in for access to personal profile and friends timeline
+#: lib/action.php:445
+msgctxt "MENU"
+msgid "Personal"
+msgstr ""
+
+#. TRANS: Tooltip for main menu option "Account"
+#: lib/action.php:447
+msgctxt "TOOLTIP"
+msgid "Change your email, avatar, password, profile"
+msgstr ""
+
+#. TRANS: Tooltip for main menu option "Services"
+#: lib/action.php:452
+msgctxt "TOOLTIP"
+msgid "Connect to services"
+msgstr ""
+
+#. TRANS: Main menu option when logged in and connection are possible for access to options to connect to other services
+#: lib/action.php:455
+msgid "Connect"
+msgstr ""
+
+#. TRANS: Tooltip for menu option "Admin"
+#: lib/action.php:458
+msgctxt "TOOLTIP"
+msgid "Change site configuration"
+msgstr ""
+
+#. TRANS: Main menu option when logged in and site admin for access to site configuration
+#: lib/action.php:461
+msgctxt "MENU"
+msgid "Admin"
+msgstr ""
+
+#. TRANS: Tooltip for main menu option "Invite"
+#: lib/action.php:465
+#, php-format
+msgctxt "TOOLTIP"
+msgid "Invite friends and colleagues to join you on %s"
+msgstr ""
+
+#. TRANS: Main menu option when logged in and invitations are allowed for inviting new users
+#: lib/action.php:468
+msgctxt "MENU"
+msgid "Invite"
+msgstr ""
+
+#. TRANS: Tooltip for main menu option "Logout"
+#: lib/action.php:474
+msgctxt "TOOLTIP"
+msgid "Logout from the site"
+msgstr ""
+
+#. TRANS: Main menu option when logged in to log out the current user
+#: lib/action.php:477
+msgctxt "MENU"
+msgid "Logout"
+msgstr ""
+
+#. TRANS: Tooltip for main menu option "Register"
+#: lib/action.php:482
+msgctxt "TOOLTIP"
+msgid "Create an account"
+msgstr ""
+
+#. TRANS: Main menu option when not logged in to register a new account
+#: lib/action.php:485
+msgctxt "MENU"
+msgid "Register"
+msgstr ""
+
+#. TRANS: Tooltip for main menu option "Login"
+#: lib/action.php:488
+msgctxt "TOOLTIP"
+msgid "Login to the site"
+msgstr ""
+
+#: lib/action.php:491
+msgctxt "MENU"
+msgid "Login"
+msgstr ""
+
+#. TRANS: Tooltip for main menu option "Help"
+#: lib/action.php:494
+msgctxt "TOOLTIP"
+msgid "Help me!"
+msgstr ""
+
+#: lib/action.php:497
+msgctxt "MENU"
+msgid "Help"
+msgstr ""
+
+#. TRANS: Tooltip for main menu option "Search"
+#: lib/action.php:500
+msgctxt "TOOLTIP"
+msgid "Search for people or text"
+msgstr ""
+
+#: lib/action.php:503
+msgctxt "MENU"
+msgid "Search"
+msgstr ""
+
+#. TRANS: DT element for site notice. String is hidden in default CSS.
+#. TRANS: Menu item for site administration
+#: lib/action.php:525 lib/adminpanelaction.php:400
+msgid "Site notice"
+msgstr ""
+
+#. TRANS: DT element for local views block. String is hidden in default CSS.
+#: lib/action.php:592
+msgid "Local views"
+msgstr ""
+
+#. TRANS: DT element for page notice. String is hidden in default CSS.
+#: lib/action.php:659
+msgid "Page notice"
+msgstr ""
+
+#. TRANS: DT element for secondary navigation menu. String is hidden in default CSS.
+#: lib/action.php:762
+msgid "Secondary site navigation"
+msgstr ""
+
+#. TRANS: Secondary navigation menu option leading to help on StatusNet.
+#: lib/action.php:768
+msgid "Help"
+msgstr ""
+
+#. TRANS: Secondary navigation menu option leading to text about StatusNet site.
+#: lib/action.php:771
+msgid "About"
+msgstr ""
+
+#. TRANS: Secondary navigation menu option leading to Frequently Asked Questions.
+#: lib/action.php:774
+msgid "FAQ"
+msgstr ""
+
+#. TRANS: Secondary navigation menu option leading to Terms of Service.
+#: lib/action.php:779
+msgid "TOS"
+msgstr ""
+
+#. TRANS: Secondary navigation menu option leading to privacy policy.
+#: lib/action.php:783
+msgid "Privacy"
+msgstr ""
+
+#. TRANS: Secondary navigation menu option.
+#: lib/action.php:786
+msgid "Source"
+msgstr ""
+
+#. TRANS: Secondary navigation menu option leading to contact information on the StatusNet site.
+#: lib/action.php:792
+msgid "Contact"
+msgstr ""
+
+#: lib/action.php:794
+msgid "Badge"
+msgstr ""
+
+#. TRANS: DT element for StatusNet software license.
+#: lib/action.php:823
+msgid "StatusNet software license"
+msgstr ""
+
+#. TRANS: First sentence of the StatusNet site license. Used if 'broughtby' is set.
+#: lib/action.php:827
+#, php-format
+msgid ""
+"**%%site.name%%** is a microblogging service brought to you by [%%site."
+"broughtby%%](%%site.broughtbyurl%%)."
+msgstr ""
+
+#. TRANS: First sentence of the StatusNet site license. Used if 'broughtby' is not set.
+#: lib/action.php:830
+#, php-format
+msgid "**%%site.name%%** is a microblogging service."
+msgstr ""
+
+#. TRANS: Second sentence of the StatusNet site license. Mentions the StatusNet source code license.
+#: lib/action.php:834
+#, php-format
+msgid ""
+"It runs the [StatusNet](http://status.net/) microblogging software, version %"
+"s, available under the [GNU Affero General Public License](http://www.fsf."
+"org/licensing/licenses/agpl-3.0.html)."
+msgstr ""
+
+#. TRANS: DT element for StatusNet site content license.
+#: lib/action.php:850
+msgid "Site content license"
+msgstr ""
+
+#. TRANS: Content license displayed when license is set to 'private'.
+#. TRANS: %1$s is the site name.
+#: lib/action.php:857
+#, php-format
+msgid "Content and data of %1$s are private and confidential."
+msgstr ""
+
+#. TRANS: Content license displayed when license is set to 'allrightsreserved'.
+#. TRANS: %1$s is the copyright owner.
+#: lib/action.php:864
+#, php-format
+msgid "Content and data copyright by %1$s. All rights reserved."
+msgstr ""
+
+#. TRANS: Content license displayed when license is set to 'allrightsreserved' and no owner is set.
+#: lib/action.php:868
+msgid "Content and data copyright by contributors. All rights reserved."
+msgstr ""
+
+#. TRANS: license message in footer. %1$s is the site name, %2$s is a link to the license URL, with a licence name set in configuration.
+#: lib/action.php:881
+#, php-format
+msgid "All %1$s content and data are available under the %2$s license."
+msgstr ""
+
+#. TRANS: DT element for pagination (previous/next, etc.).
+#: lib/action.php:1192
+msgid "Pagination"
+msgstr ""
+
+#. TRANS: Pagination message to go to a page displaying information more in the
+#. TRANS: present than the currently displayed information.
+#: lib/action.php:1203
+msgid "After"
+msgstr ""
+
+#. TRANS: Pagination message to go to a page displaying information more in the
+#. TRANS: past than the currently displayed information.
+#: lib/action.php:1213
+msgid "Before"
+msgstr ""
+
+#. TRANS: Client exception thrown when a feed instance is a DOMDocument.
+#: lib/activity.php:122
+msgid "Expecting a root feed element but got a whole XML document."
+msgstr ""
+
+#: lib/activityutils.php:208
+msgid "Can't handle remote content yet."
+msgstr ""
+
+#: lib/activityutils.php:244
+msgid "Can't handle embedded XML content yet."
+msgstr ""
+
+#: lib/activityutils.php:248
+msgid "Can't handle embedded Base64 content yet."
+msgstr ""
+
+#. TRANS: Client error message thrown when a user tries to change admin settings but has no access rights.
+#: lib/adminpanelaction.php:98
+msgid "You cannot make changes to this site."
+msgstr ""
+
+#. TRANS: Client error message throw when a certain panel's settings cannot be changed.
+#: lib/adminpanelaction.php:110
+msgid "Changes to that panel are not allowed."
+msgstr ""
+
+#. TRANS: Client error message.
+#: lib/adminpanelaction.php:229
+msgid "showForm() not implemented."
+msgstr ""
+
+#. TRANS: Client error message
+#: lib/adminpanelaction.php:259
+msgid "saveSettings() not implemented."
+msgstr ""
+
+#. TRANS: Client error message thrown if design settings could not be deleted in
+#. TRANS: the admin panel Design.
+#: lib/adminpanelaction.php:284
+msgid "Unable to delete design setting."
+msgstr ""
+
+#. TRANS: Menu item title/tooltip
+#: lib/adminpanelaction.php:350
+msgid "Basic site configuration"
+msgstr ""
+
+#. TRANS: Menu item for site administration
+#: lib/adminpanelaction.php:352
+msgctxt "MENU"
+msgid "Site"
+msgstr ""
+
+#. TRANS: Menu item title/tooltip
+#: lib/adminpanelaction.php:358
+msgid "Design configuration"
+msgstr ""
+
+#. TRANS: Menu item for site administration
+#: lib/adminpanelaction.php:360
+msgctxt "MENU"
+msgid "Design"
+msgstr ""
+
+#. TRANS: Menu item title/tooltip
+#: lib/adminpanelaction.php:366
+msgid "User configuration"
+msgstr ""
+
+#. TRANS: Menu item for site administration
+#: lib/adminpanelaction.php:368 lib/personalgroupnav.php:115
+msgid "User"
+msgstr ""
+
+#. TRANS: Menu item title/tooltip
+#: lib/adminpanelaction.php:374
+msgid "Access configuration"
+msgstr ""
+
+#. TRANS: Menu item title/tooltip
+#: lib/adminpanelaction.php:382
+msgid "Paths configuration"
+msgstr ""
+
+#. TRANS: Menu item title/tooltip
+#: lib/adminpanelaction.php:390
+msgid "Sessions configuration"
+msgstr ""
+
+#. TRANS: Menu item title/tooltip
+#: lib/adminpanelaction.php:398
+msgid "Edit site notice"
+msgstr ""
+
+#. TRANS: Menu item title/tooltip
+#: lib/adminpanelaction.php:406
+msgid "Snapshots configuration"
+msgstr ""
+
+#. TRANS: Client error 401.
+#: lib/apiauth.php:113
+msgid "API resource requires read-write access, but you only have read access."
+msgstr ""
+
+#. TRANS: Form legend.
+#: lib/applicationeditform.php:137
+msgid "Edit application"
+msgstr ""
+
+#. TRANS: Form guide.
+#: lib/applicationeditform.php:187
+msgid "Icon for this application"
+msgstr ""
+
+#. TRANS: Form input field instructions.
+#: lib/applicationeditform.php:209
+#, php-format
+msgid "Describe your application in %d characters"
+msgstr ""
+
+#. TRANS: Form input field instructions.
+#: lib/applicationeditform.php:213
+msgid "Describe your application"
+msgstr ""
+
+#. TRANS: Form input field instructions.
+#: lib/applicationeditform.php:224
+msgid "URL of the homepage of this application"
+msgstr ""
+
+#. TRANS: Form input field label.
+#: lib/applicationeditform.php:226
+msgid "Source URL"
+msgstr ""
+
+#. TRANS: Form input field instructions.
+#: lib/applicationeditform.php:233
+msgid "Organization responsible for this application"
+msgstr ""
+
+#. TRANS: Form input field instructions.
+#: lib/applicationeditform.php:242
+msgid "URL for the homepage of the organization"
+msgstr ""
+
+#. TRANS: Form input field instructions.
+#: lib/applicationeditform.php:251
+msgid "URL to redirect to after authentication"
+msgstr ""
+
+#. TRANS: Radio button label for application type
+#: lib/applicationeditform.php:278
+msgid "Browser"
+msgstr ""
+
+#. TRANS: Radio button label for application type
+#: lib/applicationeditform.php:295
+msgid "Desktop"
+msgstr ""
+
+#. TRANS: Form guide.
+#: lib/applicationeditform.php:297
+msgid "Type of application, browser or desktop"
+msgstr ""
+
+#. TRANS: Radio button label for access type.
+#: lib/applicationeditform.php:320
+msgid "Read-only"
+msgstr ""
+
+#. TRANS: Radio button label for access type.
+#: lib/applicationeditform.php:339
+msgid "Read-write"
+msgstr ""
+
+#. TRANS: Form guide.
+#: lib/applicationeditform.php:341
+msgid "Default access for this application: read-only, or read-write"
+msgstr ""
+
+#. TRANS: Submit button title
+#: lib/applicationeditform.php:359
+msgid "Cancel"
+msgstr ""
+
+#. TRANS: Application access type
+#: lib/applicationlist.php:136
+msgid "read-write"
+msgstr ""
+
+#. TRANS: Application access type
+#: lib/applicationlist.php:138
+msgid "read-only"
+msgstr ""
+
+#. TRANS: Used in application list. %1$s is a modified date, %2$s is access type (read-write or read-only)
+#: lib/applicationlist.php:144
+#, php-format
+msgid "Approved %1$s - \"%2$s\" access."
+msgstr ""
+
+#. TRANS: Button label
+#: lib/applicationlist.php:159
+msgctxt "BUTTON"
+msgid "Revoke"
+msgstr ""
+
+#. TRANS: DT element label in attachment list.
+#: lib/attachmentlist.php:88
+msgid "Attachments"
+msgstr ""
+
+#. TRANS: DT element label in attachment list item.
+#: lib/attachmentlist.php:265
+msgid "Author"
+msgstr ""
+
+#. TRANS: DT element label in attachment list item.
+#: lib/attachmentlist.php:279
+msgid "Provider"
+msgstr ""
+
+#: lib/attachmentnoticesection.php:67
+msgid "Notices where this attachment appears"
+msgstr ""
+
+#: lib/attachmenttagcloudsection.php:48
+msgid "Tags for this attachment"
+msgstr ""
+
+#: lib/authenticationplugin.php:221 lib/authenticationplugin.php:226
+msgid "Password changing failed"
+msgstr ""
+
+#: lib/authenticationplugin.php:236
+msgid "Password changing is not allowed"
+msgstr ""
+
+#: lib/channel.php:157 lib/channel.php:177
+msgid "Command results"
+msgstr ""
+
+#: lib/channel.php:229 lib/mailhandler.php:142
+msgid "Command complete"
+msgstr ""
+
+#: lib/channel.php:240
+msgid "Command failed"
+msgstr ""
+
+#: lib/command.php:83 lib/command.php:105
+msgid "Notice with that id does not exist"
+msgstr ""
+
+#: lib/command.php:99 lib/command.php:596
+msgid "User has no last notice"
+msgstr ""
+
+#. TRANS: Message given requesting a profile for a non-existing user.
+#. TRANS: %s is the nickname of the user for which the profile could not be found.
+#: lib/command.php:127
+#, php-format
+msgid "Could not find a user with nickname %s"
+msgstr ""
+
+#. TRANS: Message given getting a non-existing user.
+#. TRANS: %s is the nickname of the user that could not be found.
+#: lib/command.php:147
+#, php-format
+msgid "Could not find a local user with nickname %s"
+msgstr ""
+
+#: lib/command.php:180
+msgid "Sorry, this command is not yet implemented."
+msgstr ""
+
+#: lib/command.php:225
+msgid "It does not make a lot of sense to nudge yourself!"
+msgstr ""
+
+#. TRANS: Message given having nudged another user.
+#. TRANS: %s is the nickname of the user that was nudged.
+#: lib/command.php:234
+#, php-format
+msgid "Nudge sent to %s"
+msgstr ""
+
+#: lib/command.php:260
+#, php-format
+msgid ""
+"Subscriptions: %1$s\n"
+"Subscribers: %2$s\n"
+"Notices: %3$s"
+msgstr ""
+
+#: lib/command.php:302
+msgid "Notice marked as fave."
+msgstr ""
+
+#: lib/command.php:323
+msgid "You are already a member of that group"
+msgstr ""
+
+#. TRANS: Message given having failed to add a user to a group.
+#. TRANS: %1$s is the nickname of the user, %2$s is the nickname of the group.
+#: lib/command.php:339
+#, php-format
+msgid "Could not join user %1$s to group %2$s"
+msgstr ""
+
+#. TRANS: Message given having failed to remove a user from a group.
+#. TRANS: %1$s is the nickname of the user, %2$s is the nickname of the group.
+#: lib/command.php:385
+#, php-format
+msgid "Could not remove user %1$s from group %2$s"
+msgstr ""
+
+#. TRANS: Whois output. %s is the full name of the queried user.
+#: lib/command.php:418
+#, php-format
+msgid "Fullname: %s"
+msgstr ""
+
+#. TRANS: Whois output. %s is the location of the queried user.
+#. TRANS: Profile info line in new-subscriber notification e-mail
+#: lib/command.php:422 lib/mail.php:268
+#, php-format
+msgid "Location: %s"
+msgstr ""
+
+#. TRANS: Whois output. %s is the homepage of the queried user.
+#. TRANS: Profile info line in new-subscriber notification e-mail
+#: lib/command.php:426 lib/mail.php:271
+#, php-format
+msgid "Homepage: %s"
+msgstr ""
+
+#. TRANS: Whois output. %s is the bio information of the queried user.
+#: lib/command.php:430
+#, php-format
+msgid "About: %s"
+msgstr ""
+
+#: lib/command.php:457
+#, php-format
+msgid ""
+"%s is a remote profile; you can only send direct messages to users on the "
+"same server."
+msgstr ""
+
+#. TRANS: Message given if content is too long.
+#. TRANS: %1$d is the maximum number of characters, %2$d is the number of submitted characters.
+#: lib/command.php:472
+#, php-format
+msgid "Message too long - maximum is %1$d characters, you sent %2$d"
+msgstr ""
+
+#. TRANS: Message given have sent a direct message to another user.
+#. TRANS: %s is the name of the other user.
+#: lib/command.php:492
+#, php-format
+msgid "Direct message to %s sent"
+msgstr ""
+
+#: lib/command.php:494
+msgid "Error sending direct message."
+msgstr ""
+
+#: lib/command.php:514
+msgid "Cannot repeat your own notice"
+msgstr ""
+
+#: lib/command.php:519
+msgid "Already repeated that notice"
+msgstr ""
+
+#. TRANS: Message given having repeated a notice from another user.
+#. TRANS: %s is the name of the user for which the notice was repeated.
+#: lib/command.php:529
+#, php-format
+msgid "Notice from %s repeated"
+msgstr ""
+
+#: lib/command.php:531
+msgid "Error repeating notice."
+msgstr ""
+
+#: lib/command.php:562
+#, php-format
+msgid "Notice too long - maximum is %d characters, you sent %d"
+msgstr ""
+
+#: lib/command.php:571
+#, php-format
+msgid "Reply to %s sent"
+msgstr ""
+
+#: lib/command.php:573
+msgid "Error saving notice."
+msgstr ""
+
+#: lib/command.php:620
+msgid "Specify the name of the user to subscribe to"
+msgstr ""
+
+#: lib/command.php:628
+msgid "Can't subscribe to OMB profiles by command."
+msgstr ""
+
+#: lib/command.php:634
+#, php-format
+msgid "Subscribed to %s"
+msgstr ""
+
+#: lib/command.php:655 lib/command.php:754
+msgid "Specify the name of the user to unsubscribe from"
+msgstr ""
+
+#: lib/command.php:664
+#, php-format
+msgid "Unsubscribed from %s"
+msgstr ""
+
+#: lib/command.php:682 lib/command.php:705
+msgid "Command not yet implemented."
+msgstr ""
+
+#: lib/command.php:685
+msgid "Notification off."
+msgstr ""
+
+#: lib/command.php:687
+msgid "Can't turn off notification."
+msgstr ""
+
+#: lib/command.php:708
+msgid "Notification on."
+msgstr ""
+
+#: lib/command.php:710
+msgid "Can't turn on notification."
+msgstr ""
+
+#: lib/command.php:723
+msgid "Login command is disabled"
+msgstr ""
+
+#: lib/command.php:734
+#, php-format
+msgid "This link is useable only once, and is good for only 2 minutes: %s"
+msgstr ""
+
+#: lib/command.php:761
+#, php-format
+msgid "Unsubscribed %s"
+msgstr ""
+
+#: lib/command.php:778
+msgid "You are not subscribed to anyone."
+msgstr ""
+
+#: lib/command.php:780
+#, fuzzy
+msgid "You are subscribed to this person:"
+msgid_plural "You are subscribed to these people:"
+msgstr[0] "You are subscribed to this person:"
+msgstr[1] "You are subscribed to these people:"
+
+#: lib/command.php:800
+msgid "No one is subscribed to you."
+msgstr ""
+
+#: lib/command.php:802
+#, fuzzy
+msgid "This person is subscribed to you:"
+msgid_plural "These people are subscribed to you:"
+msgstr[0] "This person is subscribed to you:"
+msgstr[1] "These people are subscribed to you:"
+
+#: lib/command.php:822
+msgid "You are not a member of any groups."
+msgstr ""
+
+#: lib/command.php:824
+#, fuzzy
+msgid "You are a member of this group:"
+msgid_plural "You are a member of these groups:"
+msgstr[0] "You are a member of this group:"
+msgstr[1] "You are a member of these groups:"
+
+#: lib/command.php:838
+msgid ""
+"Commands:\n"
+"on - turn on notifications\n"
+"off - turn off notifications\n"
+"help - show this help\n"
+"follow <nickname> - subscribe to user\n"
+"groups - lists the groups you have joined\n"
+"subscriptions - list the people you follow\n"
+"subscribers - list the people that follow you\n"
+"leave <nickname> - unsubscribe from user\n"
+"d <nickname> <text> - direct message to user\n"
+"get <nickname> - get last notice from user\n"
+"whois <nickname> - get profile info on user\n"
+"lose <nickname> - force user to stop following you\n"
+"fav <nickname> - add user's last notice as a 'fave'\n"
+"fav #<notice_id> - add notice with the given id as a 'fave'\n"
+"repeat #<notice_id> - repeat a notice with a given id\n"
+"repeat <nickname> - repeat the last notice from user\n"
+"reply #<notice_id> - reply to notice with a given id\n"
+"reply <nickname> - reply to the last notice from user\n"
+"join <group> - join group\n"
+"login - Get a link to login to the web interface\n"
+"drop <group> - leave group\n"
+"stats - get your stats\n"
+"stop - same as 'off'\n"
+"quit - same as 'off'\n"
+"sub <nickname> - same as 'follow'\n"
+"unsub <nickname> - same as 'leave'\n"
+"last <nickname> - same as 'get'\n"
+"on <nickname> - not yet implemented.\n"
+"off <nickname> - not yet implemented.\n"
+"nudge <nickname> - remind a user to update.\n"
+"invite <phone number> - not yet implemented.\n"
+"track <word> - not yet implemented.\n"
+"untrack <word> - not yet implemented.\n"
+"track off - not yet implemented.\n"
+"untrack all - not yet implemented.\n"
+"tracks - not yet implemented.\n"
+"tracking - not yet implemented.\n"
+msgstr ""
+
+#: lib/common.php:135
+msgid "No configuration file found. "
+msgstr ""
+
+#: lib/common.php:136
+msgid "I looked for configuration files in the following places: "
+msgstr ""
+
+#: lib/common.php:138
+msgid "You may wish to run the installer to fix this."
+msgstr ""
+
+#: lib/common.php:139
+msgid "Go to the installer."
+msgstr ""
+
+#: lib/connectsettingsaction.php:110
+msgid "IM"
+msgstr ""
+
+#: lib/connectsettingsaction.php:111
+msgid "Updates by instant messenger (IM)"
+msgstr ""
+
+#: lib/connectsettingsaction.php:116
+msgid "Updates by SMS"
+msgstr ""
+
+#: lib/connectsettingsaction.php:120
+msgid "Connections"
+msgstr ""
+
+#: lib/connectsettingsaction.php:121
+msgid "Authorized connected applications"
+msgstr ""
+
+#: lib/dberroraction.php:60
+msgid "Database error"
+msgstr ""
+
+#: lib/designsettings.php:105
+msgid "Upload file"
+msgstr ""
+
+#: lib/designsettings.php:109
+msgid ""
+"You can upload your personal background image. The maximum file size is 2MB."
+msgstr ""
+
+#: lib/designsettings.php:418
+msgid "Design defaults restored."
+msgstr ""
+
+#: lib/disfavorform.php:114 lib/disfavorform.php:140
+msgid "Disfavor this notice"
+msgstr ""
+
+#: lib/favorform.php:114 lib/favorform.php:140
+msgid "Favor this notice"
+msgstr ""
+
+#: lib/favorform.php:140
+msgid "Favor"
+msgstr ""
+
+#: lib/feed.php:85
+msgid "RSS 1.0"
+msgstr ""
+
+#: lib/feed.php:87
+msgid "RSS 2.0"
+msgstr ""
+
+#: lib/feed.php:89
+msgid "Atom"
+msgstr ""
+
+#: lib/feed.php:91
+msgid "FOAF"
+msgstr ""
+
+#: lib/feedlist.php:64
+msgid "Export data"
+msgstr ""
+
+#: lib/galleryaction.php:121
+msgid "Filter tags"
+msgstr ""
+
+#: lib/galleryaction.php:131
+msgid "All"
+msgstr ""
+
+#: lib/galleryaction.php:139
+msgid "Select tag to filter"
+msgstr ""
+
+#: lib/galleryaction.php:140
+msgid "Tag"
+msgstr ""
+
+#: lib/galleryaction.php:141
+msgid "Choose a tag to narrow list"
+msgstr ""
+
+#: lib/galleryaction.php:143
+msgid "Go"
+msgstr ""
+
+#: lib/grantroleform.php:91
+#, php-format
+msgid "Grant this user the \"%s\" role"
+msgstr ""
+
+#: lib/groupeditform.php:163
+msgid "URL of the homepage or blog of the group or topic"
+msgstr ""
+
+#: lib/groupeditform.php:168
+msgid "Describe the group or topic"
+msgstr ""
+
+#: lib/groupeditform.php:170
+#, php-format
+msgid "Describe the group or topic in %d characters"
+msgstr ""
+
+#: lib/groupeditform.php:179
+msgid ""
+"Location for the group, if any, like \"City, State (or Region), Country\""
+msgstr ""
+
+#: lib/groupeditform.php:187
+#, php-format
+msgid "Extra nicknames for the group, comma- or space- separated, max %d"
+msgstr ""
+
+#: lib/groupnav.php:85
+msgid "Group"
+msgstr ""
+
+#: lib/groupnav.php:101
+msgid "Blocked"
+msgstr ""
+
+#: lib/groupnav.php:102
+#, php-format
+msgid "%s blocked users"
+msgstr ""
+
+#: lib/groupnav.php:108
+#, php-format
+msgid "Edit %s group properties"
+msgstr ""
+
+#: lib/groupnav.php:113
+msgid "Logo"
+msgstr ""
+
+#: lib/groupnav.php:114
+#, php-format
+msgid "Add or edit %s logo"
+msgstr ""
+
+#: lib/groupnav.php:120
+#, php-format
+msgid "Add or edit %s design"
+msgstr ""
+
+#: lib/groupsbymemberssection.php:71
+msgid "Groups with most members"
+msgstr ""
+
+#: lib/groupsbypostssection.php:71
+msgid "Groups with most posts"
+msgstr ""
+
+#: lib/grouptagcloudsection.php:56
+#, php-format
+msgid "Tags in %s group's notices"
+msgstr ""
+
+#. TRANS: Client exception 406
+#: lib/htmloutputter.php:104
+msgid "This page is not available in a media type you accept"
+msgstr ""
+
+#: lib/imagefile.php:72
+msgid "Unsupported image file format."
+msgstr ""
+
+#: lib/imagefile.php:88
+#, php-format
+msgid "That file is too big. The maximum file size is %s."
+msgstr ""
+
+#: lib/imagefile.php:93
+msgid "Partial upload."
+msgstr ""
+
+#: lib/imagefile.php:101 lib/mediafile.php:170
+msgid "System error uploading file."
+msgstr ""
+
+#: lib/imagefile.php:109
+msgid "Not an image or corrupt file."
+msgstr ""
+
+#: lib/imagefile.php:122
+msgid "Lost our file."
+msgstr ""
+
+#: lib/imagefile.php:163 lib/imagefile.php:224
+msgid "Unknown file type"
+msgstr ""
+
+#: lib/imagefile.php:244
+msgid "MB"
+msgstr ""
+
+#: lib/imagefile.php:246
+msgid "kB"
+msgstr ""
+
+#: lib/jabber.php:387
+#, php-format
+msgid "[%s]"
+msgstr ""
+
+#: lib/jabber.php:567
+#, php-format
+msgid "Unknown inbox source %d."
+msgstr ""
+
+#: lib/joinform.php:114
+msgid "Join"
+msgstr ""
+
+#: lib/leaveform.php:114
+msgid "Leave"
+msgstr ""
+
+#: lib/logingroupnav.php:80
+msgid "Login with a username and password"
+msgstr ""
+
+#: lib/logingroupnav.php:86
+msgid "Sign up for a new account"
+msgstr ""
+
+#. TRANS: Subject for address confirmation email
+#: lib/mail.php:174
+msgid "Email address confirmation"
+msgstr ""
+
+#. TRANS: Body for address confirmation email.
+#: lib/mail.php:177
+#, php-format
+msgid ""
+"Hey, %s.\n"
+"\n"
+"Someone just entered this email address on %s.\n"
+"\n"
+"If it was you, and you want to confirm your entry, use the URL below:\n"
+"\n"
+"\t%s\n"
+"\n"
+"If not, just ignore this message.\n"
+"\n"
+"Thanks for your time, \n"
+"%s\n"
+msgstr ""
+
+#. TRANS: Subject of new-subscriber notification e-mail
+#: lib/mail.php:243
+#, php-format
+msgid "%1$s is now listening to your notices on %2$s."
+msgstr ""
+
+#: lib/mail.php:248
+#, php-format
+msgid ""
+"If you believe this account is being used abusively, you can block them from "
+"your subscribers list and report as spam to site administrators at %s"
+msgstr ""
+
+#. TRANS: Main body of new-subscriber notification e-mail
+#: lib/mail.php:254
+#, php-format
+msgid ""
+"%1$s is now listening to your notices on %2$s.\n"
+"\n"
+"\t%3$s\n"
+"\n"
+"%4$s%5$s%6$s\n"
+"Faithfully yours,\n"
+"%7$s.\n"
+"\n"
+"----\n"
+"Change your email address or notification options at %8$s\n"
+msgstr ""
+
+#. TRANS: Profile info line in new-subscriber notification e-mail
+#: lib/mail.php:274
+#, php-format
+msgid "Bio: %s"
+msgstr ""
+
+#. TRANS: Subject of notification mail for new posting email address
+#: lib/mail.php:304
+#, php-format
+msgid "New email address for posting to %s"
+msgstr ""
+
+#. TRANS: Body of notification mail for new posting email address
+#: lib/mail.php:308
+#, php-format
+msgid ""
+"You have a new posting address on %1$s.\n"
+"\n"
+"Send email to %2$s to post new messages.\n"
+"\n"
+"More email instructions at %3$s.\n"
+"\n"
+"Faithfully yours,\n"
+"%4$s"
+msgstr ""
+
+#. TRANS: Subject line for SMS-by-email notification messages
+#: lib/mail.php:433
+#, php-format
+msgid "%s status"
+msgstr ""
+
+#. TRANS: Subject line for SMS-by-email address confirmation message
+#: lib/mail.php:460
+msgid "SMS confirmation"
+msgstr ""
+
+#. TRANS: Main body heading for SMS-by-email address confirmation message
+#: lib/mail.php:463
+#, php-format
+msgid "%s: confirm you own this phone number with this code:"
+msgstr ""
+
+#. TRANS: Subject for 'nudge' notification email
+#: lib/mail.php:484
+#, php-format
+msgid "You've been nudged by %s"
+msgstr ""
+
+#. TRANS: Body for 'nudge' notification email
+#: lib/mail.php:489
+#, php-format
+msgid ""
+"%1$s (%2$s) is wondering what you are up to these days and is inviting you "
+"to post some news.\n"
+"\n"
+"So let's hear from you :)\n"
+"\n"
+"%3$s\n"
+"\n"
+"Don't reply to this email; it won't get to them.\n"
+"\n"
+"With kind regards,\n"
+"%4$s\n"
+msgstr ""
+
+#. TRANS: Subject for direct-message notification email
+#: lib/mail.php:536
+#, php-format
+msgid "New private message from %s"
+msgstr ""
+
+#. TRANS: Body for direct-message notification email
+#: lib/mail.php:541
+#, php-format
+msgid ""
+"%1$s (%2$s) sent you a private message:\n"
+"\n"
+"------------------------------------------------------\n"
+"%3$s\n"
+"------------------------------------------------------\n"
+"\n"
+"You can reply to their message here:\n"
+"\n"
+"%4$s\n"
+"\n"
+"Don't reply to this email; it won't get to them.\n"
+"\n"
+"With kind regards,\n"
+"%5$s\n"
+msgstr ""
+
+#. TRANS: Subject for favorite notification email
+#: lib/mail.php:589
+#, php-format
+msgid "%s (@%s) added your notice as a favorite"
+msgstr ""
+
+#. TRANS: Body for favorite notification email
+#: lib/mail.php:592
+#, php-format
+msgid ""
+"%1$s (@%7$s) just added your notice from %2$s as one of their favorites.\n"
+"\n"
+"The URL of your notice is:\n"
+"\n"
+"%3$s\n"
+"\n"
+"The text of your notice is:\n"
+"\n"
+"%4$s\n"
+"\n"
+"You can see the list of %1$s's favorites here:\n"
+"\n"
+"%5$s\n"
+"\n"
+"Faithfully yours,\n"
+"%6$s\n"
+msgstr ""
+
+#. TRANS: Line in @-reply notification e-mail. %s is conversation URL.
+#: lib/mail.php:651
+#, php-format
+msgid ""
+"The full conversation can be read here:\n"
+"\n"
+"\t%s"
+msgstr ""
+
+#: lib/mail.php:657
+#, php-format
+msgid "%s (@%s) sent a notice to your attention"
+msgstr ""
+
+#. TRANS: Body of @-reply notification e-mail.
+#: lib/mail.php:660
+#, php-format
+msgid ""
+"%1$s (@%9$s) just sent a notice to your attention (an '@-reply') on %2$s.\n"
+"\n"
+"The notice is here:\n"
+"\n"
+"\t%3$s\n"
+"\n"
+"It reads:\n"
+"\n"
+"\t%4$s\n"
+"\n"
+"%5$sYou can reply back here:\n"
+"\n"
+"\t%6$s\n"
+"\n"
+"The list of all @-replies for you here:\n"
+"\n"
+"%7$s\n"
+"\n"
+"Faithfully yours,\n"
+"%2$s\n"
+"\n"
+"P.S. You can turn off these email notifications here: %8$s\n"
+msgstr ""
+
+#: lib/mailbox.php:89
+msgid "Only the user can read their own mailboxes."
+msgstr ""
+
+#: lib/mailbox.php:139
+msgid ""
+"You have no private messages. You can send private message to engage other "
+"users in conversation. People can send you messages for your eyes only."
+msgstr ""
+
+#: lib/mailbox.php:227 lib/noticelist.php:505
+msgid "from"
+msgstr ""
+
+#: lib/mailhandler.php:37
+msgid "Could not parse message."
+msgstr ""
+
+#: lib/mailhandler.php:42
+msgid "Not a registered user."
+msgstr ""
+
+#: lib/mailhandler.php:46
+msgid "Sorry, that is not your incoming email address."
+msgstr ""
+
+#: lib/mailhandler.php:50
+msgid "Sorry, no incoming email allowed."
+msgstr ""
+
+#: lib/mailhandler.php:228
+#, php-format
+msgid "Unsupported message type: %s"
+msgstr ""
+
+#: lib/mediafile.php:98 lib/mediafile.php:123
+msgid "There was a database error while saving your file. Please try again."
+msgstr ""
+
+#: lib/mediafile.php:142
+msgid "The uploaded file exceeds the upload_max_filesize directive in php.ini."
+msgstr ""
+
+#: lib/mediafile.php:147
+msgid ""
+"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in "
+"the HTML form."
+msgstr ""
+
+#: lib/mediafile.php:152
+msgid "The uploaded file was only partially uploaded."
+msgstr ""
+
+#: lib/mediafile.php:159
+msgid "Missing a temporary folder."
+msgstr ""
+
+#: lib/mediafile.php:162
+msgid "Failed to write file to disk."
+msgstr ""
+
+#: lib/mediafile.php:165
+msgid "File upload stopped by extension."
+msgstr ""
+
+#: lib/mediafile.php:179 lib/mediafile.php:217
+msgid "File exceeds user's quota."
+msgstr ""
+
+#: lib/mediafile.php:197 lib/mediafile.php:234
+msgid "File could not be moved to destination directory."
+msgstr ""
+
+#: lib/mediafile.php:202 lib/mediafile.php:238
+msgid "Could not determine file's MIME type."
+msgstr ""
+
+#: lib/mediafile.php:318
+#, php-format
+msgid " Try using another %s format."
+msgstr ""
+
+#: lib/mediafile.php:323
+#, php-format
+msgid "%s is not a supported file type on this server."
+msgstr ""
+
+#: lib/messageform.php:120
+msgid "Send a direct notice"
+msgstr ""
+
+#: lib/messageform.php:146
+msgid "To"
+msgstr ""
+
+#: lib/messageform.php:159 lib/noticeform.php:185
+msgid "Available characters"
+msgstr ""
+
+#: lib/messageform.php:178 lib/noticeform.php:236
+msgctxt "Send button for sending notice"
+msgid "Send"
+msgstr ""
+
+#: lib/noticeform.php:160
+msgid "Send a notice"
+msgstr ""
+
+#: lib/noticeform.php:173
+#, php-format
+msgid "What's up, %s?"
+msgstr ""
+
+#: lib/noticeform.php:192
+msgid "Attach"
+msgstr ""
+
+#: lib/noticeform.php:196
+msgid "Attach a file"
+msgstr ""
+
+#: lib/noticeform.php:212
+msgid "Share my location"
+msgstr ""
+
+#: lib/noticeform.php:215
+msgid "Do not share my location"
+msgstr ""
+
+#: lib/noticeform.php:216
+msgid ""
+"Sorry, retrieving your geo location is taking longer than expected, please "
+"try again later"
+msgstr ""
+
+#. TRANS: Used in coordinates as abbreviation of north
+#: lib/noticelist.php:436
+msgid "N"
+msgstr ""
+
+#. TRANS: Used in coordinates as abbreviation of south
+#: lib/noticelist.php:438
+msgid "S"
+msgstr ""
+
+#. TRANS: Used in coordinates as abbreviation of east
+#: lib/noticelist.php:440
+msgid "E"
+msgstr ""
+
+#. TRANS: Used in coordinates as abbreviation of west
+#: lib/noticelist.php:442
+msgid "W"
+msgstr ""
+
+#: lib/noticelist.php:444
+#, php-format
+msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
+msgstr ""
+
+#: lib/noticelist.php:453
+msgid "at"
+msgstr ""
+
+#: lib/noticelist.php:567
+msgid "in context"
+msgstr ""
+
+#: lib/noticelist.php:602
+msgid "Repeated by"
+msgstr ""
+
+#: lib/noticelist.php:629
+msgid "Reply to this notice"
+msgstr ""
+
+#: lib/noticelist.php:630
+msgid "Reply"
+msgstr ""
+
+#: lib/noticelist.php:674
+msgid "Notice repeated"
+msgstr ""
+
+#: lib/nudgeform.php:116
+msgid "Nudge this user"
+msgstr ""
+
+#: lib/nudgeform.php:128
+msgid "Nudge"
+msgstr ""
+
+#: lib/nudgeform.php:128
+msgid "Send a nudge to this user"
+msgstr ""
+
+#: lib/oauthstore.php:283
+msgid "Error inserting new profile"
+msgstr ""
+
+#: lib/oauthstore.php:291
+msgid "Error inserting avatar"
+msgstr ""
+
+#: lib/oauthstore.php:306
+msgid "Error updating remote profile"
+msgstr ""
+
+#: lib/oauthstore.php:311
+msgid "Error inserting remote profile"
+msgstr ""
+
+#: lib/oauthstore.php:345
+msgid "Duplicate notice"
+msgstr ""
+
+#: lib/oauthstore.php:490
+msgid "Couldn't insert new subscription."
+msgstr ""
+
+#: lib/personalgroupnav.php:99
+msgid "Personal"
+msgstr ""
+
+#: lib/personalgroupnav.php:104
+msgid "Replies"
+msgstr ""
+
+#: lib/personalgroupnav.php:114
+msgid "Favorites"
+msgstr ""
+
+#: lib/personalgroupnav.php:125
+msgid "Inbox"
+msgstr ""
+
+#: lib/personalgroupnav.php:126
+msgid "Your incoming messages"
+msgstr ""
+
+#: lib/personalgroupnav.php:130
+msgid "Outbox"
+msgstr ""
+
+#: lib/personalgroupnav.php:131
+msgid "Your sent messages"
+msgstr ""
+
+#: lib/personaltagcloudsection.php:56
+#, php-format
+msgid "Tags in %s's notices"
+msgstr ""
+
+#: lib/plugin.php:115
+msgid "Unknown"
+msgstr ""
+
+#: lib/profileaction.php:109 lib/profileaction.php:205 lib/subgroupnav.php:82
+msgid "Subscriptions"
+msgstr ""
+
+#: lib/profileaction.php:126
+msgid "All subscriptions"
+msgstr ""
+
+#: lib/profileaction.php:144 lib/profileaction.php:214 lib/subgroupnav.php:90
+msgid "Subscribers"
+msgstr ""
+
+#: lib/profileaction.php:161
+msgid "All subscribers"
+msgstr ""
+
+#: lib/profileaction.php:191
+msgid "User ID"
+msgstr ""
+
+#: lib/profileaction.php:196
+msgid "Member since"
+msgstr ""
+
+#. TRANS: Average count of posts made per day since account registration
+#: lib/profileaction.php:235
+msgid "Daily average"
+msgstr ""
+
+#: lib/profileaction.php:264
+msgid "All groups"
+msgstr ""
+
+#: lib/profileformaction.php:123
+msgid "Unimplemented method."
+msgstr ""
+
+#: lib/publicgroupnav.php:78
+msgid "Public"
+msgstr ""
+
+#: lib/publicgroupnav.php:82
+msgid "User groups"
+msgstr ""
+
+#: lib/publicgroupnav.php:84 lib/publicgroupnav.php:85
+msgid "Recent tags"
+msgstr ""
+
+#: lib/publicgroupnav.php:88
+msgid "Featured"
+msgstr ""
+
+#: lib/publicgroupnav.php:92
+msgid "Popular"
+msgstr ""
+
+#: lib/redirectingaction.php:95
+msgid "No return-to arguments."
+msgstr ""
+
+#: lib/repeatform.php:107
+msgid "Repeat this notice?"
+msgstr ""
+
+#: lib/repeatform.php:132
+msgid "Yes"
+msgstr ""
+
+#: lib/repeatform.php:132
+msgid "Repeat this notice"
+msgstr ""
+
+#: lib/revokeroleform.php:91
+#, php-format
+msgid "Revoke the \"%s\" role from this user"
+msgstr ""
+
+#: lib/router.php:709
+msgid "No single user defined for single-user mode."
+msgstr ""
+
+#: lib/sandboxform.php:67
+msgid "Sandbox"
+msgstr ""
+
+#: lib/sandboxform.php:78
+msgid "Sandbox this user"
+msgstr ""
+
+#: lib/searchaction.php:120
+msgid "Search site"
+msgstr ""
+
+#: lib/searchaction.php:126
+msgid "Keyword(s)"
+msgstr ""
+
+#: lib/searchaction.php:127
+msgid "Search"
+msgstr ""
+
+#: lib/searchaction.php:162
+msgid "Search help"
+msgstr ""
+
+#: lib/searchgroupnav.php:80
+msgid "People"
+msgstr ""
+
+#: lib/searchgroupnav.php:81
+msgid "Find people on this site"
+msgstr ""
+
+#: lib/searchgroupnav.php:83
+msgid "Find content of notices"
+msgstr ""
+
+#: lib/searchgroupnav.php:85
+msgid "Find groups on this site"
+msgstr ""
+
+#: lib/section.php:89
+msgid "Untitled section"
+msgstr ""
+
+#: lib/section.php:106
+msgid "More..."
+msgstr ""
+
+#: lib/silenceform.php:67
+msgid "Silence"
+msgstr ""
+
+#: lib/silenceform.php:78
+msgid "Silence this user"
+msgstr ""
+
+#: lib/subgroupnav.php:83
+#, php-format
+msgid "People %s subscribes to"
+msgstr ""
+
+#: lib/subgroupnav.php:91
+#, php-format
+msgid "People subscribed to %s"
+msgstr ""
+
+#: lib/subgroupnav.php:99
+#, php-format
+msgid "Groups %s is a member of"
+msgstr ""
+
+#: lib/subgroupnav.php:105
+msgid "Invite"
+msgstr ""
+
+#: lib/subgroupnav.php:106
+#, php-format
+msgid "Invite friends and colleagues to join you on %s"
+msgstr ""
+
+#: lib/subscriberspeopleselftagcloudsection.php:48
+#: lib/subscriptionspeopleselftagcloudsection.php:48
+msgid "People Tagcloud as self-tagged"
+msgstr ""
+
+#: lib/subscriberspeopletagcloudsection.php:48
+#: lib/subscriptionspeopletagcloudsection.php:48
+msgid "People Tagcloud as tagged"
+msgstr ""
+
+#: lib/tagcloudsection.php:56
+msgid "None"
+msgstr ""
+
+#: lib/themeuploader.php:50
+msgid "This server cannot handle theme uploads without ZIP support."
+msgstr ""
+
+#: lib/themeuploader.php:58 lib/themeuploader.php:61
+msgid "The theme file is missing or the upload failed."
+msgstr ""
+
+#: lib/themeuploader.php:91 lib/themeuploader.php:102
+#: lib/themeuploader.php:253 lib/themeuploader.php:257
+#: lib/themeuploader.php:265 lib/themeuploader.php:272
+msgid "Failed saving theme."
+msgstr ""
+
+#: lib/themeuploader.php:139
+msgid "Invalid theme: bad directory structure."
+msgstr ""
+
+#: lib/themeuploader.php:166
+#, php-format
+msgid "Uploaded theme is too large; must be less than %d bytes uncompressed."
+msgstr ""
+
+#: lib/themeuploader.php:178
+msgid "Invalid theme archive: missing file css/display.css"
+msgstr ""
+
+#: lib/themeuploader.php:205
+msgid ""
+"Theme contains invalid file or folder name. Stick with ASCII letters, "
+"digits, underscore, and minus sign."
+msgstr ""
+
+#: lib/themeuploader.php:216
+#, php-format
+msgid "Theme contains file of type '.%s', which is not allowed."
+msgstr ""
+
+#: lib/themeuploader.php:234
+msgid "Error opening theme archive."
+msgstr ""
+
+#: lib/topposterssection.php:74
+msgid "Top posters"
+msgstr ""
+
+#: lib/unsandboxform.php:69
+msgid "Unsandbox"
+msgstr ""
+
+#: lib/unsandboxform.php:80
+msgid "Unsandbox this user"
+msgstr ""
+
+#: lib/unsilenceform.php:67
+msgid "Unsilence"
+msgstr ""
+
+#: lib/unsilenceform.php:78
+msgid "Unsilence this user"
+msgstr ""
+
+#: lib/unsubscribeform.php:113 lib/unsubscribeform.php:137
+msgid "Unsubscribe from this user"
+msgstr ""
+
+#: lib/unsubscribeform.php:137
+msgid "Unsubscribe"
+msgstr ""
+
+#: lib/usernoprofileexception.php:58
+#, php-format
+msgid "User %s (%d) has no profile record."
+msgstr ""
+
+#: lib/userprofile.php:117
+msgid "Edit Avatar"
+msgstr ""
+
+#: lib/userprofile.php:234 lib/userprofile.php:248
+msgid "User actions"
+msgstr ""
+
+#: lib/userprofile.php:237
+msgid "User deletion in progress..."
+msgstr ""
+
+#: lib/userprofile.php:263
+msgid "Edit profile settings"
+msgstr ""
+
+#: lib/userprofile.php:264
+msgid "Edit"
+msgstr ""
+
+#: lib/userprofile.php:287
+msgid "Send a direct message to this user"
+msgstr ""
+
+#: lib/userprofile.php:288
+msgid "Message"
+msgstr ""
+
+#: lib/userprofile.php:326
+msgid "Moderate"
+msgstr ""
+
+#: lib/userprofile.php:364
+msgid "User role"
+msgstr ""
+
+#: lib/userprofile.php:366
+msgctxt "role"
+msgid "Administrator"
+msgstr ""
+
+#: lib/userprofile.php:367
+msgctxt "role"
+msgid "Moderator"
+msgstr ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1100
+msgid "a few seconds ago"
+msgstr ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1103
+msgid "about a minute ago"
+msgstr ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1107
+#, php-format
+msgid "about %d minutes ago"
+msgstr ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1110
+msgid "about an hour ago"
+msgstr ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1114
+#, php-format
+msgid "about %d hours ago"
+msgstr ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1117
+msgid "about a day ago"
+msgstr ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1121
+#, php-format
+msgid "about %d days ago"
+msgstr ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1124
+msgid "about a month ago"
+msgstr ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1128
+#, php-format
+msgid "about %d months ago"
+msgstr ""
+
+#. TRANS: Used in notices to indicate when the notice was made compared to now.
+#: lib/util.php:1131
+msgid "about a year ago"
+msgstr ""
+
+#: lib/webcolor.php:82
+#, php-format
+msgid "%s is not a valid color!"
+msgstr ""
+
+#: lib/webcolor.php:123
+#, php-format
+msgid "%s is not a valid color! Use 3 or 6 hex chars."
+msgstr ""
+
+#: lib/xmppmanager.php:403
+#, php-format
+msgid "Message too long - maximum is %1$d characters, you sent %2$d."
+msgstr ""
diff --git a/locale/de/LC_MESSAGES/statusnet.po b/locale/de/LC_MESSAGES/statusnet.po
index 3f16402f2..8154220b7 100644
--- a/locale/de/LC_MESSAGES/statusnet.po
+++ b/locale/de/LC_MESSAGES/statusnet.po
@@ -7,7 +7,6 @@
# Author@translatewiki.net: McDutchie
# Author@translatewiki.net: Michael
# Author@translatewiki.net: Michi
-# Author@translatewiki.net: Pill
# Author@translatewiki.net: The Evil IP address
# Author@translatewiki.net: Umherirrender
# --
@@ -17,12 +16,12 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-06-16 22:18+0000\n"
-"PO-Revision-Date: 2010-06-21 18:03:12+0000\n"
+"POT-Creation-Date: 2010-08-03 13:21+0000\n"
+"PO-Revision-Date: 2010-08-03 13:21:49+0000\n"
"Language-Team: German\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.17alpha (r68367); Translate extension (2010-06-12)\n"
+"X-Generator: MediaWiki 1.17alpha (r70381); Translate extension (2010-07-21)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: de\n"
"X-Message-Group: out-statusnet\n"
@@ -107,7 +106,7 @@ msgstr "Seite nicht vorhanden"
#: actions/apidirectmessagenew.php:74 actions/apigroupcreate.php:113
#: actions/apigroupismember.php:91 actions/apigroupjoin.php:100
#: actions/apigroupleave.php:100 actions/apigrouplist.php:73
-#: actions/apistatusesupdate.php:228 actions/apisubscriptions.php:87
+#: actions/apistatusesupdate.php:229 actions/apisubscriptions.php:87
#: actions/apitimelinefavorites.php:72 actions/apitimelinefriends.php:174
#: actions/apitimelinehome.php:80 actions/apitimelinementions.php:80
#: actions/apitimelineuser.php:82 actions/avatarbynickname.php:75
@@ -178,22 +177,20 @@ msgstr ""
#: actions/all.php:146
#, 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)."
+"You can try to [nudge %1$s](../%2$s) from their profile or [post something "
+"to them](%%%%action.newnotice%%%%?status_textarea=%3$s)."
msgstr ""
-"Du kannst [%1$s in seinem Profil einen Stups geben](../%2$s) oder [ihm etwas "
-"posten](%%%%action.newnotice%%%%?status_textarea=%s) um seine Aufmerksamkeit "
-"zu erregen."
+"Du kannst versuchen, [%1$s in seinem Profil einen Stups zu geben](../%2$s) "
+"oder [ihm etwas posten](%%%%action.newnotice%%%%?status_textarea=%s)."
#: actions/all.php:149 actions/replies.php:210 actions/showstream.php:211
#, php-format
msgid ""
"Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
-"post a notice to his or her attention."
+"post a notice to them."
msgstr ""
"Warum [registrierst Du nicht einen Account](%%%%action.register%%%%) und "
-"gibst %s dann einen Stups oder postest ihm etwas, um seine Aufmerksamkeit zu "
-"erregen?"
+"gibst %s dann einen Stups oder postest ihm etwas."
#. TRANS: H1 text
#: actions/all.php:182
@@ -225,7 +222,7 @@ msgstr "Aktualisierungen von %1$s und Freunden auf %2$s!"
#: actions/apistatusesshow.php:109 actions/apistatusnetconfig.php:141
#: actions/apistatusnetversion.php:93 actions/apisubscriptions.php:111
#: actions/apitimelinefavorites.php:174 actions/apitimelinefriends.php:271
-#: actions/apitimelinegroup.php:152 actions/apitimelinehome.php:175
+#: actions/apitimelinegroup.php:154 actions/apitimelinehome.php:175
#: actions/apitimelinementions.php:174 actions/apitimelinepublic.php:241
#: actions/apitimelineretweetedtome.php:121
#: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161
@@ -275,7 +272,7 @@ msgstr "Konnte Profil nicht speichern."
#: actions/apiaccountupdateprofilebackgroundimage.php:108
#: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80
-#: actions/apistatusesupdate.php:211 actions/avatarsettings.php:257
+#: actions/apistatusesupdate.php:212 actions/avatarsettings.php:257
#: actions/designadminpanel.php:123 actions/editapplication.php:118
#: actions/newapplication.php:101 actions/newnotice.php:94
#: lib/designsettings.php:283
@@ -376,8 +373,8 @@ msgid "Could not delete favorite."
msgstr "Konnte Favoriten nicht löschen."
#: actions/apifriendshipscreate.php:109
-msgid "Could not follow user: User not found."
-msgstr "Konnte Nutzer nicht folgen: Nutzer nicht gefunden"
+msgid "Could not follow user: profile not found."
+msgstr "Konnte Nutzer nicht folgen: Profil nicht gefunden"
#: actions/apifriendshipscreate.php:118
#, php-format
@@ -392,9 +389,9 @@ msgstr "Kann Benutzer nicht entfolgen: Benutzer nicht gefunden."
msgid "You cannot unfollow yourself."
msgstr "Du kannst dich nicht selbst entfolgen!"
-#: actions/apifriendshipsexists.php:94
-msgid "Two user ids or screen_names must be supplied."
-msgstr "Zwei IDs oder Benutzernamen müssen angegeben werden."
+#: actions/apifriendshipsexists.php:91
+msgid "Two valid IDs or screen_names must be supplied."
+msgstr "Zwei gültige IDs oder Benutzernamen müssen angegeben werden."
#: actions/apifriendshipsshow.php:134
msgid "Could not determine source user."
@@ -524,6 +521,10 @@ msgstr "%s Gruppen"
msgid "groups on %s"
msgstr "Gruppen von %s"
+#: actions/apimediaupload.php:99
+msgid "Upload failed."
+msgstr "Hochladen fehlgeschlagen."
+
#: actions/apioauthauthorize.php:101
msgid "No oauth_token parameter provided."
msgstr "Kein oauth_token Parameter angegeben."
@@ -667,25 +668,31 @@ msgstr "Status gelöscht."
msgid "No status with that ID found."
msgstr "Keine Nachricht mit dieser ID gefunden."
-#: actions/apistatusesupdate.php:241 actions/newnotice.php:155
+#: actions/apistatusesupdate.php:221
+msgid "Client must provide a 'status' parameter with a value."
+msgstr ""
+"Der Client muss einen „status“-Parameter mit einen Wert zur Verfügung "
+"stellen."
+
+#: actions/apistatusesupdate.php:242 actions/newnotice.php:155
#: lib/mailhandler.php:60
#, php-format
msgid "That's too long. Max notice size is %d chars."
msgstr ""
"Das war zu lang. Die Länge einer Nachricht ist auf %d Zeichen beschränkt."
-#: actions/apistatusesupdate.php:282 actions/apiusershow.php:96
+#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96
msgid "Not found."
msgstr "Nicht gefunden."
-#: actions/apistatusesupdate.php:305 actions/newnotice.php:178
+#: actions/apistatusesupdate.php:306 actions/newnotice.php:178
#, php-format
msgid "Max notice size is %d chars, including attachment URL."
msgstr ""
"Die maximale Größe von Nachrichten ist %d Zeichen, inklusive der URL der "
"Anhänge"
-#: actions/apisubscriptions.php:231 actions/apisubscriptions.php:261
+#: actions/apisubscriptions.php:232 actions/apisubscriptions.php:262
msgid "Unsupported format."
msgstr "Bildformat wird nicht unterstützt."
@@ -739,6 +746,10 @@ msgstr "Nachrichten, die mit %s getagt sind"
msgid "Updates tagged with %1$s on %2$s!"
msgstr "Aktualisierungen mit %1$s getagt auf %2$s!"
+#: actions/apitrends.php:87
+msgid "API method under construction."
+msgstr "API-Methode im Aufbau."
+
#: actions/attachment.php:73
msgid "No such attachment."
msgstr "Kein solcher Anhang."
@@ -792,7 +803,7 @@ msgid "Preview"
msgstr "Vorschau"
#: actions/avatarsettings.php:149 actions/showapplication.php:252
-#: lib/deleteuserform.php:66 lib/noticelist.php:648
+#: lib/deleteuserform.php:66 lib/noticelist.php:656
msgid "Delete"
msgstr "Löschen"
@@ -1073,7 +1084,7 @@ msgid "Do not delete this notice"
msgstr "Diese Nachricht nicht löschen"
#. TRANS: Submit button title for 'Yes' when deleting a notice.
-#: actions/deletenotice.php:158 lib/noticelist.php:648
+#: actions/deletenotice.php:158 lib/noticelist.php:656
msgid "Delete this notice"
msgstr "Nachricht löschen"
@@ -1143,13 +1154,12 @@ msgid "Theme for the site."
msgstr "Theme dieser Seite."
#: actions/designadminpanel.php:467
-#, fuzzy
msgid "Custom theme"
-msgstr "Seitentheme"
+msgstr "Angepasster Skin"
#: actions/designadminpanel.php:471
msgid "You can upload a custom StatusNet theme as a .ZIP archive."
-msgstr ""
+msgstr "Du kannst ein angepasstes StatusNet-Theme als .ZIP-Archiv hochladen."
#: actions/designadminpanel.php:486 lib/designsettings.php:101
msgid "Change background image"
@@ -1353,7 +1363,8 @@ msgstr "Ungültiges Stichwort: „%s“"
msgid "Could not update group."
msgstr "Konnte Gruppe nicht aktualisieren."
-#: actions/editgroup.php:264 classes/User_group.php:496
+#. TRANS: Server exception thrown when creating group aliases failed.
+#: actions/editgroup.php:264 classes/User_group.php:514
msgid "Could not create aliases."
msgstr "Konnte keinen Favoriten erstellen."
@@ -2519,10 +2530,10 @@ msgstr "Alle Aktualisierungen, die den Suchbegriff „%s“ enthalten"
#: actions/nudge.php:85
msgid ""
-"This user doesn't allow nudges or hasn't confirmed or set his email yet."
+"This user doesn't allow nudges or hasn't confirmed or set their email yet."
msgstr ""
"Dieser Benutzer erlaubt keine Stupser oder hat seine E-Mail-Adresse noch "
-"nicht bestätigt."
+"nicht bestätigt oder eingestellt."
#: actions/nudge.php:94
msgid "Nudge sent"
@@ -2600,8 +2611,8 @@ msgid "Only %s URLs over plain HTTP please."
msgstr "Bitte nur %s URLs über einfaches HTTP."
#. TRANS: Client error on an API request with an unsupported data format.
-#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1179
-#: lib/apiaction.php:1208 lib/apiaction.php:1325
+#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1204
+#: lib/apiaction.php:1232 lib/apiaction.php:1355
msgid "Not a supported data format."
msgstr "Kein unterstütztes Datenformat."
@@ -3519,7 +3530,7 @@ msgstr "Du kannst deine eigene Nachricht nicht wiederholen."
msgid "You already repeated that notice."
msgstr "Nachricht bereits wiederholt"
-#: actions/repeat.php:114 lib/noticelist.php:667
+#: actions/repeat.php:114 lib/noticelist.php:675
msgid "Repeated"
msgstr "Wiederholt"
@@ -3557,10 +3568,10 @@ msgstr "Feed der Nachrichten von %s (Atom)"
#, php-format
msgid ""
"This is the timeline showing replies to %1$s but %2$s hasn't received a "
-"notice to his attention yet."
+"notice to them yet."
msgstr ""
-"Dies ist die Zeitleiste für %1$s und Freunde aber bisher hat niemand etwas "
-"gepostet."
+"Dies ist die Zeitleiste für %1$s, aber %2$s hat noch keine Notiz dazu "
+"erhalten."
#: actions/replies.php:204
#, php-format
@@ -3574,12 +3585,11 @@ msgstr ""
#: actions/replies.php:206
#, php-format
msgid ""
-"You can try to [nudge %1$s](../%2$s) or [post something to his or her "
-"attention](%%%%action.newnotice%%%%?status_textarea=%3$s)."
+"You can try to [nudge %1$s](../%2$s) or [post something to them](%%%%action."
+"newnotice%%%%?status_textarea=%3$s)."
msgstr ""
-"Du kannst [%1$s in seinem Profil einen Stups geben](../%s) oder [ihm etwas "
-"posten](%%%%action.newnotice%%%%?status_textarea=%s) um seine Aufmerksamkeit "
-"zu erregen."
+"Du kannst versuchen [%1$s einen Stups zu geben](../%s) oder [ihm etwas "
+"posten](%%%%action.newnotice%%%%?status_textarea=%s)."
#: actions/repliesrss.php:72
#, php-format
@@ -3667,7 +3677,7 @@ msgstr "Organisation"
msgid "Description"
msgstr "Beschreibung"
-#: actions/showapplication.php:192 actions/showgroup.php:444
+#: actions/showapplication.php:192 actions/showgroup.php:436
#: lib/profileaction.php:187
msgid "Statistics"
msgstr "Statistiken"
@@ -3757,8 +3767,8 @@ msgstr ""
#: actions/showfavorites.php:208
#, php-format
msgid ""
-"%s hasn't added any notices to his favorites yet. Post something interesting "
-"they would add to their favorites :)"
+"%s hasn't added any favorite notices yet. Post something interesting they "
+"would add to their favorites :)"
msgstr ""
"%s hat noch keine Nachricht zu den Favoriten hinzugefügt. Sende du doch "
"einfach eine interessante Nachricht, damit sich daran etwas ändert :)"
@@ -3766,13 +3776,13 @@ msgstr ""
#: actions/showfavorites.php:212
#, php-format
msgid ""
-"%s hasn't added any notices to his favorites yet. Why not [register an "
-"account](%%%%action.register%%%%) and then post something interesting they "
-"would add to their favorites :)"
+"%s hasn't added any favorite notices yet. Why not [register an account](%%%%"
+"action.register%%%%) and then post something interesting they would add to "
+"their favorites :)"
msgstr ""
-"%s hat noch keine Nachrichten zu seinen Favoriten hinzugefügt. Warum meldest "
-"du dich nicht an ( [anmelden](%%%%action.register%%%%) ) und schreibst "
-"etwas, was %s hinzufügen kann!"
+"%s hat noch keine Nachrichten zu seinen Favoriten hinzugefügt. Warum "
+"[meldest du dich nicht an](%%%%action.register%%%%) und schreibst etwas, was "
+"%s hinzufügen kann!"
#: actions/showfavorites.php:243
msgid "This is a way to share what you like."
@@ -3830,7 +3840,7 @@ msgstr "Nachrichtenfeed der Gruppe %s (Atom)"
msgid "FOAF for %s group"
msgstr "Postausgang von %s"
-#: actions/showgroup.php:393 actions/showgroup.php:453 lib/groupnav.php:91
+#: actions/showgroup.php:393 actions/showgroup.php:445 lib/groupnav.php:91
msgid "Members"
msgstr "Mitglieder"
@@ -3844,11 +3854,11 @@ msgstr "(Kein)"
msgid "All members"
msgstr "Alle Mitglieder"
-#: actions/showgroup.php:447
+#: actions/showgroup.php:439
msgid "Created"
msgstr "Erstellt"
-#: actions/showgroup.php:463
+#: actions/showgroup.php:455
#, php-format
msgid ""
"**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3863,7 +3873,7 @@ msgstr ""
"und werde Teil der Gruppe und vielen anderen! ([Mehr Informationen](%%%%doc."
"help%%%%))"
-#: actions/showgroup.php:469
+#: actions/showgroup.php:461
#, php-format
msgid ""
"**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3876,7 +3886,7 @@ msgstr ""
"Freien Software [StatusNet](http://status.net/). Seine Mitglieder erstellen "
"kurze Nachrichten über Ihr Leben und Interessen. "
-#: actions/showgroup.php:497
+#: actions/showgroup.php:489
msgid "Admins"
msgstr "Administratoren"
@@ -3955,11 +3965,11 @@ msgstr ""
#: 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)."
+"You can try to nudge %1$s or [post something to them](%%%%action.newnotice%%%"
+"%?status_textarea=%2$s)."
msgstr ""
"Du kannst %1$s in seinem Profil einen Stups geben oder [ihm etwas posten](%%%"
-"%action.newnotice%%%%?status_textarea=%s) um seine Aufmerksamkeit zu erregen."
+"%action.newnotice%%%%?status_textarea=%s)."
#: actions/showstream.php:243
#, php-format
@@ -4347,7 +4357,8 @@ msgstr "Snapshot-Einstellungen speichern"
msgid "You are not subscribed to that profile."
msgstr "Du hast dieses Profil nicht abonniert."
-#: actions/subedit.php:83 classes/Subscription.php:132
+#. TRANS: Exception thrown when a subscription could not be stored on the server.
+#: actions/subedit.php:83 classes/Subscription.php:136
msgid "Could not save subscription."
msgstr "Konnte Abonnement nicht erstellen."
@@ -4526,10 +4537,6 @@ msgstr ""
msgid "No such tag."
msgstr "Stichwort nicht vorhanden."
-#: actions/twitapitrends.php:85
-msgid "API method under construction."
-msgstr "API-Methode im Aufbau."
-
#: actions/unblock.php:59
msgid "You haven't blocked that user."
msgstr "Du hast diesen Benutzer nicht blockiert."
@@ -4841,82 +4848,129 @@ msgstr "Version"
msgid "Author(s)"
msgstr "Autor(en)"
-#: classes/File.php:185
+#. TRANS: Server exception thrown when a URL cannot be processed.
+#: classes/File.php:143
+#, php-format
+msgid "Cannot process URL '%s'"
+msgstr "Die URL „%s“ konnte nicht verarbeitet werden"
+
+#. TRANS: Server exception thrown when... Robin thinks something is impossible!
+#: classes/File.php:175
+msgid "Robin thinks something is impossible."
+msgstr "Robin denkt, dass etwas unmöglich ist."
+
+#. TRANS: Message given if an upload is larger than the configured maximum.
+#. TRANS: %1$d is the byte limit for uploads, %2$d is the byte count for the uploaded file.
+#: classes/File.php:190
#, php-format
msgid ""
-"No file may be larger than %d bytes and the file you sent was %d bytes. Try "
-"to upload a smaller version."
+"No file may be larger than %1$d bytes and the file you sent was %2$d bytes. "
+"Try to upload a smaller version."
msgstr ""
"Keine Datei darf größer als %d Bytes sein und die Datei die du verschicken "
-"wolltest ist %d Bytes groß. Bitte eine kleinere Datei hoch laden."
+"wolltest war %d Bytes groß. Bitte eine kleinere Version hochladen."
-#: classes/File.php:195
+#. TRANS: Message given if an upload would exceed user quota.
+#. TRANS: %d (number) is the user quota in bytes.
+#: classes/File.php:202
#, php-format
msgid "A file this large would exceed your user quota of %d bytes."
msgstr "Eine Datei dieser Größe überschreitet deine User Quota von %d Byte."
-#: classes/File.php:202
+#. TRANS: Message given id an upload would exceed a user's monthly quota.
+#. TRANS: $d (number) is the monthly user quota in bytes.
+#: classes/File.php:211
#, php-format
msgid "A file this large would exceed your monthly quota of %d bytes."
msgstr ""
"Eine Datei dieser Größe würde deine monatliche Quota von %d Byte "
"überschreiten."
-#: classes/Group_member.php:41
+#. TRANS: Client exception thrown if a file upload does not have a valid name.
+#: classes/File.php:248 classes/File.php:263
+msgid "Invalid filename."
+msgstr "Ungültiger Dateiname."
+
+#. TRANS: Exception thrown when joining a group fails.
+#: classes/Group_member.php:42
msgid "Group join failed."
msgstr "Konnte Gruppe nicht beitreten"
-#: classes/Group_member.php:53
+#. TRANS: Exception thrown when trying to leave a group the user is not a member of.
+#: classes/Group_member.php:55
msgid "Not part of group."
msgstr "Nicht Mitglied der Gruppe"
-#: classes/Group_member.php:60
+#. TRANS: Exception thrown when trying to leave a group fails.
+#: classes/Group_member.php:63
msgid "Group leave failed."
msgstr "Konnte Gruppe nicht verlassen"
-#: classes/Local_group.php:41
+#. TRANS: Server exception thrown when updating a local group fails.
+#: classes/Local_group.php:42
msgid "Could not update local group."
msgstr "Konnte Gruppe nicht aktualisieren."
-#: classes/Login_token.php:76
+#. TRANS: Exception thrown when trying creating a login token failed.
+#. TRANS: %s is the user nickname for which token creation failed.
+#: classes/Login_token.php:78
#, php-format
msgid "Could not create login token for %s"
msgstr "Konnte keinen Login-Token für %s erstellen"
-#: classes/Message.php:45
+#. TRANS: Exception thrown when database name or Data Source Name could not be found.
+#: classes/Memcached_DataObject.php:533
+msgid "No database name or DSN found anywhere."
+msgstr "Nirgedwo einen Datenbanknamen oder DSN gefunden."
+
+#. TRANS: Client exception thrown when a user tries to send a direct message while being banned from sending them.
+#: classes/Message.php:46
msgid "You are banned from sending direct messages."
msgstr "Direktes senden von Nachrichten wurde blockiert"
-#: classes/Message.php:61
+#. TRANS: Message given when a message could not be stored on the server.
+#: classes/Message.php:63
msgid "Could not insert message."
msgstr "Konnte Nachricht nicht einfügen."
-#: classes/Message.php:71
+#. TRANS: Message given when a message could not be updated on the server.
+#: classes/Message.php:74
msgid "Could not update message with new URI."
msgstr "Konnte Nachricht nicht mit neuer URI versehen."
+#. TRANS: Server exception thrown when a user profile for a notice cannot be found.
+#. TRANS: %1$d is a profile ID (number), %2$d is a notice ID (number).
+#: classes/Notice.php:98
+#, php-format
+msgid "No such profile (%1$d) for notice (%2$d)."
+msgstr "Kein Profil (%1$d) für eine Notiz gefunden (%2$d)."
+
#. TRANS: Server exception. %s are the error details.
-#: classes/Notice.php:182
+#: classes/Notice.php:190
#, php-format
msgid "Database error inserting hashtag: %s"
msgstr "Datenbankfehler beim Einfügen des Hashtags: %s"
-#: classes/Notice.php:251
+#. TRANS: Client exception thrown if a notice contains too many characters.
+#: classes/Notice.php:260
msgid "Problem saving notice. Too long."
msgstr "Problem bei Speichern der Nachricht. Sie ist zu lang."
-#: classes/Notice.php:255
+#. TRANS: Client exception thrown when trying to save a notice for an unknown user.
+#: classes/Notice.php:265
msgid "Problem saving notice. Unknown user."
msgstr "Problem bei Speichern der Nachricht. Unbekannter Benutzer."
-#: classes/Notice.php:260
+#. TRANS: Client exception thrown when a user tries to post too many notices in a given time frame.
+#: classes/Notice.php:271
msgid ""
"Too many notices too fast; take a breather and post again in a few minutes."
msgstr ""
"Zu schnell zu viele Nachrichten; atme kurz durch und schicke sie erneut in "
"ein paar Minuten ab."
-#: classes/Notice.php:266
+#. TRANS: Client exception thrown when a user tries to post too many duplicate notices in a given time frame.
+#: classes/Notice.php:278
msgid ""
"Too many duplicate messages too quickly; take a breather and post again in a "
"few minutes."
@@ -4924,73 +4978,124 @@ msgstr ""
"Zu schnell zu viele Nachrichten; atme kurz durch und schicke sie erneut in "
"ein paar Minuten ab."
-#: classes/Notice.php:272
+#. TRANS: Client exception thrown when a user tries to post while being banned.
+#: classes/Notice.php:286
msgid "You are banned from posting notices on this site."
msgstr ""
"Du wurdest für das Schreiben von Nachrichten auf dieser Seite gesperrt."
-#: classes/Notice.php:338 classes/Notice.php:364
+#. TRANS: Server exception thrown when a notice cannot be saved.
+#. TRANS: Server exception thrown when a notice cannot be updated.
+#: classes/Notice.php:353 classes/Notice.php:380
msgid "Problem saving notice."
msgstr "Problem bei Speichern der Nachricht."
-#: classes/Notice.php:973
+#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups().
+#: classes/Notice.php:892
+msgid "Bad type provided to saveKnownGroups"
+msgstr ""
+"Der Methode saveKnownGroups wurde ein schlechter Wert zur Verfügung gestellt"
+
+#. TRANS: Server exception thrown when an update for a group inbox fails.
+#: classes/Notice.php:991
msgid "Problem saving group inbox."
msgstr "Problem bei Speichern der Nachricht."
#. TRANS: Message used to repeat a notice. RT is the abbreviation of 'retweet'.
#. TRANS: %1$s is the repeated user's name, %2$s is the repeated notice.
-#: classes/Notice.php:1564
+#: classes/Notice.php:1614
#, php-format
msgid "RT @%1$s %2$s"
msgstr "RT @%1$s %2$s"
-#: classes/Subscription.php:74 lib/oauthstore.php:465
+#. TRANS: Exception thrown when trying to revoke an existing role for a user that does not exist.
+#. TRANS: %1$s is the role name, %2$s is the user ID (number).
+#: classes/Profile.php:740
+#, php-format
+msgid "Cannot revoke role \"%1$s\" for user #%2$d; does not exist."
+msgstr ""
+"Die Rolle „%1$s“ kann nicht für Benutzer #%2$d widerrufen werden. Benutzer "
+"existiert nicht."
+
+#. TRANS: Exception thrown when trying to revoke a role for a user with a failing database query.
+#. TRANS: %1$s is the role name, %2$s is the user ID (number).
+#: classes/Profile.php:749
+#, php-format
+msgid "Cannot revoke role \"%1$s\" for user #%2$d; database error."
+msgstr ""
+"Die Rolle „%1$s“ kann nicht für Benutzer #%2$d widerrufen werden. "
+"Datenbankfehler."
+
+#. TRANS: Exception thrown when a right for a non-existing user profile is checked.
+#: classes/Remote_profile.php:54
+msgid "Missing profile."
+msgstr "Benutzer hat kein Profil."
+
+#. TRANS: Exception thrown when a tag cannot be saved.
+#: classes/Status_network.php:346
+msgid "Unable to save tag."
+msgstr "Konnte Seitenbenachrichtigung nicht speichern."
+
+#. TRANS: Exception thrown when trying to subscribe while being banned from subscribing.
+#: classes/Subscription.php:75 lib/oauthstore.php:465
msgid "You have been banned from subscribing."
msgstr "Dieser Benutzer erlaubt dir nicht ihn zu abonnieren."
-#: classes/Subscription.php:78
+#. TRANS: Exception thrown when trying to subscribe while already subscribed.
+#: classes/Subscription.php:80
msgid "Already subscribed!"
msgstr "Bereits abonniert!"
-#: classes/Subscription.php:82
+#. TRANS: Exception thrown when trying to subscribe to a user who has blocked the subscribing user.
+#: classes/Subscription.php:85
msgid "User has blocked you."
msgstr "Dieser Benutzer hat dich blockiert."
-#: classes/Subscription.php:167
+#. TRANS: Exception thrown when trying to unsibscribe without a subscription.
+#: classes/Subscription.php:171
#, fuzzy
msgid "Not subscribed!"
msgstr "Nicht abonniert!"
-#: classes/Subscription.php:173
-msgid "Couldn't delete self-subscription."
-msgstr "Konnte Abonnement nicht löschen."
+#. TRANS: Exception thrown when trying to unsubscribe a user from themselves.
+#: classes/Subscription.php:178
+msgid "Could not delete self-subscription."
+msgstr "Konnte Selbst-Abonnement nicht löschen."
-#: classes/Subscription.php:200
-msgid "Couldn't delete subscription OMB token."
-msgstr "Konnte OMB-Abonnement nicht löschen."
+#. TRANS: Exception thrown when the OMB token for a subscription could not deleted on the server.
+#: classes/Subscription.php:206
+msgid "Could not delete subscription OMB token."
+msgstr "Konnte OMB-Abonnement-Token nicht löschen."
-#: classes/Subscription.php:211
-msgid "Couldn't delete subscription."
+#. TRANS: Exception thrown when a subscription could not be deleted on the server.
+#: classes/Subscription.php:218
+msgid "Could not delete subscription."
msgstr "Konnte Abonnement nicht löschen."
-#: classes/User.php:363
+#. TRANS: Notice given on user registration.
+#. TRANS: %1$s is the sitename, $2$s is the registering user's nickname.
+#: classes/User.php:365
#, php-format
msgid "Welcome to %1$s, @%2$s!"
msgstr "Herzlich willkommen bei %1$s, @%2$s!"
-#: classes/User_group.php:480
+#. TRANS: Server exception thrown when creating a group failed.
+#: classes/User_group.php:496
msgid "Could not create group."
msgstr "Konnte Gruppe nicht erstellen."
-#: classes/User_group.php:489
+#. TRANS: Server exception thrown when updating a group URI failed.
+#: classes/User_group.php:506
msgid "Could not set group URI."
msgstr "Konnte die Gruppen URI nicht setzen."
-#: classes/User_group.php:510
+#. TRANS: Server exception thrown when setting group membership failed.
+#: classes/User_group.php:529
msgid "Could not set group membership."
msgstr "Konnte Gruppenmitgliedschaft nicht setzen."
-#: classes/User_group.php:524
+#. TRANS: Server exception thrown when saving local group information failed.
+#: classes/User_group.php:544
msgid "Could not save local group info."
msgstr "Konnte die lokale Gruppen Information nicht speichern."
@@ -6457,7 +6562,7 @@ msgstr ""
"schicken, um sie in eine Konversation zu verwickeln. Andere Leute können Dir "
"Nachrichten schicken, die nur Du sehen kannst."
-#: lib/mailbox.php:227 lib/noticelist.php:497
+#: lib/mailbox.php:227 lib/noticelist.php:505
msgid "from"
msgstr "von"
@@ -6518,24 +6623,24 @@ msgstr "Konnte die Datei nicht auf die Festplatte schreiben."
msgid "File upload stopped by extension."
msgstr "Upload der Datei wurde wegen der Dateiendung gestoppt."
-#: lib/mediafile.php:179 lib/mediafile.php:216
+#: lib/mediafile.php:179 lib/mediafile.php:217
msgid "File exceeds user's quota."
msgstr "Dateigröße liegt über dem Benutzerlimit"
-#: lib/mediafile.php:196 lib/mediafile.php:233
+#: lib/mediafile.php:197 lib/mediafile.php:234
msgid "File could not be moved to destination directory."
msgstr "Datei konnte nicht in das Zielverzeichnis verschoben werden."
-#: lib/mediafile.php:201 lib/mediafile.php:237
+#: lib/mediafile.php:202 lib/mediafile.php:238
msgid "Could not determine file's MIME type."
msgstr "Konnte den MIME-Typ nicht feststellen."
-#: lib/mediafile.php:270
+#: lib/mediafile.php:318
#, php-format
msgid " Try using another %s format."
msgstr "Versuche ein anderes %s Format."
-#: lib/mediafile.php:275
+#: lib/mediafile.php:323
#, php-format
msgid "%s is not a supported file type on this server."
msgstr "%s ist kein unterstütztes Dateiformat auf diesem Server."
@@ -6591,51 +6696,51 @@ msgstr ""
"Bitte versuche es später wieder."
#. TRANS: Used in coordinates as abbreviation of north
-#: lib/noticelist.php:430
+#: lib/noticelist.php:436
msgid "N"
msgstr "N"
#. TRANS: Used in coordinates as abbreviation of south
-#: lib/noticelist.php:432
+#: lib/noticelist.php:438
msgid "S"
msgstr "S"
#. TRANS: Used in coordinates as abbreviation of east
-#: lib/noticelist.php:434
+#: lib/noticelist.php:440
msgid "E"
msgstr "O"
#. TRANS: Used in coordinates as abbreviation of west
-#: lib/noticelist.php:436
+#: lib/noticelist.php:442
msgid "W"
msgstr "W"
-#: lib/noticelist.php:438
+#: lib/noticelist.php:444
#, php-format
msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
msgstr "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
-#: lib/noticelist.php:447
+#: lib/noticelist.php:453
msgid "at"
msgstr "in"
-#: lib/noticelist.php:559
+#: lib/noticelist.php:567
msgid "in context"
msgstr "im Zusammenhang"
-#: lib/noticelist.php:594
+#: lib/noticelist.php:602
msgid "Repeated by"
msgstr "Wiederholt von"
-#: lib/noticelist.php:621
+#: lib/noticelist.php:629
msgid "Reply to this notice"
msgstr "Auf diese Nachricht antworten"
-#: lib/noticelist.php:622
+#: lib/noticelist.php:630
msgid "Reply"
msgstr "Antworten"
-#: lib/noticelist.php:666
+#: lib/noticelist.php:674
msgid "Notice repeated"
msgstr "Nachricht wiederholt"
@@ -6890,48 +6995,47 @@ msgstr "Nichts"
#: lib/themeuploader.php:50
msgid "This server cannot handle theme uploads without ZIP support."
-msgstr ""
+msgstr "Dieser Server kann nicht mit Theme-Uploads ohne ZIP-Support umgehen."
#: lib/themeuploader.php:58 lib/themeuploader.php:61
-#, fuzzy
-msgid "Theme upload missing or failed."
-msgstr "Systemfehler beim hochladen der Datei."
+msgid "The theme file is missing or the upload failed."
+msgstr "Die Theme-Datei fehlt oder das Hochladen ist fehlgeschlagen."
#: lib/themeuploader.php:91 lib/themeuploader.php:102
#: lib/themeuploader.php:253 lib/themeuploader.php:257
#: lib/themeuploader.php:265 lib/themeuploader.php:272
-#, fuzzy
msgid "Failed saving theme."
-msgstr "Aktualisierung des Avatars fehlgeschlagen."
+msgstr "Speicherung des Themes fehlgeschlagen."
#: lib/themeuploader.php:139
msgid "Invalid theme: bad directory structure."
-msgstr ""
+msgstr "Ungültiger Theme: schlechte Ordner-Struktur."
#: lib/themeuploader.php:166
#, php-format
msgid "Uploaded theme is too large; must be less than %d bytes uncompressed."
-msgstr ""
+msgstr "Der hochgeladene Theme ist zu groß; er muss unter %d Bytes sein."
#: lib/themeuploader.php:178
msgid "Invalid theme archive: missing file css/display.css"
-msgstr ""
+msgstr "Ungültigges Theme-Archiv: fehlende Datei css/display.css"
#: lib/themeuploader.php:205
msgid ""
"Theme contains invalid file or folder name. Stick with ASCII letters, "
"digits, underscore, and minus sign."
msgstr ""
+"Der Theme enthält einen ungültigen Datei- oder Ordnernamen. Bleib bei ASCII-"
+"Buchstaben, Zahlen, Unterstrichen und Minuszeichen."
#: lib/themeuploader.php:216
#, php-format
msgid "Theme contains file of type '.%s', which is not allowed."
-msgstr ""
+msgstr "Das Theme enthält Dateien des Types „.%s“, die nicht erlaubt sind."
#: lib/themeuploader.php:234
-#, fuzzy
msgid "Error opening theme archive."
-msgstr "Fehler beim Aktualisieren des entfernten Profils."
+msgstr "Fehler beim Öffnen des Theme-Archives."
#: lib/topposterssection.php:74
msgid "Top posters"
diff --git a/locale/el/LC_MESSAGES/statusnet.po b/locale/el/LC_MESSAGES/statusnet.po
index 803c3b34b..704ae6c2a 100644
--- a/locale/el/LC_MESSAGES/statusnet.po
+++ b/locale/el/LC_MESSAGES/statusnet.po
@@ -10,12 +10,12 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-06-16 22:18+0000\n"
-"PO-Revision-Date: 2010-06-21 18:03:17+0000\n"
+"POT-Creation-Date: 2010-08-03 13:21+0000\n"
+"PO-Revision-Date: 2010-08-03 13:21:51+0000\n"
"Language-Team: Greek\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.17alpha (r68367); Translate extension (2010-06-12)\n"
+"X-Generator: MediaWiki 1.17alpha (r70381); Translate extension (2010-07-21)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: el\n"
"X-Message-Group: out-statusnet\n"
@@ -101,7 +101,7 @@ msgstr "Δεν υπάÏχει τέτοια σελίδα"
#: actions/apidirectmessagenew.php:74 actions/apigroupcreate.php:113
#: actions/apigroupismember.php:91 actions/apigroupjoin.php:100
#: actions/apigroupleave.php:100 actions/apigrouplist.php:73
-#: actions/apistatusesupdate.php:228 actions/apisubscriptions.php:87
+#: actions/apistatusesupdate.php:229 actions/apisubscriptions.php:87
#: actions/apitimelinefavorites.php:72 actions/apitimelinefriends.php:174
#: actions/apitimelinehome.php:80 actions/apitimelinementions.php:80
#: actions/apitimelineuser.php:82 actions/avatarbynickname.php:75
@@ -172,15 +172,15 @@ msgstr ""
#: actions/all.php:146
#, 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)."
+"You can try to [nudge %1$s](../%2$s) from their profile or [post something "
+"to them](%%%%action.newnotice%%%%?status_textarea=%3$s)."
msgstr ""
#: actions/all.php:149 actions/replies.php:210 actions/showstream.php:211
#, php-format
msgid ""
"Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
-"post a notice to his or her attention."
+"post a notice to them."
msgstr ""
#. TRANS: H1 text
@@ -213,7 +213,7 @@ msgstr ""
#: actions/apistatusesshow.php:109 actions/apistatusnetconfig.php:141
#: actions/apistatusnetversion.php:93 actions/apisubscriptions.php:111
#: actions/apitimelinefavorites.php:174 actions/apitimelinefriends.php:271
-#: actions/apitimelinegroup.php:152 actions/apitimelinehome.php:175
+#: actions/apitimelinegroup.php:154 actions/apitimelinehome.php:175
#: actions/apitimelinementions.php:174 actions/apitimelinepublic.php:241
#: actions/apitimelineretweetedtome.php:121
#: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161
@@ -264,7 +264,7 @@ msgstr "Απέτυχε η αποθήκευση του Ï€Ïοφίλ."
#: actions/apiaccountupdateprofilebackgroundimage.php:108
#: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80
-#: actions/apistatusesupdate.php:211 actions/avatarsettings.php:257
+#: actions/apistatusesupdate.php:212 actions/avatarsettings.php:257
#: actions/designadminpanel.php:123 actions/editapplication.php:118
#: actions/newapplication.php:101 actions/newnotice.php:94
#: lib/designsettings.php:283
@@ -361,7 +361,8 @@ msgid "Could not delete favorite."
msgstr ""
#: actions/apifriendshipscreate.php:109
-msgid "Could not follow user: User not found."
+#, fuzzy
+msgid "Could not follow user: profile not found."
msgstr "Δε μποÏÏŽ να ακολουθήσω το χÏήστη: ο χÏήστης δε βÏέθηκε."
#: actions/apifriendshipscreate.php:118
@@ -380,8 +381,8 @@ msgstr "Δε μποÏÏŽ να ακολουθήσω το χÏήστη: ο χÏήσ
msgid "You cannot unfollow yourself."
msgstr "Δεν μποÏείτε να εμποδίσετε τον εαυτό σας!"
-#: actions/apifriendshipsexists.php:94
-msgid "Two user ids or screen_names must be supplied."
+#: actions/apifriendshipsexists.php:91
+msgid "Two valid IDs or screen_names must be supplied."
msgstr ""
#: actions/apifriendshipsshow.php:134
@@ -512,6 +513,11 @@ msgstr ""
msgid "groups on %s"
msgstr "ομάδες του χÏήστη %s"
+#: actions/apimediaupload.php:99
+#, fuzzy
+msgid "Upload failed."
+msgstr "ΑδÏνατη η αποθήκευση του Ï€Ïοφίλ."
+
#: actions/apioauthauthorize.php:101
msgid "No oauth_token parameter provided."
msgstr ""
@@ -655,22 +661,26 @@ msgstr "Η κατάσταση διεγÏάφη."
msgid "No status with that ID found."
msgstr ""
-#: actions/apistatusesupdate.php:241 actions/newnotice.php:155
+#: actions/apistatusesupdate.php:221
+msgid "Client must provide a 'status' parameter with a value."
+msgstr ""
+
+#: actions/apistatusesupdate.php:242 actions/newnotice.php:155
#: lib/mailhandler.php:60
#, php-format
msgid "That's too long. Max notice size is %d chars."
msgstr ""
-#: actions/apistatusesupdate.php:282 actions/apiusershow.php:96
+#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96
msgid "Not found."
msgstr ""
-#: actions/apistatusesupdate.php:305 actions/newnotice.php:178
+#: actions/apistatusesupdate.php:306 actions/newnotice.php:178
#, php-format
msgid "Max notice size is %d chars, including attachment URL."
msgstr ""
-#: actions/apisubscriptions.php:231 actions/apisubscriptions.php:261
+#: actions/apisubscriptions.php:232 actions/apisubscriptions.php:262
msgid "Unsupported format."
msgstr ""
@@ -724,6 +734,10 @@ msgstr ""
msgid "Updates tagged with %1$s on %2$s!"
msgstr ""
+#: actions/apitrends.php:87
+msgid "API method under construction."
+msgstr "Η μέθοδος του ΑΡΙ είναι υπό κατασκευή."
+
#: actions/attachment.php:73
msgid "No such attachment."
msgstr ""
@@ -776,7 +790,7 @@ msgid "Preview"
msgstr ""
#: actions/avatarsettings.php:149 actions/showapplication.php:252
-#: lib/deleteuserform.php:66 lib/noticelist.php:648
+#: lib/deleteuserform.php:66 lib/noticelist.php:656
msgid "Delete"
msgstr "ΔιαγÏαφή"
@@ -1064,7 +1078,7 @@ msgid "Do not delete this notice"
msgstr "Αδυναμία διαγÏαφής Î±Ï…Ï„Î¿Ï Ï„Î¿Ï… μηνÏματος."
#. TRANS: Submit button title for 'Yes' when deleting a notice.
-#: actions/deletenotice.php:158 lib/noticelist.php:648
+#: actions/deletenotice.php:158 lib/noticelist.php:656
msgid "Delete this notice"
msgstr ""
@@ -1352,7 +1366,8 @@ msgstr ""
msgid "Could not update group."
msgstr "ΑδÏνατη η αποθήκευση του Ï€Ïοφίλ."
-#: actions/editgroup.php:264 classes/User_group.php:496
+#. TRANS: Server exception thrown when creating group aliases failed.
+#: actions/editgroup.php:264 classes/User_group.php:514
#, fuzzy
msgid "Could not create aliases."
msgstr "ΑδÏνατη η αποθήκευση του Ï€Ïοφίλ."
@@ -2471,7 +2486,7 @@ msgstr "Όλες οι ενημεÏώσεις που ταιÏιάζουν με Ï„
#: actions/nudge.php:85
msgid ""
-"This user doesn't allow nudges or hasn't confirmed or set his email yet."
+"This user doesn't allow nudges or hasn't confirmed or set their email yet."
msgstr ""
#: actions/nudge.php:94
@@ -2548,8 +2563,8 @@ msgid "Only %s URLs over plain HTTP please."
msgstr ""
#. TRANS: Client error on an API request with an unsupported data format.
-#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1179
-#: lib/apiaction.php:1208 lib/apiaction.php:1325
+#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1204
+#: lib/apiaction.php:1232 lib/apiaction.php:1355
msgid "Not a supported data format."
msgstr ""
@@ -3450,7 +3465,7 @@ msgstr ""
msgid "You already repeated that notice."
msgstr "Αδυναμία διαγÏαφής Î±Ï…Ï„Î¿Ï Ï„Î¿Ï… μηνÏματος."
-#: actions/repeat.php:114 lib/noticelist.php:667
+#: actions/repeat.php:114 lib/noticelist.php:675
#, fuzzy
msgid "Repeated"
msgstr "ΔημιουÏγία"
@@ -3487,11 +3502,13 @@ msgid "Replies feed for %s (Atom)"
msgstr "Ροή φίλων του/της %s"
#: actions/replies.php:199
-#, php-format
+#, fuzzy, php-format
msgid ""
"This is the timeline showing replies to %1$s but %2$s hasn't received a "
-"notice to his attention yet."
+"notice to them yet."
msgstr ""
+"Αυτό είναι το χÏονοδιάγÏαμμα για %s και φίλους, αλλά κανείς δεν έχει κάνει "
+"καμία αποστολή ακόμα."
#: actions/replies.php:204
#, php-format
@@ -3503,8 +3520,8 @@ msgstr ""
#: actions/replies.php:206
#, php-format
msgid ""
-"You can try to [nudge %1$s](../%2$s) or [post something to his or her "
-"attention](%%%%action.newnotice%%%%?status_textarea=%3$s)."
+"You can try to [nudge %1$s](../%2$s) or [post something to them](%%%%action."
+"newnotice%%%%?status_textarea=%3$s)."
msgstr ""
#: actions/repliesrss.php:72
@@ -3598,7 +3615,7 @@ msgstr "ΠÏοσκλήσεις"
msgid "Description"
msgstr "ΠεÏιγÏαφή"
-#: actions/showapplication.php:192 actions/showgroup.php:444
+#: actions/showapplication.php:192 actions/showgroup.php:436
#: lib/profileaction.php:187
msgid "Statistics"
msgstr ""
@@ -3684,16 +3701,16 @@ msgstr ""
#: actions/showfavorites.php:208
#, php-format
msgid ""
-"%s hasn't added any notices to his favorites yet. Post something interesting "
-"they would add to their favorites :)"
+"%s hasn't added any favorite notices yet. Post something interesting they "
+"would add to their favorites :)"
msgstr ""
#: actions/showfavorites.php:212
#, php-format
msgid ""
-"%s hasn't added any notices to his favorites yet. Why not [register an "
-"account](%%%%action.register%%%%) and then post something interesting they "
-"would add to their favorites :)"
+"%s hasn't added any favorite notices yet. Why not [register an account](%%%%"
+"action.register%%%%) and then post something interesting they would add to "
+"their favorites :)"
msgstr ""
#: actions/showfavorites.php:243
@@ -3753,7 +3770,7 @@ msgstr ""
msgid "FOAF for %s group"
msgstr "ΑδÏνατη η αποθήκευση του Ï€Ïοφίλ."
-#: actions/showgroup.php:393 actions/showgroup.php:453 lib/groupnav.php:91
+#: actions/showgroup.php:393 actions/showgroup.php:445 lib/groupnav.php:91
msgid "Members"
msgstr "Μέλη"
@@ -3767,11 +3784,11 @@ msgstr ""
msgid "All members"
msgstr ""
-#: actions/showgroup.php:447
+#: actions/showgroup.php:439
msgid "Created"
msgstr "ΔημιουÏγημένος"
-#: actions/showgroup.php:463
+#: actions/showgroup.php:455
#, php-format
msgid ""
"**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3781,7 +3798,7 @@ msgid ""
"of this group and many more! ([Read more](%%%%doc.help%%%%))"
msgstr ""
-#: actions/showgroup.php:469
+#: actions/showgroup.php:461
#, php-format
msgid ""
"**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3790,7 +3807,7 @@ msgid ""
"their life and interests. "
msgstr ""
-#: actions/showgroup.php:497
+#: actions/showgroup.php:489
msgid "Admins"
msgstr "ΔιαχειÏιστές"
@@ -3866,8 +3883,8 @@ msgstr ""
#: 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)."
+"You can try to nudge %1$s or [post something to them](%%%%action.newnotice%%%"
+"%?status_textarea=%2$s)."
msgstr ""
#: actions/showstream.php:243
@@ -4252,7 +4269,8 @@ msgstr "Ρυθμίσεις OpenID"
msgid "You are not subscribed to that profile."
msgstr ""
-#: actions/subedit.php:83 classes/Subscription.php:132
+#. TRANS: Exception thrown when a subscription could not be stored on the server.
+#: actions/subedit.php:83 classes/Subscription.php:136
#, fuzzy
msgid "Could not save subscription."
msgstr "ΑδÏνατη η αποθήκευση των νέων πληÏοφοÏιών του Ï€Ïοφίλ"
@@ -4419,10 +4437,6 @@ msgstr ""
msgid "No such tag."
msgstr ""
-#: actions/twitapitrends.php:85
-msgid "API method under construction."
-msgstr "Η μέθοδος του ΑΡΙ είναι υπό κατασκευή."
-
#: actions/unblock.php:59
#, fuzzy
msgid "You haven't blocked that user."
@@ -4715,155 +4729,252 @@ msgstr "ΠÏοσωπικά"
msgid "Author(s)"
msgstr ""
-#: classes/File.php:185
+#. TRANS: Server exception thrown when a URL cannot be processed.
+#: classes/File.php:143
+#, php-format
+msgid "Cannot process URL '%s'"
+msgstr ""
+
+#. TRANS: Server exception thrown when... Robin thinks something is impossible!
+#: classes/File.php:175
+msgid "Robin thinks something is impossible."
+msgstr ""
+
+#. TRANS: Message given if an upload is larger than the configured maximum.
+#. TRANS: %1$d is the byte limit for uploads, %2$d is the byte count for the uploaded file.
+#: classes/File.php:190
#, php-format
msgid ""
-"No file may be larger than %d bytes and the file you sent was %d bytes. Try "
-"to upload a smaller version."
+"No file may be larger than %1$d bytes and the file you sent was %2$d bytes. "
+"Try to upload a smaller version."
msgstr ""
-#: classes/File.php:195
+#. TRANS: Message given if an upload would exceed user quota.
+#. TRANS: %d (number) is the user quota in bytes.
+#: classes/File.php:202
#, php-format
msgid "A file this large would exceed your user quota of %d bytes."
msgstr ""
-#: classes/File.php:202
+#. TRANS: Message given id an upload would exceed a user's monthly quota.
+#. TRANS: $d (number) is the monthly user quota in bytes.
+#: classes/File.php:211
#, php-format
msgid "A file this large would exceed your monthly quota of %d bytes."
msgstr ""
-#: classes/Group_member.php:41
+#. TRANS: Client exception thrown if a file upload does not have a valid name.
+#: classes/File.php:248 classes/File.php:263
+#, fuzzy
+msgid "Invalid filename."
+msgstr "Μήνυμα"
+
+#. TRANS: Exception thrown when joining a group fails.
+#: classes/Group_member.php:42
#, fuzzy
msgid "Group join failed."
msgstr "ΑδÏνατη η αποθήκευση του Ï€Ïοφίλ."
-#: classes/Group_member.php:53
+#. TRANS: Exception thrown when trying to leave a group the user is not a member of.
+#: classes/Group_member.php:55
#, fuzzy
msgid "Not part of group."
msgstr "ΑδÏνατη η αποθήκευση του Ï€Ïοφίλ."
-#: classes/Group_member.php:60
+#. TRANS: Exception thrown when trying to leave a group fails.
+#: classes/Group_member.php:63
#, fuzzy
msgid "Group leave failed."
msgstr "ΑδÏνατη η αποθήκευση του Ï€Ïοφίλ."
-#: classes/Local_group.php:41
+#. TRANS: Server exception thrown when updating a local group fails.
+#: classes/Local_group.php:42
#, fuzzy
msgid "Could not update local group."
msgstr "ΑδÏνατη η αποθήκευση του Ï€Ïοφίλ."
-#: classes/Login_token.php:76
+#. TRANS: Exception thrown when trying creating a login token failed.
+#. TRANS: %s is the user nickname for which token creation failed.
+#: classes/Login_token.php:78
#, fuzzy, php-format
msgid "Could not create login token for %s"
msgstr "ΑδÏνατη η αποθήκευση του Ï€Ïοφίλ."
-#: classes/Message.php:45
+#. TRANS: Exception thrown when database name or Data Source Name could not be found.
+#: classes/Memcached_DataObject.php:533
+msgid "No database name or DSN found anywhere."
+msgstr ""
+
+#. TRANS: Client exception thrown when a user tries to send a direct message while being banned from sending them.
+#: classes/Message.php:46
msgid "You are banned from sending direct messages."
msgstr ""
-#: classes/Message.php:61
+#. TRANS: Message given when a message could not be stored on the server.
+#: classes/Message.php:63
msgid "Could not insert message."
msgstr ""
-#: classes/Message.php:71
+#. TRANS: Message given when a message could not be updated on the server.
+#: classes/Message.php:74
msgid "Could not update message with new URI."
msgstr ""
+#. TRANS: Server exception thrown when a user profile for a notice cannot be found.
+#. TRANS: %1$d is a profile ID (number), %2$d is a notice ID (number).
+#: classes/Notice.php:98
+#, php-format
+msgid "No such profile (%1$d) for notice (%2$d)."
+msgstr ""
+
#. TRANS: Server exception. %s are the error details.
-#: classes/Notice.php:182
+#: classes/Notice.php:190
#, fuzzy, php-format
msgid "Database error inserting hashtag: %s"
msgstr "Σφάλμα στη βάση δεδομένων κατά την εισαγωγή hashtag: %s"
-#: classes/Notice.php:251
+#. TRANS: Client exception thrown if a notice contains too many characters.
+#: classes/Notice.php:260
msgid "Problem saving notice. Too long."
msgstr ""
-#: classes/Notice.php:255
+#. TRANS: Client exception thrown when trying to save a notice for an unknown user.
+#: classes/Notice.php:265
msgid "Problem saving notice. Unknown user."
msgstr ""
-#: classes/Notice.php:260
+#. TRANS: Client exception thrown when a user tries to post too many notices in a given time frame.
+#: classes/Notice.php:271
msgid ""
"Too many notices too fast; take a breather and post again in a few minutes."
msgstr ""
-#: classes/Notice.php:266
+#. TRANS: Client exception thrown when a user tries to post too many duplicate notices in a given time frame.
+#: classes/Notice.php:278
msgid ""
"Too many duplicate messages too quickly; take a breather and post again in a "
"few minutes."
msgstr ""
-#: classes/Notice.php:272
+#. TRANS: Client exception thrown when a user tries to post while being banned.
+#: classes/Notice.php:286
msgid "You are banned from posting notices on this site."
msgstr ""
-#: classes/Notice.php:338 classes/Notice.php:364
+#. TRANS: Server exception thrown when a notice cannot be saved.
+#. TRANS: Server exception thrown when a notice cannot be updated.
+#: classes/Notice.php:353 classes/Notice.php:380
msgid "Problem saving notice."
msgstr ""
-#: classes/Notice.php:973
+#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups().
+#: classes/Notice.php:892
+msgid "Bad type provided to saveKnownGroups"
+msgstr ""
+
+#. TRANS: Server exception thrown when an update for a group inbox fails.
+#: classes/Notice.php:991
msgid "Problem saving group inbox."
msgstr ""
#. TRANS: Message used to repeat a notice. RT is the abbreviation of 'retweet'.
#. TRANS: %1$s is the repeated user's name, %2$s is the repeated notice.
-#: classes/Notice.php:1564
+#: classes/Notice.php:1614
#, php-format
msgid "RT @%1$s %2$s"
msgstr ""
-#: classes/Subscription.php:74 lib/oauthstore.php:465
+#. TRANS: Exception thrown when trying to revoke an existing role for a user that does not exist.
+#. TRANS: %1$s is the role name, %2$s is the user ID (number).
+#: classes/Profile.php:740
+#, php-format
+msgid "Cannot revoke role \"%1$s\" for user #%2$d; does not exist."
+msgstr ""
+
+#. TRANS: Exception thrown when trying to revoke a role for a user with a failing database query.
+#. TRANS: %1$s is the role name, %2$s is the user ID (number).
+#: classes/Profile.php:749
+#, php-format
+msgid "Cannot revoke role \"%1$s\" for user #%2$d; database error."
+msgstr ""
+
+#. TRANS: Exception thrown when a right for a non-existing user profile is checked.
+#: classes/Remote_profile.php:54
+#, fuzzy
+msgid "Missing profile."
+msgstr "ΠÏοφίλ χÏήστη"
+
+#. TRANS: Exception thrown when a tag cannot be saved.
+#: classes/Status_network.php:346
+#, fuzzy
+msgid "Unable to save tag."
+msgstr "ΑδÏνατη η αποθήκευση του Ï€Ïοφίλ."
+
+#. TRANS: Exception thrown when trying to subscribe while being banned from subscribing.
+#: classes/Subscription.php:75 lib/oauthstore.php:465
msgid "You have been banned from subscribing."
msgstr ""
-#: classes/Subscription.php:78
+#. TRANS: Exception thrown when trying to subscribe while already subscribed.
+#: classes/Subscription.php:80
msgid "Already subscribed!"
msgstr ""
-#: classes/Subscription.php:82
+#. TRANS: Exception thrown when trying to subscribe to a user who has blocked the subscribing user.
+#: classes/Subscription.php:85
msgid "User has blocked you."
msgstr ""
-#: classes/Subscription.php:167
+#. TRANS: Exception thrown when trying to unsibscribe without a subscription.
+#: classes/Subscription.php:171
#, fuzzy
msgid "Not subscribed!"
msgstr "Απέτυχε η συνδÏομή."
-#: classes/Subscription.php:173
+#. TRANS: Exception thrown when trying to unsubscribe a user from themselves.
+#: classes/Subscription.php:178
#, fuzzy
-msgid "Couldn't delete self-subscription."
+msgid "Could not delete self-subscription."
msgstr "Απέτυχε η διαγÏαφή συνδÏομής."
-#: classes/Subscription.php:200
+#. TRANS: Exception thrown when the OMB token for a subscription could not deleted on the server.
+#: classes/Subscription.php:206
#, fuzzy
-msgid "Couldn't delete subscription OMB token."
+msgid "Could not delete subscription OMB token."
msgstr "Απέτυχε η διαγÏαφή συνδÏομής."
-#: classes/Subscription.php:211
-msgid "Couldn't delete subscription."
+#. TRANS: Exception thrown when a subscription could not be deleted on the server.
+#: classes/Subscription.php:218
+#, fuzzy
+msgid "Could not delete subscription."
msgstr "Απέτυχε η διαγÏαφή συνδÏομής."
-#: classes/User.php:363
+#. TRANS: Notice given on user registration.
+#. TRANS: %1$s is the sitename, $2$s is the registering user's nickname.
+#: classes/User.php:365
#, php-format
msgid "Welcome to %1$s, @%2$s!"
msgstr ""
-#: classes/User_group.php:480
+#. TRANS: Server exception thrown when creating a group failed.
+#: classes/User_group.php:496
msgid "Could not create group."
msgstr "Δεν ήταν δυνατή η δημιουÏγία ομάδας."
-#: classes/User_group.php:489
+#. TRANS: Server exception thrown when updating a group URI failed.
+#: classes/User_group.php:506
#, fuzzy
msgid "Could not set group URI."
msgstr "ΑδÏνατη η αποθήκευση των νέων πληÏοφοÏιών του Ï€Ïοφίλ"
-#: classes/User_group.php:510
+#. TRANS: Server exception thrown when setting group membership failed.
+#: classes/User_group.php:529
#, fuzzy
msgid "Could not set group membership."
msgstr "ΑδÏνατη η αποθήκευση των νέων πληÏοφοÏιών του Ï€Ïοφίλ"
-#: classes/User_group.php:524
+#. TRANS: Server exception thrown when saving local group information failed.
+#: classes/User_group.php:544
#, fuzzy
msgid "Could not save local group info."
msgstr "ΑδÏνατη η αποθήκευση των νέων πληÏοφοÏιών του Ï€Ïοφίλ"
@@ -6207,7 +6318,7 @@ msgid ""
"users in conversation. People can send you messages for your eyes only."
msgstr ""
-#: lib/mailbox.php:227 lib/noticelist.php:497
+#: lib/mailbox.php:227 lib/noticelist.php:505
msgid "from"
msgstr "από"
@@ -6262,25 +6373,25 @@ msgstr ""
msgid "File upload stopped by extension."
msgstr ""
-#: lib/mediafile.php:179 lib/mediafile.php:216
+#: lib/mediafile.php:179 lib/mediafile.php:217
msgid "File exceeds user's quota."
msgstr ""
-#: lib/mediafile.php:196 lib/mediafile.php:233
+#: lib/mediafile.php:197 lib/mediafile.php:234
msgid "File could not be moved to destination directory."
msgstr ""
-#: lib/mediafile.php:201 lib/mediafile.php:237
+#: lib/mediafile.php:202 lib/mediafile.php:238
#, fuzzy
msgid "Could not determine file's MIME type."
msgstr "Απέτυχε η ενημέÏωση του χÏήστη."
-#: lib/mediafile.php:270
+#: lib/mediafile.php:318
#, php-format
msgid " Try using another %s format."
msgstr ""
-#: lib/mediafile.php:275
+#: lib/mediafile.php:323
#, php-format
msgid "%s is not a supported file type on this server."
msgstr ""
@@ -6336,51 +6447,51 @@ msgid ""
msgstr ""
#. TRANS: Used in coordinates as abbreviation of north
-#: lib/noticelist.php:430
+#: lib/noticelist.php:436
msgid "N"
msgstr ""
#. TRANS: Used in coordinates as abbreviation of south
-#: lib/noticelist.php:432
+#: lib/noticelist.php:438
msgid "S"
msgstr ""
#. TRANS: Used in coordinates as abbreviation of east
-#: lib/noticelist.php:434
+#: lib/noticelist.php:440
msgid "E"
msgstr ""
#. TRANS: Used in coordinates as abbreviation of west
-#: lib/noticelist.php:436
+#: lib/noticelist.php:442
msgid "W"
msgstr ""
-#: lib/noticelist.php:438
+#: lib/noticelist.php:444
#, php-format
msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
msgstr ""
-#: lib/noticelist.php:447
+#: lib/noticelist.php:453
msgid "at"
msgstr ""
-#: lib/noticelist.php:559
+#: lib/noticelist.php:567
msgid "in context"
msgstr ""
-#: lib/noticelist.php:594
+#: lib/noticelist.php:602
msgid "Repeated by"
msgstr "Επαναλαμβάνεται από"
-#: lib/noticelist.php:621
+#: lib/noticelist.php:629
msgid "Reply to this notice"
msgstr ""
-#: lib/noticelist.php:622
+#: lib/noticelist.php:630
msgid "Reply"
msgstr ""
-#: lib/noticelist.php:666
+#: lib/noticelist.php:674
#, fuzzy
msgid "Notice repeated"
msgstr "Ρυθμίσεις OpenID"
@@ -6644,7 +6755,7 @@ msgid "This server cannot handle theme uploads without ZIP support."
msgstr ""
#: lib/themeuploader.php:58 lib/themeuploader.php:61
-msgid "Theme upload missing or failed."
+msgid "The theme file is missing or the upload failed."
msgstr ""
#: lib/themeuploader.php:91 lib/themeuploader.php:102
diff --git a/locale/en_GB/LC_MESSAGES/statusnet.po b/locale/en_GB/LC_MESSAGES/statusnet.po
index 96dc69be6..d4d793a36 100644
--- a/locale/en_GB/LC_MESSAGES/statusnet.po
+++ b/locale/en_GB/LC_MESSAGES/statusnet.po
@@ -11,12 +11,12 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-06-16 22:18+0000\n"
-"PO-Revision-Date: 2010-06-21 18:03:21+0000\n"
+"POT-Creation-Date: 2010-08-03 13:21+0000\n"
+"PO-Revision-Date: 2010-08-03 13:21:52+0000\n"
"Language-Team: British English\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.17alpha (r68367); Translate extension (2010-06-12)\n"
+"X-Generator: MediaWiki 1.17alpha (r70381); Translate extension (2010-07-21)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: en-gb\n"
"X-Message-Group: out-statusnet\n"
@@ -100,7 +100,7 @@ msgstr "No such page."
#: actions/apidirectmessagenew.php:74 actions/apigroupcreate.php:113
#: actions/apigroupismember.php:91 actions/apigroupjoin.php:100
#: actions/apigroupleave.php:100 actions/apigrouplist.php:73
-#: actions/apistatusesupdate.php:228 actions/apisubscriptions.php:87
+#: actions/apistatusesupdate.php:229 actions/apisubscriptions.php:87
#: actions/apitimelinefavorites.php:72 actions/apitimelinefriends.php:174
#: actions/apitimelinehome.php:80 actions/apitimelinementions.php:80
#: actions/apitimelineuser.php:82 actions/avatarbynickname.php:75
@@ -168,19 +168,19 @@ msgstr ""
#. TRANS: %1$s is user nickname, %2$s is user nickname, %2$s is user nickname prefixed with "@"
#: actions/all.php:146
-#, php-format
+#, fuzzy, 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)."
+"You can try to [nudge %1$s](../%2$s) from their profile or [post something "
+"to them](%%%%action.newnotice%%%%?status_textarea=%3$s)."
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:149 actions/replies.php:210 actions/showstream.php:211
-#, php-format
+#, fuzzy, php-format
msgid ""
"Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
-"post a notice to his or her attention."
+"post a notice to them."
msgstr ""
"Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
"post a notice to his or her attention."
@@ -215,7 +215,7 @@ msgstr "Updates from %1$s and friends on %2$s!"
#: actions/apistatusesshow.php:109 actions/apistatusnetconfig.php:141
#: actions/apistatusnetversion.php:93 actions/apisubscriptions.php:111
#: actions/apitimelinefavorites.php:174 actions/apitimelinefriends.php:271
-#: actions/apitimelinegroup.php:152 actions/apitimelinehome.php:175
+#: actions/apitimelinegroup.php:154 actions/apitimelinehome.php:175
#: actions/apitimelinementions.php:174 actions/apitimelinepublic.php:241
#: actions/apitimelineretweetedtome.php:121
#: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161
@@ -267,7 +267,7 @@ msgstr "Couldn't save profile."
#: actions/apiaccountupdateprofilebackgroundimage.php:108
#: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80
-#: actions/apistatusesupdate.php:211 actions/avatarsettings.php:257
+#: actions/apistatusesupdate.php:212 actions/avatarsettings.php:257
#: actions/designadminpanel.php:123 actions/editapplication.php:118
#: actions/newapplication.php:101 actions/newnotice.php:94
#: lib/designsettings.php:283
@@ -365,7 +365,8 @@ msgid "Could not delete favorite."
msgstr "Could not delete favourite."
#: actions/apifriendshipscreate.php:109
-msgid "Could not follow user: User not found."
+#, fuzzy
+msgid "Could not follow user: profile not found."
msgstr "Could not follow user: User not found."
#: actions/apifriendshipscreate.php:118
@@ -381,8 +382,9 @@ msgstr "Could not unfollow user: User not found."
msgid "You cannot unfollow yourself."
msgstr "You cannot unfollow yourself."
-#: actions/apifriendshipsexists.php:94
-msgid "Two user ids or screen_names must be supplied."
+#: actions/apifriendshipsexists.php:91
+#, fuzzy
+msgid "Two valid IDs or screen_names must be supplied."
msgstr "Two user ids or screen_names must be supplied."
#: actions/apifriendshipsshow.php:134
@@ -510,6 +512,11 @@ msgstr "%s groups"
msgid "groups on %s"
msgstr "groups on %s"
+#: actions/apimediaupload.php:99
+#, fuzzy
+msgid "Upload failed."
+msgstr "Upload file"
+
#: actions/apioauthauthorize.php:101
msgid "No oauth_token parameter provided."
msgstr "No oauth_token parameter provided."
@@ -653,22 +660,26 @@ msgstr "Status deleted."
msgid "No status with that ID found."
msgstr "No status with that ID found."
-#: actions/apistatusesupdate.php:241 actions/newnotice.php:155
+#: actions/apistatusesupdate.php:221
+msgid "Client must provide a 'status' parameter with a value."
+msgstr ""
+
+#: actions/apistatusesupdate.php:242 actions/newnotice.php:155
#: lib/mailhandler.php:60
#, php-format
msgid "That's too long. Max notice size is %d chars."
msgstr "That's too long. Max notice size is %d chars."
-#: actions/apistatusesupdate.php:282 actions/apiusershow.php:96
+#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96
msgid "Not found."
msgstr "Not found."
-#: actions/apistatusesupdate.php:305 actions/newnotice.php:178
+#: actions/apistatusesupdate.php:306 actions/newnotice.php:178
#, php-format
msgid "Max notice size is %d chars, including attachment URL."
msgstr "Max notice size is %d chars, including attachment URL."
-#: actions/apisubscriptions.php:231 actions/apisubscriptions.php:261
+#: actions/apisubscriptions.php:232 actions/apisubscriptions.php:262
msgid "Unsupported format."
msgstr "Unsupported format."
@@ -722,6 +733,10 @@ msgstr "Notices tagged with %s"
msgid "Updates tagged with %1$s on %2$s!"
msgstr "Updates tagged with %1$s on %2$s!"
+#: actions/apitrends.php:87
+msgid "API method under construction."
+msgstr "API method under construction."
+
#: actions/attachment.php:73
msgid "No such attachment."
msgstr "No such attachment."
@@ -774,7 +789,7 @@ msgid "Preview"
msgstr "Preview"
#: actions/avatarsettings.php:149 actions/showapplication.php:252
-#: lib/deleteuserform.php:66 lib/noticelist.php:648
+#: lib/deleteuserform.php:66 lib/noticelist.php:656
msgid "Delete"
msgstr "Delete"
@@ -1055,7 +1070,7 @@ msgid "Do not delete this notice"
msgstr "Do not delete this notice"
#. TRANS: Submit button title for 'Yes' when deleting a notice.
-#: actions/deletenotice.php:158 lib/noticelist.php:648
+#: actions/deletenotice.php:158 lib/noticelist.php:656
msgid "Delete this notice"
msgstr "Delete this notice"
@@ -1334,7 +1349,8 @@ msgstr "Invalid alias: \"%s\""
msgid "Could not update group."
msgstr "Could not update group."
-#: actions/editgroup.php:264 classes/User_group.php:496
+#. TRANS: Server exception thrown when creating group aliases failed.
+#: actions/editgroup.php:264 classes/User_group.php:514
msgid "Could not create aliases."
msgstr "Could not create aliases"
@@ -2477,8 +2493,9 @@ msgid "Updates matching search term \"%1$s\" on %2$s!"
msgstr "Updates matching search term \"%1$s\" on %2$s!"
#: actions/nudge.php:85
+#, fuzzy
msgid ""
-"This user doesn't allow nudges or hasn't confirmed or set his email yet."
+"This user doesn't allow nudges or hasn't confirmed or set their email yet."
msgstr ""
"This user doesn't allow nudges or hasn't confirmed or set his e-mail yet."
@@ -2554,8 +2571,8 @@ msgid "Only %s URLs over plain HTTP please."
msgstr ""
#. TRANS: Client error on an API request with an unsupported data format.
-#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1179
-#: lib/apiaction.php:1208 lib/apiaction.php:1325
+#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1204
+#: lib/apiaction.php:1232 lib/apiaction.php:1355
msgid "Not a supported data format."
msgstr "Not a supported data format."
@@ -3446,7 +3463,7 @@ msgstr "You can't repeat your own notice."
msgid "You already repeated that notice."
msgstr "You already repeated that notice."
-#: actions/repeat.php:114 lib/noticelist.php:667
+#: actions/repeat.php:114 lib/noticelist.php:675
msgid "Repeated"
msgstr "Repeated"
@@ -3481,10 +3498,10 @@ msgid "Replies feed for %s (Atom)"
msgstr "Notice feed for %s"
#: actions/replies.php:199
-#, php-format
+#, fuzzy, php-format
msgid ""
"This is the timeline showing replies to %1$s but %2$s hasn't received a "
-"notice to his attention yet."
+"notice to them yet."
msgstr ""
"This is the timeline showing replies to %1$s but %2$s hasn't received a "
"notice to his attention yet."
@@ -3497,10 +3514,10 @@ msgid ""
msgstr ""
#: actions/replies.php:206
-#, php-format
+#, fuzzy, php-format
msgid ""
-"You can try to [nudge %1$s](../%2$s) or [post something to his or her "
-"attention](%%%%action.newnotice%%%%?status_textarea=%3$s)."
+"You can try to [nudge %1$s](../%2$s) or [post something to them](%%%%action."
+"newnotice%%%%?status_textarea=%3$s)."
msgstr ""
"You can try to [nudge %1$s](../%2$s) or [post something to his or her "
"attention](%%%%action.newnotice%%%%?status_textarea=%3$s)."
@@ -3591,7 +3608,7 @@ msgstr "Organization"
msgid "Description"
msgstr "Description"
-#: actions/showapplication.php:192 actions/showgroup.php:444
+#: actions/showapplication.php:192 actions/showgroup.php:436
#: lib/profileaction.php:187
msgid "Statistics"
msgstr "Statistics"
@@ -3676,20 +3693,20 @@ msgstr ""
"notices you like to bookmark them for later or shed a spotlight on them."
#: actions/showfavorites.php:208
-#, php-format
+#, fuzzy, php-format
msgid ""
-"%s hasn't added any notices to his favorites yet. Post something interesting "
-"they would add to their favorites :)"
+"%s hasn't added any favorite notices 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:212
-#, php-format
+#, fuzzy, php-format
msgid ""
-"%s hasn't added any notices to his favorites yet. Why not [register an "
-"account](%%%%action.register%%%%) and then post something interesting they "
-"would add to their favorites :)"
+"%s hasn't added any favorite notices yet. Why not [register an 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 "
@@ -3751,7 +3768,7 @@ msgstr "Notice feed for %s group (Atom)"
msgid "FOAF for %s group"
msgstr "Outbox for %s"
-#: actions/showgroup.php:393 actions/showgroup.php:453 lib/groupnav.php:91
+#: actions/showgroup.php:393 actions/showgroup.php:445 lib/groupnav.php:91
msgid "Members"
msgstr "Members"
@@ -3765,11 +3782,11 @@ msgstr "(None)"
msgid "All members"
msgstr "All members"
-#: actions/showgroup.php:447
+#: actions/showgroup.php:439
msgid "Created"
msgstr "Created"
-#: actions/showgroup.php:463
+#: actions/showgroup.php:455
#, php-format
msgid ""
"**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3784,7 +3801,7 @@ msgstr ""
"their life and interests. [Join now](%%%%action.register%%%%) to become part "
"of this group and many more! ([Read more](%%%%doc.help%%%%))"
-#: actions/showgroup.php:469
+#: actions/showgroup.php:461
#, php-format
msgid ""
"**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3797,7 +3814,7 @@ msgstr ""
"[StatusNet](http://status.net/) tool. Its members share short messages about "
"their life and interests. "
-#: actions/showgroup.php:497
+#: actions/showgroup.php:489
msgid "Admins"
msgstr "Admins"
@@ -3870,10 +3887,10 @@ msgid ""
msgstr ""
#: actions/showstream.php:207
-#, php-format
+#, fuzzy, php-format
msgid ""
-"You can try to nudge %1$s or [post something to his or her attention](%%%%"
-"action.newnotice%%%%?status_textarea=%2$s)."
+"You can try to nudge %1$s or [post something to them](%%%%action.newnotice%%%"
+"%?status_textarea=%2$s)."
msgstr ""
"You can try to nudge %1$s or [post something to his or her attention](%%%%"
"action.newnotice%%%%?status_textarea=%2$s)."
@@ -4251,7 +4268,8 @@ msgstr "Save snapshot settings"
msgid "You are not subscribed to that profile."
msgstr "You are not subscribed to that profile."
-#: actions/subedit.php:83 classes/Subscription.php:132
+#. TRANS: Exception thrown when a subscription could not be stored on the server.
+#: actions/subedit.php:83 classes/Subscription.php:136
msgid "Could not save subscription."
msgstr "Could not save subscription."
@@ -4420,10 +4438,6 @@ msgstr "Use this form to add tags to your subscribers or subscriptions."
msgid "No such tag."
msgstr "No such tag."
-#: actions/twitapitrends.php:85
-msgid "API method under construction."
-msgstr "API method under construction."
-
#: actions/unblock.php:59
msgid "You haven't blocked that user."
msgstr "You haven't blocked that user."
@@ -4731,77 +4745,125 @@ msgstr "Version"
msgid "Author(s)"
msgstr ""
-#: classes/File.php:185
+#. TRANS: Server exception thrown when a URL cannot be processed.
+#: classes/File.php:143
+#, php-format
+msgid "Cannot process URL '%s'"
+msgstr ""
+
+#. TRANS: Server exception thrown when... Robin thinks something is impossible!
+#: classes/File.php:175
+msgid "Robin thinks something is impossible."
+msgstr ""
+
+#. TRANS: Message given if an upload is larger than the configured maximum.
+#. TRANS: %1$d is the byte limit for uploads, %2$d is the byte count for the uploaded file.
+#: classes/File.php:190
#, php-format
msgid ""
-"No file may be larger than %d bytes and the file you sent was %d bytes. Try "
-"to upload a smaller version."
+"No file may be larger than %1$d bytes and the file you sent was %2$d bytes. "
+"Try to upload a smaller version."
msgstr ""
-#: classes/File.php:195
+#. TRANS: Message given if an upload would exceed user quota.
+#. TRANS: %d (number) is the user quota in bytes.
+#: classes/File.php:202
#, php-format
msgid "A file this large would exceed your user quota of %d bytes."
msgstr ""
-#: classes/File.php:202
+#. TRANS: Message given id an upload would exceed a user's monthly quota.
+#. TRANS: $d (number) is the monthly user quota in bytes.
+#: classes/File.php:211
#, php-format
msgid "A file this large would exceed your monthly quota of %d bytes."
msgstr ""
-#: classes/Group_member.php:41
+#. TRANS: Client exception thrown if a file upload does not have a valid name.
+#: classes/File.php:248 classes/File.php:263
+#, fuzzy
+msgid "Invalid filename."
+msgstr "Invalid size."
+
+#. TRANS: Exception thrown when joining a group fails.
+#: classes/Group_member.php:42
msgid "Group join failed."
msgstr "Group join failed."
-#: classes/Group_member.php:53
+#. TRANS: Exception thrown when trying to leave a group the user is not a member of.
+#: classes/Group_member.php:55
msgid "Not part of group."
msgstr "Not part of group."
-#: classes/Group_member.php:60
+#. TRANS: Exception thrown when trying to leave a group fails.
+#: classes/Group_member.php:63
msgid "Group leave failed."
msgstr "Group leave failed."
-#: classes/Local_group.php:41
+#. TRANS: Server exception thrown when updating a local group fails.
+#: classes/Local_group.php:42
msgid "Could not update local group."
msgstr "Could not update local group."
-#: classes/Login_token.php:76
+#. TRANS: Exception thrown when trying creating a login token failed.
+#. TRANS: %s is the user nickname for which token creation failed.
+#: classes/Login_token.php:78
#, php-format
msgid "Could not create login token for %s"
msgstr "Could not create login token for %s"
-#: classes/Message.php:45
+#. TRANS: Exception thrown when database name or Data Source Name could not be found.
+#: classes/Memcached_DataObject.php:533
+msgid "No database name or DSN found anywhere."
+msgstr ""
+
+#. TRANS: Client exception thrown when a user tries to send a direct message while being banned from sending them.
+#: classes/Message.php:46
msgid "You are banned from sending direct messages."
msgstr "You are banned from sending direct messages."
-#: classes/Message.php:61
+#. TRANS: Message given when a message could not be stored on the server.
+#: classes/Message.php:63
msgid "Could not insert message."
msgstr "Could not insert message."
-#: classes/Message.php:71
+#. TRANS: Message given when a message could not be updated on the server.
+#: classes/Message.php:74
msgid "Could not update message with new URI."
msgstr "Could not update message with new URI."
+#. TRANS: Server exception thrown when a user profile for a notice cannot be found.
+#. TRANS: %1$d is a profile ID (number), %2$d is a notice ID (number).
+#: classes/Notice.php:98
+#, php-format
+msgid "No such profile (%1$d) for notice (%2$d)."
+msgstr ""
+
#. TRANS: Server exception. %s are the error details.
-#: classes/Notice.php:182
+#: classes/Notice.php:190
#, php-format
msgid "Database error inserting hashtag: %s"
msgstr "Database error inserting hashtag: %s"
-#: classes/Notice.php:251
+#. TRANS: Client exception thrown if a notice contains too many characters.
+#: classes/Notice.php:260
msgid "Problem saving notice. Too long."
msgstr "Problem saving notice. Too long."
-#: classes/Notice.php:255
+#. TRANS: Client exception thrown when trying to save a notice for an unknown user.
+#: classes/Notice.php:265
msgid "Problem saving notice. Unknown user."
msgstr "Problem saving notice. Unknown user."
-#: classes/Notice.php:260
+#. TRANS: Client exception thrown when a user tries to post too many notices in a given time frame.
+#: classes/Notice.php:271
msgid ""
"Too many notices too fast; take a breather and post again in a few minutes."
msgstr ""
"Too many notices too fast; take a breather and post again in a few minutes."
-#: classes/Notice.php:266
+#. TRANS: Client exception thrown when a user tries to post too many duplicate notices in a given time frame.
+#: classes/Notice.php:278
msgid ""
"Too many duplicate messages too quickly; take a breather and post again in a "
"few minutes."
@@ -4809,72 +4871,123 @@ msgstr ""
"Too many duplicate messages too quickly; take a breather and post again in a "
"few minutes."
-#: classes/Notice.php:272
+#. TRANS: Client exception thrown when a user tries to post while being banned.
+#: classes/Notice.php:286
msgid "You are banned from posting notices on this site."
msgstr "You are banned from posting notices on this site."
-#: classes/Notice.php:338 classes/Notice.php:364
+#. TRANS: Server exception thrown when a notice cannot be saved.
+#. TRANS: Server exception thrown when a notice cannot be updated.
+#: classes/Notice.php:353 classes/Notice.php:380
msgid "Problem saving notice."
msgstr "Problem saving notice."
-#: classes/Notice.php:973
+#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups().
+#: classes/Notice.php:892
+msgid "Bad type provided to saveKnownGroups"
+msgstr ""
+
+#. TRANS: Server exception thrown when an update for a group inbox fails.
+#: classes/Notice.php:991
msgid "Problem saving group inbox."
msgstr "Problem saving group inbox."
#. TRANS: Message used to repeat a notice. RT is the abbreviation of 'retweet'.
#. TRANS: %1$s is the repeated user's name, %2$s is the repeated notice.
-#: classes/Notice.php:1564
+#: classes/Notice.php:1614
#, php-format
msgid "RT @%1$s %2$s"
msgstr "RT @%1$s %2$s"
-#: classes/Subscription.php:74 lib/oauthstore.php:465
+#. TRANS: Exception thrown when trying to revoke an existing role for a user that does not exist.
+#. TRANS: %1$s is the role name, %2$s is the user ID (number).
+#: classes/Profile.php:740
+#, php-format
+msgid "Cannot revoke role \"%1$s\" for user #%2$d; does not exist."
+msgstr ""
+
+#. TRANS: Exception thrown when trying to revoke a role for a user with a failing database query.
+#. TRANS: %1$s is the role name, %2$s is the user ID (number).
+#: classes/Profile.php:749
+#, php-format
+msgid "Cannot revoke role \"%1$s\" for user #%2$d; database error."
+msgstr ""
+
+#. TRANS: Exception thrown when a right for a non-existing user profile is checked.
+#: classes/Remote_profile.php:54
+#, fuzzy
+msgid "Missing profile."
+msgstr "User has no profile."
+
+#. TRANS: Exception thrown when a tag cannot be saved.
+#: classes/Status_network.php:346
+#, fuzzy
+msgid "Unable to save tag."
+msgstr "Unable to save site notice."
+
+#. TRANS: Exception thrown when trying to subscribe while being banned from subscribing.
+#: classes/Subscription.php:75 lib/oauthstore.php:465
msgid "You have been banned from subscribing."
msgstr "You have been banned from subscribing."
-#: classes/Subscription.php:78
+#. TRANS: Exception thrown when trying to subscribe while already subscribed.
+#: classes/Subscription.php:80
msgid "Already subscribed!"
msgstr ""
-#: classes/Subscription.php:82
+#. TRANS: Exception thrown when trying to subscribe to a user who has blocked the subscribing user.
+#: classes/Subscription.php:85
msgid "User has blocked you."
msgstr "User has blocked you."
-#: classes/Subscription.php:167
+#. TRANS: Exception thrown when trying to unsibscribe without a subscription.
+#: classes/Subscription.php:171
#, fuzzy
msgid "Not subscribed!"
msgstr "Not subscribed!"
-#: classes/Subscription.php:173
-msgid "Couldn't delete self-subscription."
+#. TRANS: Exception thrown when trying to unsubscribe a user from themselves.
+#: classes/Subscription.php:178
+#, fuzzy
+msgid "Could not delete self-subscription."
msgstr "Couldn't delete self-subscription."
-#: classes/Subscription.php:200
-msgid "Couldn't delete subscription OMB token."
+#. TRANS: Exception thrown when the OMB token for a subscription could not deleted on the server.
+#: classes/Subscription.php:206
+#, fuzzy
+msgid "Could not delete subscription OMB token."
msgstr "Couldn't delete subscription OMB token."
-#: classes/Subscription.php:211
-msgid "Couldn't delete subscription."
+#. TRANS: Exception thrown when a subscription could not be deleted on the server.
+#: classes/Subscription.php:218
+#, fuzzy
+msgid "Could not delete subscription."
msgstr "Couldn't delete subscription."
-#: classes/User.php:363
+#. TRANS: Notice given on user registration.
+#. TRANS: %1$s is the sitename, $2$s is the registering user's nickname.
+#: classes/User.php:365
#, php-format
msgid "Welcome to %1$s, @%2$s!"
msgstr "Welcome to %1$s, @%2$s!"
-#: classes/User_group.php:480
+#. TRANS: Server exception thrown when creating a group failed.
+#: classes/User_group.php:496
msgid "Could not create group."
msgstr "Could not create group."
-#: classes/User_group.php:489
+#. TRANS: Server exception thrown when updating a group URI failed.
+#: classes/User_group.php:506
msgid "Could not set group URI."
msgstr "Could not set group URI."
-#: classes/User_group.php:510
+#. TRANS: Server exception thrown when setting group membership failed.
+#: classes/User_group.php:529
msgid "Could not set group membership."
msgstr "Could not set group membership."
-#: classes/User_group.php:524
+#. TRANS: Server exception thrown when saving local group information failed.
+#: classes/User_group.php:544
msgid "Could not save local group info."
msgstr "Could not save local group info."
@@ -6242,7 +6355,7 @@ msgid ""
"users in conversation. People can send you messages for your eyes only."
msgstr ""
-#: lib/mailbox.php:227 lib/noticelist.php:497
+#: lib/mailbox.php:227 lib/noticelist.php:505
msgid "from"
msgstr "from"
@@ -6297,24 +6410,24 @@ msgstr ""
msgid "File upload stopped by extension."
msgstr ""
-#: lib/mediafile.php:179 lib/mediafile.php:216
+#: lib/mediafile.php:179 lib/mediafile.php:217
msgid "File exceeds user's quota."
msgstr ""
-#: lib/mediafile.php:196 lib/mediafile.php:233
+#: lib/mediafile.php:197 lib/mediafile.php:234
msgid "File could not be moved to destination directory."
msgstr ""
-#: lib/mediafile.php:201 lib/mediafile.php:237
+#: lib/mediafile.php:202 lib/mediafile.php:238
msgid "Could not determine file's MIME type."
msgstr "Could not determine file's MIME type."
-#: lib/mediafile.php:270
+#: lib/mediafile.php:318
#, php-format
msgid " Try using another %s format."
msgstr ""
-#: lib/mediafile.php:275
+#: lib/mediafile.php:323
#, php-format
msgid "%s is not a supported file type on this server."
msgstr ""
@@ -6368,51 +6481,51 @@ msgid ""
msgstr ""
#. TRANS: Used in coordinates as abbreviation of north
-#: lib/noticelist.php:430
+#: lib/noticelist.php:436
msgid "N"
msgstr "N"
#. TRANS: Used in coordinates as abbreviation of south
-#: lib/noticelist.php:432
+#: lib/noticelist.php:438
msgid "S"
msgstr ""
#. TRANS: Used in coordinates as abbreviation of east
-#: lib/noticelist.php:434
+#: lib/noticelist.php:440
msgid "E"
msgstr ""
#. TRANS: Used in coordinates as abbreviation of west
-#: lib/noticelist.php:436
+#: lib/noticelist.php:442
msgid "W"
msgstr ""
-#: lib/noticelist.php:438
+#: lib/noticelist.php:444
#, php-format
msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
msgstr ""
-#: lib/noticelist.php:447
+#: lib/noticelist.php:453
msgid "at"
msgstr ""
-#: lib/noticelist.php:559
+#: lib/noticelist.php:567
msgid "in context"
msgstr "in context"
-#: lib/noticelist.php:594
+#: lib/noticelist.php:602
msgid "Repeated by"
msgstr "Repeated by"
-#: lib/noticelist.php:621
+#: lib/noticelist.php:629
msgid "Reply to this notice"
msgstr "Reply to this notice"
-#: lib/noticelist.php:622
+#: lib/noticelist.php:630
msgid "Reply"
msgstr "Reply"
-#: lib/noticelist.php:666
+#: lib/noticelist.php:674
msgid "Notice repeated"
msgstr "Notice repeated"
@@ -6670,9 +6783,8 @@ msgid "This server cannot handle theme uploads without ZIP support."
msgstr ""
#: lib/themeuploader.php:58 lib/themeuploader.php:61
-#, fuzzy
-msgid "Theme upload missing or failed."
-msgstr "System error uploading file."
+msgid "The theme file is missing or the upload failed."
+msgstr ""
#: lib/themeuploader.php:91 lib/themeuploader.php:102
#: lib/themeuploader.php:253 lib/themeuploader.php:257
diff --git a/locale/es/LC_MESSAGES/statusnet.po b/locale/es/LC_MESSAGES/statusnet.po
index 56f866af8..ae6f2929a 100644
--- a/locale/es/LC_MESSAGES/statusnet.po
+++ b/locale/es/LC_MESSAGES/statusnet.po
@@ -15,12 +15,12 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-06-16 22:18+0000\n"
-"PO-Revision-Date: 2010-06-21 18:03:25+0000\n"
+"POT-Creation-Date: 2010-08-03 13:21+0000\n"
+"PO-Revision-Date: 2010-08-03 13:21:54+0000\n"
"Language-Team: Spanish\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.17alpha (r68367); Translate extension (2010-06-12)\n"
+"X-Generator: MediaWiki 1.17alpha (r70381); Translate extension (2010-07-21)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: es\n"
"X-Message-Group: out-statusnet\n"
@@ -104,7 +104,7 @@ msgstr "No existe tal página."
#: actions/apidirectmessagenew.php:74 actions/apigroupcreate.php:113
#: actions/apigroupismember.php:91 actions/apigroupjoin.php:100
#: actions/apigroupleave.php:100 actions/apigrouplist.php:73
-#: actions/apistatusesupdate.php:228 actions/apisubscriptions.php:87
+#: actions/apistatusesupdate.php:229 actions/apisubscriptions.php:87
#: actions/apitimelinefavorites.php:72 actions/apitimelinefriends.php:174
#: actions/apitimelinehome.php:80 actions/apitimelinementions.php:80
#: actions/apitimelineuser.php:82 actions/avatarbynickname.php:75
@@ -175,20 +175,20 @@ msgstr ""
#: actions/all.php:146
#, 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)."
+"You can try to [nudge %1$s](../%2$s) from their profile or [post something "
+"to them](%%%%action.newnotice%%%%?status_textarea=%3$s)."
msgstr ""
-"Puedes intentar [darle un toque a %1$s](../%2$s) desde su perfil o [publicar "
-"algo a su atención](%%%%action.newnotice%%%%?status_textarea=%3$s)."
+"Puedes intentar [zarandear a %1$s](../%2$s) desde su perfil o [publicar algo "
+"a ellos](%%%%action.newnotice%%%%?status_textarea=%3$s)."
#: actions/all.php:149 actions/replies.php:210 actions/showstream.php:211
#, php-format
msgid ""
"Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
-"post a notice to his or her attention."
+"post a notice to them."
msgstr ""
-"¿Por qué no [registrar una cuenta](%%%%action.register%%%%) y luego darle un "
-"toque a %s o publicar algo a su atención?"
+"Por qué no [registrar una cuenta](%%%%action.register%%%%) y luego zarandear "
+"a %s o publicar una nota a ellos?"
#. TRANS: H1 text
#: actions/all.php:182
@@ -220,7 +220,7 @@ msgstr "¡Actualizaciones de %1$s y sus amistades en %2$s!"
#: actions/apistatusesshow.php:109 actions/apistatusnetconfig.php:141
#: actions/apistatusnetversion.php:93 actions/apisubscriptions.php:111
#: actions/apitimelinefavorites.php:174 actions/apitimelinefriends.php:271
-#: actions/apitimelinegroup.php:152 actions/apitimelinehome.php:175
+#: actions/apitimelinegroup.php:154 actions/apitimelinehome.php:175
#: actions/apitimelinementions.php:174 actions/apitimelinepublic.php:241
#: actions/apitimelineretweetedtome.php:121
#: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161
@@ -270,7 +270,7 @@ msgstr "No se pudo guardar el perfil."
#: actions/apiaccountupdateprofilebackgroundimage.php:108
#: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80
-#: actions/apistatusesupdate.php:211 actions/avatarsettings.php:257
+#: actions/apistatusesupdate.php:212 actions/avatarsettings.php:257
#: actions/designadminpanel.php:123 actions/editapplication.php:118
#: actions/newapplication.php:101 actions/newnotice.php:94
#: lib/designsettings.php:283
@@ -368,8 +368,8 @@ msgid "Could not delete favorite."
msgstr "No se pudo borrar favorito."
#: actions/apifriendshipscreate.php:109
-msgid "Could not follow user: User not found."
-msgstr "No puede seguir al usuario. Usuario no encontrado"
+msgid "Could not follow user: profile not found."
+msgstr "No se pudo seguir al usuario: Perfil no encontrado."
#: actions/apifriendshipscreate.php:118
#, php-format
@@ -384,9 +384,9 @@ msgstr "No se pudo dejar de seguir al usuario. Usuario no encontrado"
msgid "You cannot unfollow yourself."
msgstr "No puedes dejar de seguirte a ti mismo."
-#: actions/apifriendshipsexists.php:94
-msgid "Two user ids or screen_names must be supplied."
-msgstr "Deben proveerse dos identificaciones de usuario o nombres en pantalla."
+#: actions/apifriendshipsexists.php:91
+msgid "Two valid IDs or screen_names must be supplied."
+msgstr "Deben proveerse dos IDs válidos o nombres en pantalla."
#: actions/apifriendshipsshow.php:134
msgid "Could not determine source user."
@@ -515,6 +515,10 @@ msgstr "Grupos %s"
msgid "groups on %s"
msgstr "Grupos en %s"
+#: actions/apimediaupload.php:99
+msgid "Upload failed."
+msgstr "Carga falló."
+
#: actions/apioauthauthorize.php:101
msgid "No oauth_token parameter provided."
msgstr "No se ha provisto de un parámetro oauth_token."
@@ -661,24 +665,28 @@ msgstr "Status borrado."
msgid "No status with that ID found."
msgstr "No hay estado para ese ID"
-#: actions/apistatusesupdate.php:241 actions/newnotice.php:155
+#: actions/apistatusesupdate.php:221
+msgid "Client must provide a 'status' parameter with a value."
+msgstr "El cliente debe proveer un parámetro de 'status' con un valor."
+
+#: actions/apistatusesupdate.php:242 actions/newnotice.php:155
#: lib/mailhandler.php:60
#, php-format
msgid "That's too long. Max notice size is %d chars."
msgstr "La entrada es muy larga. El tamaño máximo es de %d caracteres."
-#: actions/apistatusesupdate.php:282 actions/apiusershow.php:96
+#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96
msgid "Not found."
msgstr "No encontrado."
-#: actions/apistatusesupdate.php:305 actions/newnotice.php:178
+#: actions/apistatusesupdate.php:306 actions/newnotice.php:178
#, php-format
msgid "Max notice size is %d chars, including attachment URL."
msgstr ""
"El tamaño máximo de la notificación es %d caracteres, incluyendo el URL "
"adjunto."
-#: actions/apisubscriptions.php:231 actions/apisubscriptions.php:261
+#: actions/apisubscriptions.php:232 actions/apisubscriptions.php:262
msgid "Unsupported format."
msgstr "Formato no soportado."
@@ -732,6 +740,10 @@ msgstr "Avisos etiquetados con %s"
msgid "Updates tagged with %1$s on %2$s!"
msgstr "Actualizaciones etiquetadas con %1$s en %2$s!"
+#: actions/apitrends.php:87
+msgid "API method under construction."
+msgstr "Método API en construcción."
+
#: actions/attachment.php:73
msgid "No such attachment."
msgstr "No existe tal archivo adjunto."
@@ -784,7 +796,7 @@ msgid "Preview"
msgstr "Vista previa"
#: actions/avatarsettings.php:149 actions/showapplication.php:252
-#: lib/deleteuserform.php:66 lib/noticelist.php:648
+#: lib/deleteuserform.php:66 lib/noticelist.php:656
msgid "Delete"
msgstr "Borrar"
@@ -1066,7 +1078,7 @@ msgid "Do not delete this notice"
msgstr "No eliminar este mensaje"
#. TRANS: Submit button title for 'Yes' when deleting a notice.
-#: actions/deletenotice.php:158 lib/noticelist.php:648
+#: actions/deletenotice.php:158 lib/noticelist.php:656
msgid "Delete this notice"
msgstr "Borrar este aviso"
@@ -1344,7 +1356,8 @@ msgstr "Alias inválido: \"%s\""
msgid "Could not update group."
msgstr "No se pudo actualizar el grupo."
-#: actions/editgroup.php:264 classes/User_group.php:496
+#. TRANS: Server exception thrown when creating group aliases failed.
+#: actions/editgroup.php:264 classes/User_group.php:514
msgid "Could not create aliases."
msgstr "No fue posible crear alias."
@@ -2289,7 +2302,7 @@ msgstr "Ningún nombre de usuario o ID."
#: actions/joingroup.php:141 lib/command.php:346
#, php-format
msgid "%1$s joined group %2$s"
-msgstr "%1$s se ha unido al grupo %2$"
+msgstr "%1$s se ha unido al grupo %2$s"
#: actions/leavegroup.php:60
msgid "You must be logged in to leave a group."
@@ -2505,10 +2518,10 @@ msgstr ""
#: actions/nudge.php:85
msgid ""
-"This user doesn't allow nudges or hasn't confirmed or set his email yet."
+"This user doesn't allow nudges or hasn't confirmed or set their email yet."
msgstr ""
-"Este usuario no permite toques o todavía no confirma o configura su correo "
-"electrónico."
+"Este usuario no permite zarandeos o todavía no confirma o configura su "
+"correo electrónico."
#: actions/nudge.php:94
msgid "Nudge sent"
@@ -2584,8 +2597,8 @@ msgid "Only %s URLs over plain HTTP please."
msgstr "Solamente %s URLs sobre HTTP simples por favor."
#. TRANS: Client error on an API request with an unsupported data format.
-#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1179
-#: lib/apiaction.php:1208 lib/apiaction.php:1325
+#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1204
+#: lib/apiaction.php:1232 lib/apiaction.php:1355
msgid "Not a supported data format."
msgstr "No es un formato de dato soportado"
@@ -3508,7 +3521,7 @@ msgstr "No puedes repetir tus propios mensajes."
msgid "You already repeated that notice."
msgstr "Ya has repetido este mensaje."
-#: actions/repeat.php:114 lib/noticelist.php:667
+#: actions/repeat.php:114 lib/noticelist.php:675
msgid "Repeated"
msgstr "Repetido"
@@ -3546,10 +3559,10 @@ msgstr "Feed de avisos de %s"
#, php-format
msgid ""
"This is the timeline showing replies to %1$s but %2$s hasn't received a "
-"notice to his attention yet."
+"notice to them yet."
msgstr ""
"Esta es la línea temporal que muestra las respuestas a a %1$s, pero %2$s aún "
-"no ha recibido ningún aviso a su atención."
+"no ha recibido ningún aviso."
#: actions/replies.php:204
#, php-format
@@ -3563,11 +3576,11 @@ msgstr ""
#: actions/replies.php:206
#, php-format
msgid ""
-"You can try to [nudge %1$s](../%2$s) or [post something to his or her "
-"attention](%%%%action.newnotice%%%%?status_textarea=%3$s)."
+"You can try to [nudge %1$s](../%2$s) or [post something to them](%%%%action."
+"newnotice%%%%?status_textarea=%3$s)."
msgstr ""
-"Puedes intentar [darle un toque a %1$s](../%2$s) o [publicar algo en su "
-"atención](%%%%action.newnotice%%%%?status_textarea=%3$s)."
+"Puedes intentar [zarandear a %1$s](../%2$s) o [publicar algo a ellos](%%%%"
+"action.newnotice%%%%?status_textarea=%3$s)."
#: actions/repliesrss.php:72
#, php-format
@@ -3655,7 +3668,7 @@ msgstr "Organización"
msgid "Description"
msgstr "Descripción"
-#: actions/showapplication.php:192 actions/showgroup.php:444
+#: actions/showapplication.php:192 actions/showgroup.php:436
#: lib/profileaction.php:187
msgid "Statistics"
msgstr "Estadísticas"
@@ -3744,22 +3757,22 @@ msgstr ""
#: actions/showfavorites.php:208
#, php-format
msgid ""
-"%s hasn't added any notices to his favorites yet. Post something interesting "
-"they would add to their favorites :)"
+"%s hasn't added any favorite notices yet. Post something interesting they "
+"would add to their favorites :)"
msgstr ""
-"%s aún no ha añadido ningún aviso a sus favoritos. ¡Publica algo interesante "
-"que pueda añadir a sus favoritos! :)"
+"%s aún no ha agregado ningún aviso a sus favoritos. Publica algo interesante "
+"que pueda añadir a sus favoritos :)"
#: actions/showfavorites.php:212
#, php-format
msgid ""
-"%s hasn't added any notices to his favorites yet. Why not [register an "
-"account](%%%%action.register%%%%) and then post something interesting they "
-"would add to their favorites :)"
+"%s hasn't added any favorite notices yet. Why not [register an account](%%%%"
+"action.register%%%%) and then post something interesting they would add to "
+"their favorites :)"
msgstr ""
-"%s aún no ha añadido ningún aviso a sus favoritos. ¿Por qué no [registras "
-"una cuenta] (%%%%action.register%%%%) y publicas algo interesante que pueda "
-"añadir a sus favoritos? :)"
+"%s aún no ha añadido ningún aviso a sus favoritos. Por qué no [registras una "
+"cuenta] (%%%%action.register%%%%) y publicas algo interesante que puedan "
+"añadir a sus favoritos :)"
#: actions/showfavorites.php:243
msgid "This is a way to share what you like."
@@ -3817,7 +3830,7 @@ msgstr "Canal de avisos del grupo %s (Atom)"
msgid "FOAF for %s group"
msgstr "Amistades de amistades del grupo %s"
-#: actions/showgroup.php:393 actions/showgroup.php:453 lib/groupnav.php:91
+#: actions/showgroup.php:393 actions/showgroup.php:445 lib/groupnav.php:91
msgid "Members"
msgstr "Miembros"
@@ -3831,11 +3844,11 @@ msgstr "(Ninguno)"
msgid "All members"
msgstr "Todos los miembros"
-#: actions/showgroup.php:447
+#: actions/showgroup.php:439
msgid "Created"
msgstr "Creado"
-#: actions/showgroup.php:463
+#: actions/showgroup.php:455
#, php-format
msgid ""
"**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3851,7 +3864,7 @@ msgstr ""
"action.register%%%%) para formar parte de este y muchos más grupos! ([Más "
"información](%%%%doc.help%%%%))"
-#: actions/showgroup.php:469
+#: actions/showgroup.php:461
#, php-format
msgid ""
"**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3864,7 +3877,7 @@ msgstr ""
"herramienta de software libre [StatusNet](http://status.net/). Sus miembros "
"comparten mensajes cortos acerca de su vida e intereses. "
-#: actions/showgroup.php:497
+#: actions/showgroup.php:489
msgid "Admins"
msgstr "Administradores"
@@ -3941,11 +3954,11 @@ msgstr ""
#: 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)."
+"You can try to nudge %1$s or [post something to them](%%%%action.newnotice%%%"
+"%?status_textarea=%2$s)."
msgstr ""
-"Puedes intentar darle un toque a %1$s o [publicar algo a su atención](%%%%"
-"action.newnotice%%%%?status_textarea=%2$s)."
+"Puedes intentar zarandear a %1$s o [publicar algo a ellos](%%%%action."
+"newnotice%%%%?status_textarea=%2$s)."
#: actions/showstream.php:243
#, php-format
@@ -4334,7 +4347,8 @@ msgstr "Guardar la configuración de instantáneas"
msgid "You are not subscribed to that profile."
msgstr "No te has suscrito a ese perfil."
-#: actions/subedit.php:83 classes/Subscription.php:132
+#. TRANS: Exception thrown when a subscription could not be stored on the server.
+#: actions/subedit.php:83 classes/Subscription.php:136
msgid "Could not save subscription."
msgstr "No se ha podido guardar la suscripción."
@@ -4514,10 +4528,6 @@ msgstr ""
msgid "No such tag."
msgstr "No existe tal etiqueta."
-#: actions/twitapitrends.php:85
-msgid "API method under construction."
-msgstr "Método API en construcción."
-
#: actions/unblock.php:59
msgid "You haven't blocked that user."
msgstr "No has bloqueado ese usuario."
@@ -4828,81 +4838,128 @@ msgstr "Versión"
msgid "Author(s)"
msgstr "Autor(es)"
-#: classes/File.php:185
+#. TRANS: Server exception thrown when a URL cannot be processed.
+#: classes/File.php:143
+#, php-format
+msgid "Cannot process URL '%s'"
+msgstr "No se puede procesar URL '%s'"
+
+#. TRANS: Server exception thrown when... Robin thinks something is impossible!
+#: classes/File.php:175
+msgid "Robin thinks something is impossible."
+msgstr " Robin piensa que algo es imposible."
+
+#. TRANS: Message given if an upload is larger than the configured maximum.
+#. TRANS: %1$d is the byte limit for uploads, %2$d is the byte count for the uploaded file.
+#: classes/File.php:190
#, php-format
msgid ""
-"No file may be larger than %d bytes and the file you sent was %d bytes. Try "
-"to upload a smaller version."
+"No file may be larger than %1$d bytes and the file you sent was %2$d bytes. "
+"Try to upload a smaller version."
msgstr ""
-"No puede haber un archivo de tamaño mayor a %d bytes y el archivo subido es "
-"de %d bytes. Por favor, intenta subir una versión más ligera."
+"Ningún archivopuede ser de tamaño mayor a %1$d bytes y el archivo que "
+"enviaste es de %2$d bytes. Trata de subir una versión más pequeña."
-#: classes/File.php:195
+#. TRANS: Message given if an upload would exceed user quota.
+#. TRANS: %d (number) is the user quota in bytes.
+#: classes/File.php:202
#, php-format
msgid "A file this large would exceed your user quota of %d bytes."
msgstr ""
"Un archivo tan grande podría sobrepasar tu cuota de usuario de %d bytes."
-#: classes/File.php:202
+#. TRANS: Message given id an upload would exceed a user's monthly quota.
+#. TRANS: $d (number) is the monthly user quota in bytes.
+#: classes/File.php:211
#, php-format
msgid "A file this large would exceed your monthly quota of %d bytes."
msgstr "Un archivo tan grande podría sobrepasar tu cuota mensual de %d bytes."
-#: classes/Group_member.php:41
+#. TRANS: Client exception thrown if a file upload does not have a valid name.
+#: classes/File.php:248 classes/File.php:263
+msgid "Invalid filename."
+msgstr "Nombre de archivo inválido."
+
+#. TRANS: Exception thrown when joining a group fails.
+#: classes/Group_member.php:42
msgid "Group join failed."
msgstr "Ha fallado la acción de unirse el grupo"
-#: classes/Group_member.php:53
+#. TRANS: Exception thrown when trying to leave a group the user is not a member of.
+#: classes/Group_member.php:55
msgid "Not part of group."
msgstr "No es parte del grupo."
-#: classes/Group_member.php:60
+#. TRANS: Exception thrown when trying to leave a group fails.
+#: classes/Group_member.php:63
msgid "Group leave failed."
msgstr "Ha fallado la acción de abandonar el grupo"
-#: classes/Local_group.php:41
+#. TRANS: Server exception thrown when updating a local group fails.
+#: classes/Local_group.php:42
msgid "Could not update local group."
msgstr "No se pudo actualizar el grupo local."
-#: classes/Login_token.php:76
+#. TRANS: Exception thrown when trying creating a login token failed.
+#. TRANS: %s is the user nickname for which token creation failed.
+#: classes/Login_token.php:78
#, php-format
msgid "Could not create login token for %s"
msgstr "No se pudo crear el token de acceso para %s"
-#: classes/Message.php:45
+#. TRANS: Exception thrown when database name or Data Source Name could not be found.
+#: classes/Memcached_DataObject.php:533
+msgid "No database name or DSN found anywhere."
+msgstr "Ningún nombre de base de datos o DSN encontrado."
+
+#. TRANS: Client exception thrown when a user tries to send a direct message while being banned from sending them.
+#: classes/Message.php:46
msgid "You are banned from sending direct messages."
msgstr "Se te ha inhabilitado para enviar mensajes directos."
-#: classes/Message.php:61
+#. TRANS: Message given when a message could not be stored on the server.
+#: classes/Message.php:63
msgid "Could not insert message."
msgstr "No se pudo insertar mensaje."
-#: classes/Message.php:71
+#. TRANS: Message given when a message could not be updated on the server.
+#: classes/Message.php:74
msgid "Could not update message with new URI."
msgstr "No se pudo actualizar mensaje con nuevo URI."
+#. TRANS: Server exception thrown when a user profile for a notice cannot be found.
+#. TRANS: %1$d is a profile ID (number), %2$d is a notice ID (number).
+#: classes/Notice.php:98
+#, php-format
+msgid "No such profile (%1$d) for notice (%2$d)."
+msgstr "No existe tal perfil (%1$d) para notificar (%2$d)."
+
#. TRANS: Server exception. %s are the error details.
-#: classes/Notice.php:182
+#: classes/Notice.php:190
#, php-format
msgid "Database error inserting hashtag: %s"
msgstr "Error de la BD al insertar la etiqueta clave: %s"
-#: classes/Notice.php:251
+#. TRANS: Client exception thrown if a notice contains too many characters.
+#: classes/Notice.php:260
msgid "Problem saving notice. Too long."
msgstr "Ha habido un problema al guardar el mensaje. Es muy largo."
-#: classes/Notice.php:255
+#. TRANS: Client exception thrown when trying to save a notice for an unknown user.
+#: classes/Notice.php:265
msgid "Problem saving notice. Unknown user."
msgstr "Ha habido un problema al guardar el mensaje. Usuario desconocido."
-#: classes/Notice.php:260
+#. TRANS: Client exception thrown when a user tries to post too many notices in a given time frame.
+#: classes/Notice.php:271
msgid ""
"Too many notices too fast; take a breather and post again in a few minutes."
msgstr ""
"Demasiados avisos demasiado rápido; para y publicar nuevamente en unos "
"minutos."
-#: classes/Notice.php:266
+#. TRANS: Client exception thrown when a user tries to post too many duplicate notices in a given time frame.
+#: classes/Notice.php:278
msgid ""
"Too many duplicate messages too quickly; take a breather and post again in a "
"few minutes."
@@ -4910,72 +4967,119 @@ msgstr ""
"Muchos mensajes, enviados muy rápido; espera un poco e intenta publicar "
"pasados unos minutos."
-#: classes/Notice.php:272
+#. TRANS: Client exception thrown when a user tries to post while being banned.
+#: classes/Notice.php:286
msgid "You are banned from posting notices on this site."
msgstr "Tienes prohibido publicar avisos en este sitio."
-#: classes/Notice.php:338 classes/Notice.php:364
+#. TRANS: Server exception thrown when a notice cannot be saved.
+#. TRANS: Server exception thrown when a notice cannot be updated.
+#: classes/Notice.php:353 classes/Notice.php:380
msgid "Problem saving notice."
msgstr "Hubo un problema al guardar el aviso."
-#: classes/Notice.php:973
+#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups().
+#: classes/Notice.php:892
+msgid "Bad type provided to saveKnownGroups"
+msgstr "Mal tipo proveído a saveKnownGroups"
+
+#. TRANS: Server exception thrown when an update for a group inbox fails.
+#: classes/Notice.php:991
msgid "Problem saving group inbox."
msgstr "Hubo un problema al guarda la bandeja de entrada del grupo."
#. TRANS: Message used to repeat a notice. RT is the abbreviation of 'retweet'.
#. TRANS: %1$s is the repeated user's name, %2$s is the repeated notice.
-#: classes/Notice.php:1564
+#: classes/Notice.php:1614
#, php-format
msgid "RT @%1$s %2$s"
msgstr "RT @%1$s %2$s"
-#: classes/Subscription.php:74 lib/oauthstore.php:465
+#. TRANS: Exception thrown when trying to revoke an existing role for a user that does not exist.
+#. TRANS: %1$s is the role name, %2$s is the user ID (number).
+#: classes/Profile.php:740
+#, php-format
+msgid "Cannot revoke role \"%1$s\" for user #%2$d; does not exist."
+msgstr "No se puede revocar rol \"%1$s\" para usuario #%2$d; no existe."
+
+#. TRANS: Exception thrown when trying to revoke a role for a user with a failing database query.
+#. TRANS: %1$s is the role name, %2$s is the user ID (number).
+#: classes/Profile.php:749
+#, php-format
+msgid "Cannot revoke role \"%1$s\" for user #%2$d; database error."
+msgstr ""
+"No se puede revocar rol \"%1$s\" para usuario #%2$d; error de base de datos."
+
+#. TRANS: Exception thrown when a right for a non-existing user profile is checked.
+#: classes/Remote_profile.php:54
+msgid "Missing profile."
+msgstr "Perfil ausente."
+
+#. TRANS: Exception thrown when a tag cannot be saved.
+#: classes/Status_network.php:346
+msgid "Unable to save tag."
+msgstr "Incapaz de grabar etiqueta."
+
+#. TRANS: Exception thrown when trying to subscribe while being banned from subscribing.
+#: classes/Subscription.php:75 lib/oauthstore.php:465
msgid "You have been banned from subscribing."
msgstr "Se te ha prohibido la suscripción."
-#: classes/Subscription.php:78
+#. TRANS: Exception thrown when trying to subscribe while already subscribed.
+#: classes/Subscription.php:80
msgid "Already subscribed!"
msgstr "¡Ya te has suscrito!"
-#: classes/Subscription.php:82
+#. TRANS: Exception thrown when trying to subscribe to a user who has blocked the subscribing user.
+#: classes/Subscription.php:85
msgid "User has blocked you."
msgstr "El usuario te ha bloqueado."
-#: classes/Subscription.php:167
+#. TRANS: Exception thrown when trying to unsibscribe without a subscription.
+#: classes/Subscription.php:171
#, fuzzy
msgid "Not subscribed!"
msgstr "¡No estás suscrito!"
-#: classes/Subscription.php:173
-msgid "Couldn't delete self-subscription."
+#. TRANS: Exception thrown when trying to unsubscribe a user from themselves.
+#: classes/Subscription.php:178
+msgid "Could not delete self-subscription."
msgstr "No se pudo eliminar la auto-suscripción."
-#: classes/Subscription.php:200
-msgid "Couldn't delete subscription OMB token."
-msgstr "No se pudo eliminar el token OMB de suscripción."
+#. TRANS: Exception thrown when the OMB token for a subscription could not deleted on the server.
+#: classes/Subscription.php:206
+msgid "Could not delete subscription OMB token."
+msgstr "No se pudo eliminar la ficha OMB de suscripción."
-#: classes/Subscription.php:211
-msgid "Couldn't delete subscription."
+#. TRANS: Exception thrown when a subscription could not be deleted on the server.
+#: classes/Subscription.php:218
+msgid "Could not delete subscription."
msgstr "No se pudo eliminar la suscripción."
-#: classes/User.php:363
+#. TRANS: Notice given on user registration.
+#. TRANS: %1$s is the sitename, $2$s is the registering user's nickname.
+#: classes/User.php:365
#, php-format
msgid "Welcome to %1$s, @%2$s!"
msgstr "Bienvenido a %1$s, @%2$s!"
-#: classes/User_group.php:480
+#. TRANS: Server exception thrown when creating a group failed.
+#: classes/User_group.php:496
msgid "Could not create group."
msgstr "No se pudo crear grupo."
-#: classes/User_group.php:489
+#. TRANS: Server exception thrown when updating a group URI failed.
+#: classes/User_group.php:506
msgid "Could not set group URI."
msgstr "No se pudo configurar el URI del grupo."
-#: classes/User_group.php:510
+#. TRANS: Server exception thrown when setting group membership failed.
+#: classes/User_group.php:529
msgid "Could not set group membership."
msgstr "No se pudo configurar la membresía del grupo."
-#: classes/User_group.php:524
+#. TRANS: Server exception thrown when saving local group information failed.
+#: classes/User_group.php:544
msgid "Could not save local group info."
msgstr "No se ha podido guardar la información del grupo local."
@@ -6453,7 +6557,7 @@ msgstr ""
"otros usuarios partícipes de la conversación. La gente puede enviarte "
"mensajes que sólo puedas leer tú."
-#: lib/mailbox.php:227 lib/noticelist.php:497
+#: lib/mailbox.php:227 lib/noticelist.php:505
msgid "from"
msgstr "desde"
@@ -6513,24 +6617,24 @@ msgstr "No se pudo escribir el archivo en el disco."
msgid "File upload stopped by extension."
msgstr "La subida de archivos se detuvo por extensión."
-#: lib/mediafile.php:179 lib/mediafile.php:216
+#: lib/mediafile.php:179 lib/mediafile.php:217
msgid "File exceeds user's quota."
msgstr "Archivo sobrepasa la cuota del usuario."
-#: lib/mediafile.php:196 lib/mediafile.php:233
+#: lib/mediafile.php:197 lib/mediafile.php:234
msgid "File could not be moved to destination directory."
msgstr "El archivo no se pudo mover al directorio de destino."
-#: lib/mediafile.php:201 lib/mediafile.php:237
+#: lib/mediafile.php:202 lib/mediafile.php:238
msgid "Could not determine file's MIME type."
msgstr "No se pudo determinar tipo MIME del archivo"
-#: lib/mediafile.php:270
+#: lib/mediafile.php:318
#, php-format
msgid " Try using another %s format."
msgstr "Pruebe a usar otro formato %s."
-#: lib/mediafile.php:275
+#: lib/mediafile.php:323
#, php-format
msgid "%s is not a supported file type on this server."
msgstr "%s no es un tipo de archivo soportado en este servidor."
@@ -6586,51 +6690,51 @@ msgstr ""
"favor, inténtalo más tarde."
#. TRANS: Used in coordinates as abbreviation of north
-#: lib/noticelist.php:430
+#: lib/noticelist.php:436
msgid "N"
msgstr "N"
#. TRANS: Used in coordinates as abbreviation of south
-#: lib/noticelist.php:432
+#: lib/noticelist.php:438
msgid "S"
msgstr "S"
#. TRANS: Used in coordinates as abbreviation of east
-#: lib/noticelist.php:434
+#: lib/noticelist.php:440
msgid "E"
msgstr "E"
#. TRANS: Used in coordinates as abbreviation of west
-#: lib/noticelist.php:436
+#: lib/noticelist.php:442
msgid "W"
msgstr "W"
-#: lib/noticelist.php:438
+#: lib/noticelist.php:444
#, php-format
msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
msgstr "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
-#: lib/noticelist.php:447
+#: lib/noticelist.php:453
msgid "at"
msgstr "en"
-#: lib/noticelist.php:559
+#: lib/noticelist.php:567
msgid "in context"
msgstr "en contexto"
-#: lib/noticelist.php:594
+#: lib/noticelist.php:602
msgid "Repeated by"
msgstr "Repetido por"
-#: lib/noticelist.php:621
+#: lib/noticelist.php:629
msgid "Reply to this notice"
msgstr "Responder este aviso."
-#: lib/noticelist.php:622
+#: lib/noticelist.php:630
msgid "Reply"
msgstr "Responder"
-#: lib/noticelist.php:666
+#: lib/noticelist.php:674
msgid "Notice repeated"
msgstr "Aviso repetido"
@@ -6888,8 +6992,8 @@ msgid "This server cannot handle theme uploads without ZIP support."
msgstr "Este servidor no puede manejar cargas de temas sin soporte ZIP."
#: lib/themeuploader.php:58 lib/themeuploader.php:61
-msgid "Theme upload missing or failed."
-msgstr "Sudida del tema perdido o errado."
+msgid "The theme file is missing or the upload failed."
+msgstr "El archivo de tema está perdido o la carga falló."
#: lib/themeuploader.php:91 lib/themeuploader.php:102
#: lib/themeuploader.php:253 lib/themeuploader.php:257
diff --git a/locale/fa/LC_MESSAGES/statusnet.po b/locale/fa/LC_MESSAGES/statusnet.po
index 22997fc91..685d96e4a 100644
--- a/locale/fa/LC_MESSAGES/statusnet.po
+++ b/locale/fa/LC_MESSAGES/statusnet.po
@@ -12,8 +12,8 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-06-16 22:18+0000\n"
-"PO-Revision-Date: 2010-06-21 18:03:35+0000\n"
+"POT-Creation-Date: 2010-08-03 13:21+0000\n"
+"PO-Revision-Date: 2010-08-03 13:21:57+0000\n"
"Last-Translator: Ahmad Sufi Mahmudi\n"
"Language-Team: Persian\n"
"MIME-Version: 1.0\n"
@@ -22,7 +22,7 @@ msgstr ""
"X-Language-Code: fa\n"
"X-Message-Group: out-statusnet\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: MediaWiki 1.17alpha (r68367); Translate extension (2010-06-12)\n"
+"X-Generator: MediaWiki 1.17alpha (r70381); Translate extension (2010-07-21)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
#. TRANS: Page title
@@ -103,7 +103,7 @@ msgstr "چنین صÙحه‌ای وجود ندارد."
#: actions/apidirectmessagenew.php:74 actions/apigroupcreate.php:113
#: actions/apigroupismember.php:91 actions/apigroupjoin.php:100
#: actions/apigroupleave.php:100 actions/apigrouplist.php:73
-#: actions/apistatusesupdate.php:228 actions/apisubscriptions.php:87
+#: actions/apistatusesupdate.php:229 actions/apisubscriptions.php:87
#: actions/apitimelinefavorites.php:72 actions/apitimelinefriends.php:174
#: actions/apitimelinehome.php:80 actions/apitimelinementions.php:80
#: actions/apitimelineuser.php:82 actions/avatarbynickname.php:75
@@ -170,19 +170,19 @@ msgstr ""
#. TRANS: %1$s is user nickname, %2$s is user nickname, %2$s is user nickname prefixed with "@"
#: actions/all.php:146
-#, php-format
+#, fuzzy, 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)."
+"You can try to [nudge %1$s](../%2$s) from their profile or [post something "
+"to them](%%%%action.newnotice%%%%?status_textarea=%3$s)."
msgstr ""
"شما می‌توانید [یادآوری‌کردن %1$s](../%2$s) را از نمایه‌اش امتحان کنید یا [به "
"توجه او چیزی بÙرستید](%%%%action.newnotice%%%%?status_textarea=%3$s)."
#: actions/all.php:149 actions/replies.php:210 actions/showstream.php:211
-#, php-format
+#, fuzzy, php-format
msgid ""
"Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
-"post a notice to his or her attention."
+"post a notice to them."
msgstr ""
"چرا [ثبت‌نام](%%%%action.register%%%%) نمی‌کنید و سپس به %s یادآوری کنید یا یک "
"پیام به توجه‌اش بÙرستید."
@@ -217,7 +217,7 @@ msgstr "به روز رسانی از %1$s و دوستان در %2$s"
#: actions/apistatusesshow.php:109 actions/apistatusnetconfig.php:141
#: actions/apistatusnetversion.php:93 actions/apisubscriptions.php:111
#: actions/apitimelinefavorites.php:174 actions/apitimelinefriends.php:271
-#: actions/apitimelinegroup.php:152 actions/apitimelinehome.php:175
+#: actions/apitimelinegroup.php:154 actions/apitimelinehome.php:175
#: actions/apitimelinementions.php:174 actions/apitimelinepublic.php:241
#: actions/apitimelineretweetedtome.php:121
#: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161
@@ -266,7 +266,7 @@ msgstr "نمی‌توان نمایه را ذخیره کرد."
#: actions/apiaccountupdateprofilebackgroundimage.php:108
#: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80
-#: actions/apistatusesupdate.php:211 actions/avatarsettings.php:257
+#: actions/apistatusesupdate.php:212 actions/avatarsettings.php:257
#: actions/designadminpanel.php:123 actions/editapplication.php:118
#: actions/newapplication.php:101 actions/newnotice.php:94
#: lib/designsettings.php:283
@@ -363,7 +363,8 @@ msgid "Could not delete favorite."
msgstr "نمی‌توان پیام برگزیده را حذ٠کرد."
#: actions/apifriendshipscreate.php:109
-msgid "Could not follow user: User not found."
+#, fuzzy
+msgid "Could not follow user: profile not found."
msgstr "نمی‌توان کاربر را دنبال کرد: کاربر یاÙت نشد."
#: actions/apifriendshipscreate.php:118
@@ -379,8 +380,9 @@ msgstr "نمی‌توان کاربر را دنبال نکرد: کاربر یاÙ
msgid "You cannot unfollow yourself."
msgstr "نمی‌توانید خودتان را دنبال کنید."
-#: actions/apifriendshipsexists.php:94
-msgid "Two user ids or screen_names must be supplied."
+#: actions/apifriendshipsexists.php:91
+#, fuzzy
+msgid "Two valid IDs or screen_names must be supplied."
msgstr "باید ۲ شناسه‌ی کاربر یا نام ظاهری وارد کنید."
#: actions/apifriendshipsshow.php:134
@@ -508,6 +510,11 @@ msgstr "%s گروه"
msgid "groups on %s"
msgstr "گروه‌ها در %s"
+#: actions/apimediaupload.php:99
+#, fuzzy
+msgid "Upload failed."
+msgstr "بارگذاری پرونده"
+
#: actions/apioauthauthorize.php:101
msgid "No oauth_token parameter provided."
msgstr "هیچ پارامتر oauth_token آماده نشده است."
@@ -651,22 +658,26 @@ msgstr "وضعیت حذ٠شد."
msgid "No status with that ID found."
msgstr "هیچ وضعیتی با آن شناسه یاÙت نشد."
-#: actions/apistatusesupdate.php:241 actions/newnotice.php:155
+#: actions/apistatusesupdate.php:221
+msgid "Client must provide a 'status' parameter with a value."
+msgstr ""
+
+#: actions/apistatusesupdate.php:242 actions/newnotice.php:155
#: lib/mailhandler.php:60
#, php-format
msgid "That's too long. Max notice size is %d chars."
msgstr "این خیلی طولانی است. بیشینهٔ طول پیام %d نویسه است."
-#: actions/apistatusesupdate.php:282 actions/apiusershow.php:96
+#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96
msgid "Not found."
msgstr "یاÙت نشد."
-#: actions/apistatusesupdate.php:305 actions/newnotice.php:178
+#: actions/apistatusesupdate.php:306 actions/newnotice.php:178
#, php-format
msgid "Max notice size is %d chars, including attachment URL."
msgstr "بیشینهٔ طول پیام %d نویسه که شامل نشانی اینترنتی پیوست هم هست."
-#: actions/apisubscriptions.php:231 actions/apisubscriptions.php:261
+#: actions/apisubscriptions.php:232 actions/apisubscriptions.php:262
msgid "Unsupported format."
msgstr "قالب پشتیبانی نشده."
@@ -720,6 +731,10 @@ msgstr "پیام‌هایی که با %s نشانه گزاری شده اند."
msgid "Updates tagged with %1$s on %2$s!"
msgstr "پیام‌های نشانه گزاری شده با %1$s در %2$s"
+#: actions/apitrends.php:87
+msgid "API method under construction."
+msgstr "روش API در دست ساخت."
+
#: actions/attachment.php:73
msgid "No such attachment."
msgstr "چنین پیوستی وجود ندارد."
@@ -773,7 +788,7 @@ msgid "Preview"
msgstr "پیش‌نمایش"
#: actions/avatarsettings.php:149 actions/showapplication.php:252
-#: lib/deleteuserform.php:66 lib/noticelist.php:648
+#: lib/deleteuserform.php:66 lib/noticelist.php:656
msgid "Delete"
msgstr "حذÙ"
@@ -1055,7 +1070,7 @@ msgid "Do not delete this notice"
msgstr "این پیام را پاک نکن"
#. TRANS: Submit button title for 'Yes' when deleting a notice.
-#: actions/deletenotice.php:158 lib/noticelist.php:648
+#: actions/deletenotice.php:158 lib/noticelist.php:656
msgid "Delete this notice"
msgstr "این پیام را پاک کن"
@@ -1334,7 +1349,8 @@ msgstr "نام‌مستعار غیر مجاز: «%s»"
msgid "Could not update group."
msgstr "نمی‌توان گروه را به‌هنگام‌سازی کرد."
-#: actions/editgroup.php:264 classes/User_group.php:496
+#. TRANS: Server exception thrown when creating group aliases failed.
+#: actions/editgroup.php:264 classes/User_group.php:514
msgid "Could not create aliases."
msgstr "نمی‌توان نام‌های مستعار را ساخت."
@@ -2476,8 +2492,9 @@ msgid "Updates matching search term \"%1$s\" on %2$s!"
msgstr "پیام‌هایی Ú©Ù‡ با جست‌و‌جوی عبارت »%1$s« در %s یاÙت شدند."
#: actions/nudge.php:85
+#, fuzzy
msgid ""
-"This user doesn't allow nudges or hasn't confirmed or set his email yet."
+"This user doesn't allow nudges or hasn't confirmed or set their email yet."
msgstr ""
"این کاربر اجازه‌ی یادآوری‌کردن را نداده است یا پست‌الکترونیک خود را تایید یا "
"تعیین نکرده است."
@@ -2555,8 +2572,8 @@ msgid "Only %s URLs over plain HTTP please."
msgstr "لطÙا تنها از نشانی‌های اینترنتی %s از راه HTTP ساده استÙاده کنید."
#. TRANS: Client error on an API request with an unsupported data format.
-#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1179
-#: lib/apiaction.php:1208 lib/apiaction.php:1325
+#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1204
+#: lib/apiaction.php:1232 lib/apiaction.php:1355
msgid "Not a supported data format."
msgstr "یک قالب دادهٔ پشتیبانی‌شده نیست."
@@ -3460,7 +3477,7 @@ msgstr "شما نمی‌توانید پیام خودتان را تکرار Ú©Ù†Û
msgid "You already repeated that notice."
msgstr "شما قبلا آن پیام را تکرار کرده‌اید."
-#: actions/repeat.php:114 lib/noticelist.php:667
+#: actions/repeat.php:114 lib/noticelist.php:675
msgid "Repeated"
msgstr "تکرار شده"
@@ -3495,10 +3512,10 @@ msgid "Replies feed for %s (Atom)"
msgstr "خوراک پاسخ‌ها برای %s (Atom)"
#: actions/replies.php:199
-#, php-format
+#, fuzzy, php-format
msgid ""
"This is the timeline showing replies to %1$s but %2$s hasn't received a "
-"notice to his attention yet."
+"notice to them yet."
msgstr ""
"این خط‌زمانی است که پاسخ‌ها به %1$s را نشان می‌دهد، اما %2$s هنوز یک پیام به "
"توجه‌اش دریاÙت نکرده است."
@@ -3513,10 +3530,10 @@ msgstr ""
"شوید یا [به گروه‌ها بپیوندید](%%action.groups%%)."
#: actions/replies.php:206
-#, php-format
+#, fuzzy, php-format
msgid ""
-"You can try to [nudge %1$s](../%2$s) or [post something to his or her "
-"attention](%%%%action.newnotice%%%%?status_textarea=%3$s)."
+"You can try to [nudge %1$s](../%2$s) or [post something to them](%%%%action."
+"newnotice%%%%?status_textarea=%3$s)."
msgstr ""
"شما می‌توانید [یادآوری %1$s](../%2$s) را امتحان کنید یا [به توجه او چیزی "
"بÙرستید](%%%%action.newnotice%%%%?status_textarea=%3$s)."
@@ -3608,7 +3625,7 @@ msgstr "سازمان"
msgid "Description"
msgstr "توصیÙ"
-#: actions/showapplication.php:192 actions/showgroup.php:444
+#: actions/showapplication.php:192 actions/showgroup.php:436
#: lib/profileaction.php:187
msgid "Statistics"
msgstr "آمار"
@@ -3696,20 +3713,20 @@ msgstr ""
"آن‌ها بگذارید."
#: actions/showfavorites.php:208
-#, php-format
+#, fuzzy, php-format
msgid ""
-"%s hasn't added any notices to his favorites yet. Post something interesting "
-"they would add to their favorites :)"
+"%s hasn't added any favorite notices yet. Post something interesting they "
+"would add to their favorites :)"
msgstr ""
"%s تاکنون هیچ پیامی را به برگزیده‌هایش اضاÙÙ‡ نکرده است. چیز جالبی بÙرستید Ú©Ù‡ "
"ممکن است به برگزیده‌هایشان اضاÙÙ‡ کنند :)"
#: actions/showfavorites.php:212
-#, php-format
+#, fuzzy, php-format
msgid ""
-"%s hasn't added any notices to his favorites yet. Why not [register an "
-"account](%%%%action.register%%%%) and then post something interesting they "
-"would add to their favorites :)"
+"%s hasn't added any favorite notices yet. Why not [register an account](%%%%"
+"action.register%%%%) and then post something interesting they would add to "
+"their favorites :)"
msgstr ""
"%s تاکنون هیچ پیامی را به برگزیده‌هایش اضاÙÙ‡ نکرده است. چرا به [ثبت کردن یک "
"حساب](%%%%action.register%%%%) اقدام نمی‌کنید و سپس چیز جالبی را که ممکن است "
@@ -3771,7 +3788,7 @@ msgstr "خوراک پیام برای گروه %s (Atom)"
msgid "FOAF for %s group"
msgstr "FOAF برای گروه %s"
-#: actions/showgroup.php:393 actions/showgroup.php:453 lib/groupnav.php:91
+#: actions/showgroup.php:393 actions/showgroup.php:445 lib/groupnav.php:91
msgid "Members"
msgstr "اعضا"
@@ -3785,11 +3802,11 @@ msgstr "هیچ"
msgid "All members"
msgstr "همهٔ اعضا"
-#: actions/showgroup.php:447
+#: actions/showgroup.php:439
msgid "Created"
msgstr "ساخته شد"
-#: actions/showgroup.php:463
+#: actions/showgroup.php:455
#, php-format
msgid ""
"**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3805,7 +3822,7 @@ msgstr ""
"می‌گذارند. [اکنون بپیوندید ](%%%%action.register%%%%) تا یکی از اعضای این "
"گروه و بلکه بیش‌تر بشوید! ([بیش‌تر بخوانید](%%%%doc.help%%%%))"
-#: actions/showgroup.php:469
+#: actions/showgroup.php:461
#, php-format
msgid ""
"**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3819,7 +3836,7 @@ msgstr ""
"است. کاربران آن پیام‌های کوتاهی را دربارهٔ زندگی و علاقه‌مندی‌هایشان به اشتراک "
"می‌گذارند. "
-#: actions/showgroup.php:497
+#: actions/showgroup.php:489
msgid "Admins"
msgstr "مدیران"
@@ -3894,10 +3911,10 @@ msgstr ""
"زمان خوبی برای شروع باشد :)"
#: actions/showstream.php:207
-#, php-format
+#, fuzzy, php-format
msgid ""
-"You can try to nudge %1$s or [post something to his or her attention](%%%%"
-"action.newnotice%%%%?status_textarea=%2$s)."
+"You can try to nudge %1$s or [post something to them](%%%%action.newnotice%%%"
+"%?status_textarea=%2$s)."
msgstr ""
"شما می‌توانید یادآوری %1$s را امتحان کنید یا [به توجه او چیزی بÙرستید](%%%%"
"action.newnotice%%%%?status_textarea=%2$s)."
@@ -4283,7 +4300,8 @@ msgstr "ذخیرهٔ تنظیمات تصویر لحظه‌ای"
msgid "You are not subscribed to that profile."
msgstr "شما مشترک آن نمایه نیستید."
-#: actions/subedit.php:83 classes/Subscription.php:132
+#. TRANS: Exception thrown when a subscription could not be stored on the server.
+#: actions/subedit.php:83 classes/Subscription.php:136
msgid "Could not save subscription."
msgstr "نمی‌توان اشتراک را ذخیره کرد."
@@ -4460,10 +4478,6 @@ msgstr "از این روش برای اÙزودن برچسب به مشترک‌ه
msgid "No such tag."
msgstr "چنین برچسبی وجود ندارد."
-#: actions/twitapitrends.php:85
-msgid "API method under construction."
-msgstr "روش API در دست ساخت."
-
#: actions/unblock.php:59
msgid "You haven't blocked that user."
msgstr "شما آن کاربر را مسدود نکرده اید."
@@ -4765,83 +4779,131 @@ msgstr "نسخه"
msgid "Author(s)"
msgstr "مؤلÙ(ها)"
-#: classes/File.php:185
+#. TRANS: Server exception thrown when a URL cannot be processed.
+#: classes/File.php:143
#, php-format
+msgid "Cannot process URL '%s'"
+msgstr ""
+
+#. TRANS: Server exception thrown when... Robin thinks something is impossible!
+#: classes/File.php:175
+msgid "Robin thinks something is impossible."
+msgstr ""
+
+#. TRANS: Message given if an upload is larger than the configured maximum.
+#. TRANS: %1$d is the byte limit for uploads, %2$d is the byte count for the uploaded file.
+#: classes/File.php:190
+#, fuzzy, php-format
msgid ""
-"No file may be larger than %d bytes and the file you sent was %d bytes. Try "
-"to upload a smaller version."
+"No file may be larger than %1$d bytes and the file you sent was %2$d bytes. "
+"Try to upload a smaller version."
msgstr ""
"هیچ پرونده‌ای نباید بزرگ‌تر از %d بایت باشد Ùˆ پرونده‌ای Ú©Ù‡ شما Ùرستادید %d بایت "
"بود. بارگذاری یک نسخهٔ کوچک‌تر را امتحان کنید."
-#: classes/File.php:195
+#. TRANS: Message given if an upload would exceed user quota.
+#. TRANS: %d (number) is the user quota in bytes.
+#: classes/File.php:202
#, php-format
msgid "A file this large would exceed your user quota of %d bytes."
msgstr ""
"یک پرونده با این حجم زیاد می‌تواند از سهمیهٔ کاربری شما از %d بایت بگذرد."
-#: classes/File.php:202
+#. TRANS: Message given id an upload would exceed a user's monthly quota.
+#. TRANS: $d (number) is the monthly user quota in bytes.
+#: classes/File.php:211
#, php-format
msgid "A file this large would exceed your monthly quota of %d bytes."
msgstr ""
"یک پرونده با این حجم زیاد می‌تواند از سهمیهٔ کاربری ماهانهٔ شما از %d بایت "
"بگذرد."
-#: classes/Group_member.php:41
+#. TRANS: Client exception thrown if a file upload does not have a valid name.
+#: classes/File.php:248 classes/File.php:263
+#, fuzzy
+msgid "Invalid filename."
+msgstr "اندازه‌ی نادرست"
+
+#. TRANS: Exception thrown when joining a group fails.
+#: classes/Group_member.php:42
msgid "Group join failed."
msgstr "پیوستن به گروه شکست خورد."
-#: classes/Group_member.php:53
+#. TRANS: Exception thrown when trying to leave a group the user is not a member of.
+#: classes/Group_member.php:55
msgid "Not part of group."
msgstr "بخشی از گروه نیست."
-#: classes/Group_member.php:60
+#. TRANS: Exception thrown when trying to leave a group fails.
+#: classes/Group_member.php:63
msgid "Group leave failed."
msgstr "ترک کردن گروه شکست خورد."
-#: classes/Local_group.php:41
+#. TRANS: Server exception thrown when updating a local group fails.
+#: classes/Local_group.php:42
msgid "Could not update local group."
msgstr "نمی‌توان گروه محلی را به‌هنگام‌سازی کرد."
-#: classes/Login_token.php:76
+#. TRANS: Exception thrown when trying creating a login token failed.
+#. TRANS: %s is the user nickname for which token creation failed.
+#: classes/Login_token.php:78
#, php-format
msgid "Could not create login token for %s"
msgstr "نمی‌توان رمز ورود را برای %s ایجاد کرد"
-#: classes/Message.php:45
+#. TRANS: Exception thrown when database name or Data Source Name could not be found.
+#: classes/Memcached_DataObject.php:533
+msgid "No database name or DSN found anywhere."
+msgstr ""
+
+#. TRANS: Client exception thrown when a user tries to send a direct message while being banned from sending them.
+#: classes/Message.php:46
msgid "You are banned from sending direct messages."
msgstr "شما از Ùرستادن پیام مستقیم مردود شده اید."
-#: classes/Message.php:61
+#. TRANS: Message given when a message could not be stored on the server.
+#: classes/Message.php:63
msgid "Could not insert message."
msgstr "پیغام نمی تواند درج گردد"
-#: classes/Message.php:71
+#. TRANS: Message given when a message could not be updated on the server.
+#: classes/Message.php:74
msgid "Could not update message with new URI."
msgstr ""
+#. TRANS: Server exception thrown when a user profile for a notice cannot be found.
+#. TRANS: %1$d is a profile ID (number), %2$d is a notice ID (number).
+#: classes/Notice.php:98
+#, php-format
+msgid "No such profile (%1$d) for notice (%2$d)."
+msgstr ""
+
#. TRANS: Server exception. %s are the error details.
-#: classes/Notice.php:182
+#: classes/Notice.php:190
#, php-format
msgid "Database error inserting hashtag: %s"
msgstr "هنگام اÙزودن برچسب خطا در پایگاه داده رخ داد: %s"
-#: classes/Notice.php:251
+#. TRANS: Client exception thrown if a notice contains too many characters.
+#: classes/Notice.php:260
msgid "Problem saving notice. Too long."
msgstr "مشکل در ذخیره کردن پیام. بسیار طولانی."
-#: classes/Notice.php:255
+#. TRANS: Client exception thrown when trying to save a notice for an unknown user.
+#: classes/Notice.php:265
msgid "Problem saving notice. Unknown user."
msgstr "مشکل در ذخیره کردن پیام. کاربر نا شناخته."
-#: classes/Notice.php:260
+#. TRANS: Client exception thrown when a user tries to post too many notices in a given time frame.
+#: classes/Notice.php:271
msgid ""
"Too many notices too fast; take a breather and post again in a few minutes."
msgstr ""
"تعداد زیادی پیام Ùˆ خیلی سریع Ùرستاده شده‌اند؛ استراحت کنید Ùˆ دقایقی دیگر "
"دوباره بÙرستید."
-#: classes/Notice.php:266
+#. TRANS: Client exception thrown when a user tries to post too many duplicate notices in a given time frame.
+#: classes/Notice.php:278
msgid ""
"Too many duplicate messages too quickly; take a breather and post again in a "
"few minutes."
@@ -4849,72 +4911,123 @@ msgstr ""
"تعداد زیاد پیام های دو نسخه ای و بسرعت؛ استراحت کنید و دقایقی دیگر مجددا "
"ارسال کنید."
-#: classes/Notice.php:272
+#. TRANS: Client exception thrown when a user tries to post while being banned.
+#: classes/Notice.php:286
msgid "You are banned from posting notices on this site."
msgstr "شما از Ùرستادن پیام در این وب‌گاه منع شده‌اید."
-#: classes/Notice.php:338 classes/Notice.php:364
+#. TRANS: Server exception thrown when a notice cannot be saved.
+#. TRANS: Server exception thrown when a notice cannot be updated.
+#: classes/Notice.php:353 classes/Notice.php:380
msgid "Problem saving notice."
msgstr "هنگام ذخیرهٔ پیام مشکلی ایجاد شد."
-#: classes/Notice.php:973
+#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups().
+#: classes/Notice.php:892
+msgid "Bad type provided to saveKnownGroups"
+msgstr ""
+
+#. TRANS: Server exception thrown when an update for a group inbox fails.
+#: classes/Notice.php:991
msgid "Problem saving group inbox."
msgstr "هنگام ذخیرهٔ صندوق ورودی گروه مشکلی رخ داد."
#. TRANS: Message used to repeat a notice. RT is the abbreviation of 'retweet'.
#. TRANS: %1$s is the repeated user's name, %2$s is the repeated notice.
-#: classes/Notice.php:1564
+#: classes/Notice.php:1614
#, php-format
msgid "RT @%1$s %2$s"
msgstr ""
-#: classes/Subscription.php:74 lib/oauthstore.php:465
+#. TRANS: Exception thrown when trying to revoke an existing role for a user that does not exist.
+#. TRANS: %1$s is the role name, %2$s is the user ID (number).
+#: classes/Profile.php:740
+#, php-format
+msgid "Cannot revoke role \"%1$s\" for user #%2$d; does not exist."
+msgstr ""
+
+#. TRANS: Exception thrown when trying to revoke a role for a user with a failing database query.
+#. TRANS: %1$s is the role name, %2$s is the user ID (number).
+#: classes/Profile.php:749
+#, php-format
+msgid "Cannot revoke role \"%1$s\" for user #%2$d; database error."
+msgstr ""
+
+#. TRANS: Exception thrown when a right for a non-existing user profile is checked.
+#: classes/Remote_profile.php:54
+#, fuzzy
+msgid "Missing profile."
+msgstr "کاربر هیچ نمایه‌ای ندارد."
+
+#. TRANS: Exception thrown when a tag cannot be saved.
+#: classes/Status_network.php:346
+#, fuzzy
+msgid "Unable to save tag."
+msgstr "نمی‌توان پیام وب‌گاه را ذخیره کرد."
+
+#. TRANS: Exception thrown when trying to subscribe while being banned from subscribing.
+#: classes/Subscription.php:75 lib/oauthstore.php:465
msgid "You have been banned from subscribing."
msgstr "شما از اشتراک منع شده‌اید."
-#: classes/Subscription.php:78
+#. TRANS: Exception thrown when trying to subscribe while already subscribed.
+#: classes/Subscription.php:80
msgid "Already subscribed!"
msgstr "قبلا اشتراک انجام شده است!"
-#: classes/Subscription.php:82
+#. TRANS: Exception thrown when trying to subscribe to a user who has blocked the subscribing user.
+#: classes/Subscription.php:85
msgid "User has blocked you."
msgstr "کاربر شما را مسدود کرده است."
-#: classes/Subscription.php:167
+#. TRANS: Exception thrown when trying to unsibscribe without a subscription.
+#: classes/Subscription.php:171
msgid "Not subscribed!"
msgstr "تایید نشده!"
-#: classes/Subscription.php:173
-msgid "Couldn't delete self-subscription."
+#. TRANS: Exception thrown when trying to unsubscribe a user from themselves.
+#: classes/Subscription.php:178
+#, fuzzy
+msgid "Could not delete self-subscription."
msgstr "نمی‌توان خود-اشتراکی را حذ٠کرد."
-#: classes/Subscription.php:200
-msgid "Couldn't delete subscription OMB token."
+#. TRANS: Exception thrown when the OMB token for a subscription could not deleted on the server.
+#: classes/Subscription.php:206
+#, fuzzy
+msgid "Could not delete subscription OMB token."
msgstr "نمی‌توان رمز اشتراک OMB را حذ٠کرد."
-#: classes/Subscription.php:211
-msgid "Couldn't delete subscription."
+#. TRANS: Exception thrown when a subscription could not be deleted on the server.
+#: classes/Subscription.php:218
+#, fuzzy
+msgid "Could not delete subscription."
msgstr "نمی‌توان اشتراک را لغو کرد."
-#: classes/User.php:363
+#. TRANS: Notice given on user registration.
+#. TRANS: %1$s is the sitename, $2$s is the registering user's nickname.
+#: classes/User.php:365
#, php-format
msgid "Welcome to %1$s, @%2$s!"
msgstr "@%2$s، به %1$s خوش آمدید!"
-#: classes/User_group.php:480
+#. TRANS: Server exception thrown when creating a group failed.
+#: classes/User_group.php:496
msgid "Could not create group."
msgstr "نمیتوان گروه را تشکیل داد"
-#: classes/User_group.php:489
+#. TRANS: Server exception thrown when updating a group URI failed.
+#: classes/User_group.php:506
#, fuzzy
msgid "Could not set group URI."
msgstr "نمیتوان گروه را تشکیل داد"
-#: classes/User_group.php:510
+#. TRANS: Server exception thrown when setting group membership failed.
+#: classes/User_group.php:529
msgid "Could not set group membership."
msgstr "نمی‌توان عضویت گروه را تعیین کرد."
-#: classes/User_group.php:524
+#. TRANS: Server exception thrown when saving local group information failed.
+#: classes/User_group.php:544
msgid "Could not save local group info."
msgstr "نمی‌توان اطلاعات گروه محلی را ذخیره کرد."
@@ -6375,7 +6488,7 @@ msgid ""
"users in conversation. People can send you messages for your eyes only."
msgstr ""
-#: lib/mailbox.php:227 lib/noticelist.php:497
+#: lib/mailbox.php:227 lib/noticelist.php:505
msgid "from"
msgstr "از"
@@ -6431,24 +6544,24 @@ msgstr "شکست خوردن در نوشتن Ùایل روی دیسک."
msgid "File upload stopped by extension."
msgstr "بارگذاری پرونده توسط اÙزونه متوق٠شد."
-#: lib/mediafile.php:179 lib/mediafile.php:216
+#: lib/mediafile.php:179 lib/mediafile.php:217
msgid "File exceeds user's quota."
msgstr "پرونده از سهمیهٔ کاربر می‌گذرد."
-#: lib/mediafile.php:196 lib/mediafile.php:233
+#: lib/mediafile.php:197 lib/mediafile.php:234
msgid "File could not be moved to destination directory."
msgstr "Ùایل نتوانست به دایرکتوری مقصد منتقل شود."
-#: lib/mediafile.php:201 lib/mediafile.php:237
+#: lib/mediafile.php:202 lib/mediafile.php:238
msgid "Could not determine file's MIME type."
msgstr "نمی‌توان Ùرمت پرونده را تعیین کرد."
-#: lib/mediafile.php:270
+#: lib/mediafile.php:318
#, php-format
msgid " Try using another %s format."
msgstr "تلاش برای امتحان نوع دیگر %s"
-#: lib/mediafile.php:275
+#: lib/mediafile.php:323
#, php-format
msgid "%s is not a supported file type on this server."
msgstr "%s یک گونهٔ پروندهٔ پیشتیبانی شده روی این کارگزار نیست."
@@ -6504,51 +6617,51 @@ msgstr ""
"دوباره تلاش کنید."
#. TRANS: Used in coordinates as abbreviation of north
-#: lib/noticelist.php:430
+#: lib/noticelist.php:436
msgid "N"
msgstr ""
#. TRANS: Used in coordinates as abbreviation of south
-#: lib/noticelist.php:432
+#: lib/noticelist.php:438
msgid "S"
msgstr ""
#. TRANS: Used in coordinates as abbreviation of east
-#: lib/noticelist.php:434
+#: lib/noticelist.php:440
msgid "E"
msgstr ""
#. TRANS: Used in coordinates as abbreviation of west
-#: lib/noticelist.php:436
+#: lib/noticelist.php:442
msgid "W"
msgstr ""
-#: lib/noticelist.php:438
+#: lib/noticelist.php:444
#, php-format
msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
msgstr ""
-#: lib/noticelist.php:447
+#: lib/noticelist.php:453
msgid "at"
msgstr "در"
-#: lib/noticelist.php:559
+#: lib/noticelist.php:567
msgid "in context"
msgstr "در زمینه"
-#: lib/noticelist.php:594
+#: lib/noticelist.php:602
msgid "Repeated by"
msgstr "تکرار از"
-#: lib/noticelist.php:621
+#: lib/noticelist.php:629
msgid "Reply to this notice"
msgstr "به این پیام پاسخ دهید"
-#: lib/noticelist.php:622
+#: lib/noticelist.php:630
msgid "Reply"
msgstr "پاسخ"
-#: lib/noticelist.php:666
+#: lib/noticelist.php:674
msgid "Notice repeated"
msgstr "پیام تکرار شد"
@@ -6806,9 +6919,8 @@ msgid "This server cannot handle theme uploads without ZIP support."
msgstr ""
#: lib/themeuploader.php:58 lib/themeuploader.php:61
-#, fuzzy
-msgid "Theme upload missing or failed."
-msgstr "هنگام بارگذاری پرونده خطای سیستمی رخ داد."
+msgid "The theme file is missing or the upload failed."
+msgstr ""
#: lib/themeuploader.php:91 lib/themeuploader.php:102
#: lib/themeuploader.php:253 lib/themeuploader.php:257
diff --git a/locale/fi/LC_MESSAGES/statusnet.po b/locale/fi/LC_MESSAGES/statusnet.po
index 2b5f91e41..a087c5777 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-06-16 22:18+0000\n"
-"PO-Revision-Date: 2010-06-21 18:03:30+0000\n"
+"POT-Creation-Date: 2010-08-03 13:21+0000\n"
+"PO-Revision-Date: 2010-08-03 13:21:55+0000\n"
"Language-Team: Finnish\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.17alpha (r68367); Translate extension (2010-06-12)\n"
+"X-Generator: MediaWiki 1.17alpha (r70381); Translate extension (2010-07-21)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: fi\n"
"X-Message-Group: out-statusnet\n"
@@ -107,7 +107,7 @@ msgstr "Sivua ei ole."
#: actions/apidirectmessagenew.php:74 actions/apigroupcreate.php:113
#: actions/apigroupismember.php:91 actions/apigroupjoin.php:100
#: actions/apigroupleave.php:100 actions/apigrouplist.php:73
-#: actions/apistatusesupdate.php:228 actions/apisubscriptions.php:87
+#: actions/apistatusesupdate.php:229 actions/apisubscriptions.php:87
#: actions/apitimelinefavorites.php:72 actions/apitimelinefriends.php:174
#: actions/apitimelinehome.php:80 actions/apitimelinementions.php:80
#: actions/apitimelineuser.php:82 actions/avatarbynickname.php:75
@@ -178,8 +178,8 @@ msgstr ""
#: actions/all.php:146
#, fuzzy, 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)."
+"You can try to [nudge %1$s](../%2$s) from their profile or [post something "
+"to them](%%%%action.newnotice%%%%?status_textarea=%3$s)."
msgstr ""
"Ole ensimmäinen joka [lähettää päivityksen tästä aiheesta] (%%%%action."
"newnotice%%%%?status_textarea=%s)!"
@@ -188,7 +188,7 @@ msgstr ""
#, php-format
msgid ""
"Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
-"post a notice to his or her attention."
+"post a notice to them."
msgstr ""
#. TRANS: H1 text
@@ -221,7 +221,7 @@ msgstr "Käyttäjän %1$s ja kavereiden päivitykset palvelussa %2$s!"
#: actions/apistatusesshow.php:109 actions/apistatusnetconfig.php:141
#: actions/apistatusnetversion.php:93 actions/apisubscriptions.php:111
#: actions/apitimelinefavorites.php:174 actions/apitimelinefriends.php:271
-#: actions/apitimelinegroup.php:152 actions/apitimelinehome.php:175
+#: actions/apitimelinegroup.php:154 actions/apitimelinehome.php:175
#: actions/apitimelinementions.php:174 actions/apitimelinepublic.php:241
#: actions/apitimelineretweetedtome.php:121
#: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161
@@ -272,7 +272,7 @@ msgstr "Ei voitu tallentaa profiilia."
#: actions/apiaccountupdateprofilebackgroundimage.php:108
#: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80
-#: actions/apistatusesupdate.php:211 actions/avatarsettings.php:257
+#: actions/apistatusesupdate.php:212 actions/avatarsettings.php:257
#: actions/designadminpanel.php:123 actions/editapplication.php:118
#: actions/newapplication.php:101 actions/newnotice.php:94
#: lib/designsettings.php:283
@@ -374,7 +374,8 @@ msgid "Could not delete favorite."
msgstr "Ei voitu poistaa suosikkia."
#: actions/apifriendshipscreate.php:109
-msgid "Could not follow user: User not found."
+#, fuzzy
+msgid "Could not follow user: profile not found."
msgstr "Ei voitu tilata käyttäjää: Käyttäjää ei löytynyt."
#: actions/apifriendshipscreate.php:118
@@ -391,8 +392,9 @@ msgstr "Ei voitu lopettaa tilausta: Käyttäjää ei löytynyt."
msgid "You cannot unfollow yourself."
msgstr "Et voi lopettaa itsesi tilausta!"
-#: actions/apifriendshipsexists.php:94
-msgid "Two user ids or screen_names must be supplied."
+#: actions/apifriendshipsexists.php:91
+#, fuzzy
+msgid "Two valid IDs or screen_names must be supplied."
msgstr "Kaksi käyttäjätunnusta tai nimeä täytyy antaa."
#: actions/apifriendshipsshow.php:134
@@ -525,6 +527,11 @@ msgstr "Käyttäjän %s ryhmät"
msgid "groups on %s"
msgstr "Ryhmän toiminnot"
+#: actions/apimediaupload.php:99
+#, fuzzy
+msgid "Upload failed."
+msgstr "Lataa"
+
#: actions/apioauthauthorize.php:101
msgid "No oauth_token parameter provided."
msgstr ""
@@ -673,22 +680,26 @@ msgstr "Päivitys poistettu."
msgid "No status with that ID found."
msgstr "Käyttäjätunnukselle ei löytynyt statusviestiä."
-#: actions/apistatusesupdate.php:241 actions/newnotice.php:155
+#: actions/apistatusesupdate.php:221
+msgid "Client must provide a 'status' parameter with a value."
+msgstr ""
+
+#: actions/apistatusesupdate.php:242 actions/newnotice.php:155
#: lib/mailhandler.php:60
#, php-format
msgid "That's too long. Max notice size is %d chars."
msgstr "Päivitys on liian pitkä. Maksimipituus on %d merkkiä."
-#: actions/apistatusesupdate.php:282 actions/apiusershow.php:96
+#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96
msgid "Not found."
msgstr "Ei löytynyt."
-#: actions/apistatusesupdate.php:305 actions/newnotice.php:178
+#: actions/apistatusesupdate.php:306 actions/newnotice.php:178
#, php-format
msgid "Max notice size is %d chars, including attachment URL."
msgstr "Maksimikoko päivitykselle on %d merkkiä, mukaan lukien URL-osoite."
-#: actions/apisubscriptions.php:231 actions/apisubscriptions.php:261
+#: actions/apisubscriptions.php:232 actions/apisubscriptions.php:262
msgid "Unsupported format."
msgstr "Formaattia ei ole tuettu."
@@ -743,6 +754,10 @@ msgstr "Päivitykset joilla on tagi %s"
msgid "Updates tagged with %1$s on %2$s!"
msgstr "Käyttäjän %1$s päivitykset palvelussa %2$s!"
+#: actions/apitrends.php:87
+msgid "API method under construction."
+msgstr "API-metodi on työn alla!"
+
#: actions/attachment.php:73
msgid "No such attachment."
msgstr "Liitettä ei ole."
@@ -796,7 +811,7 @@ msgid "Preview"
msgstr "Esikatselu"
#: actions/avatarsettings.php:149 actions/showapplication.php:252
-#: lib/deleteuserform.php:66 lib/noticelist.php:648
+#: lib/deleteuserform.php:66 lib/noticelist.php:656
msgid "Delete"
msgstr "Poista"
@@ -1083,7 +1098,7 @@ msgid "Do not delete this notice"
msgstr "Älä poista tätä päivitystä"
#. TRANS: Submit button title for 'Yes' when deleting a notice.
-#: actions/deletenotice.php:158 lib/noticelist.php:648
+#: actions/deletenotice.php:158 lib/noticelist.php:656
msgid "Delete this notice"
msgstr "Poista tämä päivitys"
@@ -1380,7 +1395,8 @@ msgstr "Virheellinen alias: \"%s\""
msgid "Could not update group."
msgstr "Ei voitu päivittää ryhmää."
-#: actions/editgroup.php:264 classes/User_group.php:496
+#. TRANS: Server exception thrown when creating group aliases failed.
+#: actions/editgroup.php:264 classes/User_group.php:514
msgid "Could not create aliases."
msgstr "Ei voitu lisätä aliasta."
@@ -1421,7 +1437,6 @@ msgstr "Tämän hetken vahvistettu sähköpostiosoite."
#: actions/emailsettings.php:115 actions/emailsettings.php:158
#: actions/imsettings.php:116 actions/smssettings.php:124
#: actions/smssettings.php:180
-#, fuzzy
msgctxt "BUTTON"
msgid "Remove"
msgstr "Poista"
@@ -2555,8 +2570,9 @@ msgid "Updates matching search term \"%1$s\" on %2$s!"
msgstr "Kaikki päivitykset hakuehdolla \"%s\""
#: actions/nudge.php:85
+#, fuzzy
msgid ""
-"This user doesn't allow nudges or hasn't confirmed or set his email yet."
+"This user doesn't allow nudges or hasn't confirmed or set their email yet."
msgstr ""
"Käyttäjä ei ole sallinut tönäisyjä tai ei ole vahvistanut "
"sähköpostiosoitettaan."
@@ -2638,8 +2654,8 @@ msgid "Only %s URLs over plain HTTP please."
msgstr ""
#. TRANS: Client error on an API request with an unsupported data format.
-#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1179
-#: lib/apiaction.php:1208 lib/apiaction.php:1325
+#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1204
+#: lib/apiaction.php:1232 lib/apiaction.php:1355
msgid "Not a supported data format."
msgstr "Tuo ei ole tuettu tietomuoto."
@@ -3568,7 +3584,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:667
+#: actions/repeat.php:114 lib/noticelist.php:675
#, fuzzy
msgid "Repeated"
msgstr "Luotu"
@@ -3608,7 +3624,7 @@ msgstr "Päivityksien syöte käyttäjälle %s"
#, fuzzy, php-format
msgid ""
"This is the timeline showing replies to %1$s but %2$s hasn't received a "
-"notice to his attention yet."
+"notice to them yet."
msgstr ""
"Tämä on käyttäjän %s aikajana, mutta %s ei ole lähettänyt vielä yhtään "
"päivitystä."
@@ -3623,8 +3639,8 @@ msgstr ""
#: actions/replies.php:206
#, fuzzy, php-format
msgid ""
-"You can try to [nudge %1$s](../%2$s) or [post something to his or her "
-"attention](%%%%action.newnotice%%%%?status_textarea=%3$s)."
+"You can try to [nudge %1$s](../%2$s) or [post something to them](%%%%action."
+"newnotice%%%%?status_textarea=%3$s)."
msgstr ""
"Ole ensimmäinen joka [lähettää päivityksen tästä aiheesta] (%%%%action."
"newnotice%%%%?status_textarea=%s)!"
@@ -3726,7 +3742,7 @@ msgstr "Sivutus"
msgid "Description"
msgstr "Kuvaus"
-#: actions/showapplication.php:192 actions/showgroup.php:444
+#: actions/showapplication.php:192 actions/showgroup.php:436
#: lib/profileaction.php:187
msgid "Statistics"
msgstr "Tilastot"
@@ -3812,16 +3828,16 @@ msgstr ""
#: actions/showfavorites.php:208
#, php-format
msgid ""
-"%s hasn't added any notices to his favorites yet. Post something interesting "
-"they would add to their favorites :)"
+"%s hasn't added any favorite notices yet. Post something interesting they "
+"would add to their favorites :)"
msgstr ""
#: actions/showfavorites.php:212
#, php-format
msgid ""
-"%s hasn't added any notices to his favorites yet. Why not [register an "
-"account](%%%%action.register%%%%) and then post something interesting they "
-"would add to their favorites :)"
+"%s hasn't added any favorite notices yet. Why not [register an account](%%%%"
+"action.register%%%%) and then post something interesting they would add to "
+"their favorites :)"
msgstr ""
#: actions/showfavorites.php:243
@@ -3880,7 +3896,7 @@ msgstr "Syöte ryhmän %s päivityksille (Atom)"
msgid "FOAF for %s group"
msgstr "Käyttäjän %s lähetetyt viestit"
-#: actions/showgroup.php:393 actions/showgroup.php:453 lib/groupnav.php:91
+#: actions/showgroup.php:393 actions/showgroup.php:445 lib/groupnav.php:91
msgid "Members"
msgstr "Jäsenet"
@@ -3894,11 +3910,11 @@ msgstr "(Tyhjä)"
msgid "All members"
msgstr "Kaikki jäsenet"
-#: actions/showgroup.php:447
+#: actions/showgroup.php:439
msgid "Created"
msgstr "Luotu"
-#: actions/showgroup.php:463
+#: actions/showgroup.php:455
#, php-format
msgid ""
"**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3908,7 +3924,7 @@ msgid ""
"of this group and many more! ([Read more](%%%%doc.help%%%%))"
msgstr ""
-#: actions/showgroup.php:469
+#: actions/showgroup.php:461
#, fuzzy, php-format
msgid ""
"**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3919,7 +3935,7 @@ msgstr ""
"**%s** on ryhmä palvelussa %%%%site.name%%%%, joka on [mikroblogauspalvelu]"
"(http://en.wikipedia.org/wiki/Micro-blogging)"
-#: actions/showgroup.php:497
+#: actions/showgroup.php:489
msgid "Admins"
msgstr "Ylläpitäjät"
@@ -3996,8 +4012,8 @@ msgstr ""
#: actions/showstream.php:207
#, fuzzy, php-format
msgid ""
-"You can try to nudge %1$s or [post something to his or her attention](%%%%"
-"action.newnotice%%%%?status_textarea=%2$s)."
+"You can try to nudge %1$s or [post something to them](%%%%action.newnotice%%%"
+"%?status_textarea=%2$s)."
msgstr ""
"Ole ensimmäinen joka [lähettää päivityksen tästä aiheesta] (%%%%action."
"newnotice%%%%?status_textarea=%s)!"
@@ -4399,7 +4415,8 @@ msgstr "Profiilikuva-asetukset"
msgid "You are not subscribed to that profile."
msgstr "Et ole tilannut tämän käyttäjän päivityksiä."
-#: actions/subedit.php:83 classes/Subscription.php:132
+#. TRANS: Exception thrown when a subscription could not be stored on the server.
+#: actions/subedit.php:83 classes/Subscription.php:136
msgid "Could not save subscription."
msgstr "Tilausta ei onnistuttu tallentamaan."
@@ -4572,10 +4589,6 @@ msgstr ""
msgid "No such tag."
msgstr "Tuota tagia ei ole."
-#: actions/twitapitrends.php:85
-msgid "API method under construction."
-msgstr "API-metodi on työn alla!"
-
#: actions/unblock.php:59
#, fuzzy
msgid "You haven't blocked that user."
@@ -4887,84 +4900,132 @@ msgstr "Omat"
msgid "Author(s)"
msgstr ""
-#: classes/File.php:185
+#. TRANS: Server exception thrown when a URL cannot be processed.
+#: classes/File.php:143
+#, php-format
+msgid "Cannot process URL '%s'"
+msgstr ""
+
+#. TRANS: Server exception thrown when... Robin thinks something is impossible!
+#: classes/File.php:175
+msgid "Robin thinks something is impossible."
+msgstr ""
+
+#. TRANS: Message given if an upload is larger than the configured maximum.
+#. TRANS: %1$d is the byte limit for uploads, %2$d is the byte count for the uploaded file.
+#: classes/File.php:190
#, php-format
msgid ""
-"No file may be larger than %d bytes and the file you sent was %d bytes. Try "
-"to upload a smaller version."
+"No file may be larger than %1$d bytes and the file you sent was %2$d bytes. "
+"Try to upload a smaller version."
msgstr ""
-#: classes/File.php:195
+#. TRANS: Message given if an upload would exceed user quota.
+#. TRANS: %d (number) is the user quota in bytes.
+#: classes/File.php:202
#, php-format
msgid "A file this large would exceed your user quota of %d bytes."
msgstr ""
-#: classes/File.php:202
+#. TRANS: Message given id an upload would exceed a user's monthly quota.
+#. TRANS: $d (number) is the monthly user quota in bytes.
+#: classes/File.php:211
#, php-format
msgid "A file this large would exceed your monthly quota of %d bytes."
msgstr ""
-#: classes/Group_member.php:41
+#. TRANS: Client exception thrown if a file upload does not have a valid name.
+#: classes/File.php:248 classes/File.php:263
+#, fuzzy
+msgid "Invalid filename."
+msgstr "Koko ei kelpaa."
+
+#. TRANS: Exception thrown when joining a group fails.
+#: classes/Group_member.php:42
#, fuzzy
msgid "Group join failed."
msgstr "Ryhmän profiili"
-#: classes/Group_member.php:53
+#. TRANS: Exception thrown when trying to leave a group the user is not a member of.
+#: classes/Group_member.php:55
#, fuzzy
msgid "Not part of group."
msgstr "Ei voitu päivittää ryhmää."
-#: classes/Group_member.php:60
+#. TRANS: Exception thrown when trying to leave a group fails.
+#: classes/Group_member.php:63
#, fuzzy
msgid "Group leave failed."
msgstr "Ryhmän profiili"
-#: classes/Local_group.php:41
+#. TRANS: Server exception thrown when updating a local group fails.
+#: classes/Local_group.php:42
#, fuzzy
msgid "Could not update local group."
msgstr "Ei voitu päivittää ryhmää."
-#: classes/Login_token.php:76
+#. TRANS: Exception thrown when trying creating a login token failed.
+#. TRANS: %s is the user nickname for which token creation failed.
+#: classes/Login_token.php:78
#, fuzzy, php-format
msgid "Could not create login token for %s"
msgstr "Ei voitu lisätä aliasta."
-#: classes/Message.php:45
+#. TRANS: Exception thrown when database name or Data Source Name could not be found.
+#: classes/Memcached_DataObject.php:533
+msgid "No database name or DSN found anywhere."
+msgstr ""
+
+#. TRANS: Client exception thrown when a user tries to send a direct message while being banned from sending them.
+#: classes/Message.php:46
#, fuzzy
msgid "You are banned from sending direct messages."
msgstr "Tapahtui virhe suoran viestin lähetyksessä."
-#: classes/Message.php:61
+#. TRANS: Message given when a message could not be stored on the server.
+#: classes/Message.php:63
msgid "Could not insert message."
msgstr "Viestin tallennus ei onnistunut."
-#: classes/Message.php:71
+#. TRANS: Message given when a message could not be updated on the server.
+#: classes/Message.php:74
msgid "Could not update message with new URI."
msgstr "Viestin päivittäminen uudella URI-osoitteella ei onnistunut."
+#. TRANS: Server exception thrown when a user profile for a notice cannot be found.
+#. TRANS: %1$d is a profile ID (number), %2$d is a notice ID (number).
+#: classes/Notice.php:98
+#, php-format
+msgid "No such profile (%1$d) for notice (%2$d)."
+msgstr ""
+
#. TRANS: Server exception. %s are the error details.
-#: classes/Notice.php:182
+#: classes/Notice.php:190
#, fuzzy, php-format
msgid "Database error inserting hashtag: %s"
msgstr "Tietokantavirhe tallennettaessa risutagiä: %s"
-#: classes/Notice.php:251
+#. TRANS: Client exception thrown if a notice contains too many characters.
+#: classes/Notice.php:260
#, fuzzy
msgid "Problem saving notice. Too long."
msgstr "Ongelma päivityksen tallentamisessa."
-#: classes/Notice.php:255
+#. TRANS: Client exception thrown when trying to save a notice for an unknown user.
+#: classes/Notice.php:265
msgid "Problem saving notice. Unknown user."
msgstr "Virhe tapahtui päivityksen tallennuksessa. Tuntematon käyttäjä."
-#: classes/Notice.php:260
+#. TRANS: Client exception thrown when a user tries to post too many notices in a given time frame.
+#: classes/Notice.php:271
msgid ""
"Too many notices too fast; take a breather and post again in a few minutes."
msgstr ""
"Liian monta päivitystä liian nopeasti; pidä pieni hengähdystauko ja jatka "
"päivityksien lähettämista muutaman minuutin päästä."
-#: classes/Notice.php:266
+#. TRANS: Client exception thrown when a user tries to post too many duplicate notices in a given time frame.
+#: classes/Notice.php:278
msgid ""
"Too many duplicate messages too quickly; take a breather and post again in a "
"few minutes."
@@ -4972,77 +5033,126 @@ msgstr ""
"Liian monta päivitystä liian nopeasti; pidä pieni hengähdystauko ja jatka "
"päivityksien lähettämista muutaman minuutin päästä."
-#: classes/Notice.php:272
+#. TRANS: Client exception thrown when a user tries to post while being banned.
+#: classes/Notice.php:286
msgid "You are banned from posting notices on this site."
msgstr "Päivityksesi tähän palveluun on estetty."
-#: classes/Notice.php:338 classes/Notice.php:364
+#. TRANS: Server exception thrown when a notice cannot be saved.
+#. TRANS: Server exception thrown when a notice cannot be updated.
+#: classes/Notice.php:353 classes/Notice.php:380
msgid "Problem saving notice."
msgstr "Ongelma päivityksen tallentamisessa."
-#: classes/Notice.php:973
+#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups().
+#: classes/Notice.php:892
+msgid "Bad type provided to saveKnownGroups"
+msgstr ""
+
+#. TRANS: Server exception thrown when an update for a group inbox fails.
+#: classes/Notice.php:991
#, fuzzy
msgid "Problem saving group inbox."
msgstr "Ongelma päivityksen tallentamisessa."
#. TRANS: Message used to repeat a notice. RT is the abbreviation of 'retweet'.
#. TRANS: %1$s is the repeated user's name, %2$s is the repeated notice.
-#: classes/Notice.php:1564
+#: classes/Notice.php:1614
#, fuzzy, php-format
msgid "RT @%1$s %2$s"
msgstr "%1$s (%2$s)"
-#: classes/Subscription.php:74 lib/oauthstore.php:465
+#. TRANS: Exception thrown when trying to revoke an existing role for a user that does not exist.
+#. TRANS: %1$s is the role name, %2$s is the user ID (number).
+#: classes/Profile.php:740
+#, php-format
+msgid "Cannot revoke role \"%1$s\" for user #%2$d; does not exist."
+msgstr ""
+
+#. TRANS: Exception thrown when trying to revoke a role for a user with a failing database query.
+#. TRANS: %1$s is the role name, %2$s is the user ID (number).
+#: classes/Profile.php:749
+#, php-format
+msgid "Cannot revoke role \"%1$s\" for user #%2$d; database error."
+msgstr ""
+
+#. TRANS: Exception thrown when a right for a non-existing user profile is checked.
+#: classes/Remote_profile.php:54
+#, fuzzy
+msgid "Missing profile."
+msgstr "Käyttäjällä ei ole profiilia."
+
+#. TRANS: Exception thrown when a tag cannot be saved.
+#: classes/Status_network.php:346
+#, fuzzy
+msgid "Unable to save tag."
+msgstr "Twitter-asetuksia ei voitu tallentaa!"
+
+#. TRANS: Exception thrown when trying to subscribe while being banned from subscribing.
+#: classes/Subscription.php:75 lib/oauthstore.php:465
#, fuzzy
msgid "You have been banned from subscribing."
msgstr "Käyttäjä on estänyt sinua tilaamasta päivityksiä."
-#: classes/Subscription.php:78
+#. TRANS: Exception thrown when trying to subscribe while already subscribed.
+#: classes/Subscription.php:80
msgid "Already subscribed!"
msgstr ""
-#: classes/Subscription.php:82
+#. TRANS: Exception thrown when trying to subscribe to a user who has blocked the subscribing user.
+#: classes/Subscription.php:85
msgid "User has blocked you."
msgstr "Käyttäjä on asettanut eston sinulle."
-#: classes/Subscription.php:167
+#. TRANS: Exception thrown when trying to unsibscribe without a subscription.
+#: classes/Subscription.php:171
#, fuzzy
msgid "Not subscribed!"
msgstr "Ei ole tilattu!."
-#: classes/Subscription.php:173
+#. TRANS: Exception thrown when trying to unsubscribe a user from themselves.
+#: classes/Subscription.php:178
#, fuzzy
-msgid "Couldn't delete self-subscription."
+msgid "Could not delete self-subscription."
msgstr "Ei voitu poistaa tilausta."
-#: classes/Subscription.php:200
+#. TRANS: Exception thrown when the OMB token for a subscription could not deleted on the server.
+#: classes/Subscription.php:206
#, fuzzy
-msgid "Couldn't delete subscription OMB token."
+msgid "Could not delete subscription OMB token."
msgstr "Ei voitu poistaa tilausta."
-#: classes/Subscription.php:211
-msgid "Couldn't delete subscription."
+#. TRANS: Exception thrown when a subscription could not be deleted on the server.
+#: classes/Subscription.php:218
+#, fuzzy
+msgid "Could not delete subscription."
msgstr "Ei voitu poistaa tilausta."
-#: classes/User.php:363
+#. TRANS: Notice given on user registration.
+#. TRANS: %1$s is the sitename, $2$s is the registering user's nickname.
+#: classes/User.php:365
#, fuzzy, php-format
msgid "Welcome to %1$s, @%2$s!"
msgstr "Viesti käyttäjälle %1$s, %2$s"
-#: classes/User_group.php:480
+#. TRANS: Server exception thrown when creating a group failed.
+#: classes/User_group.php:496
msgid "Could not create group."
msgstr "Ryhmän luonti ei onnistunut."
-#: classes/User_group.php:489
+#. TRANS: Server exception thrown when updating a group URI failed.
+#: classes/User_group.php:506
#, fuzzy
msgid "Could not set group URI."
msgstr "Ryhmän jäsenyystietoja ei voitu asettaa."
-#: classes/User_group.php:510
+#. TRANS: Server exception thrown when setting group membership failed.
+#: classes/User_group.php:529
msgid "Could not set group membership."
msgstr "Ryhmän jäsenyystietoja ei voitu asettaa."
-#: classes/User_group.php:524
+#. TRANS: Server exception thrown when saving local group information failed.
+#: classes/User_group.php:544
#, fuzzy
msgid "Could not save local group info."
msgstr "Tilausta ei onnistuttu tallentamaan."
@@ -6435,7 +6545,7 @@ msgid ""
"users in conversation. People can send you messages for your eyes only."
msgstr ""
-#: lib/mailbox.php:227 lib/noticelist.php:497
+#: lib/mailbox.php:227 lib/noticelist.php:505
#, fuzzy
msgid "from"
msgstr " lähteestä "
@@ -6491,25 +6601,25 @@ msgstr ""
msgid "File upload stopped by extension."
msgstr ""
-#: lib/mediafile.php:179 lib/mediafile.php:216
+#: lib/mediafile.php:179 lib/mediafile.php:217
msgid "File exceeds user's quota."
msgstr ""
-#: lib/mediafile.php:196 lib/mediafile.php:233
+#: lib/mediafile.php:197 lib/mediafile.php:234
msgid "File could not be moved to destination directory."
msgstr ""
-#: lib/mediafile.php:201 lib/mediafile.php:237
+#: lib/mediafile.php:202 lib/mediafile.php:238
#, fuzzy
msgid "Could not determine file's MIME type."
msgstr "Julkista päivitysvirtaa ei saatu."
-#: lib/mediafile.php:270
+#: lib/mediafile.php:318
#, php-format
msgid " Try using another %s format."
msgstr ""
-#: lib/mediafile.php:275
+#: lib/mediafile.php:323
#, php-format
msgid "%s is not a supported file type on this server."
msgstr ""
@@ -6566,54 +6676,54 @@ msgid ""
msgstr ""
#. TRANS: Used in coordinates as abbreviation of north
-#: lib/noticelist.php:430
+#: lib/noticelist.php:436
#, fuzzy
msgid "N"
msgstr "Ei"
#. TRANS: Used in coordinates as abbreviation of south
-#: lib/noticelist.php:432
+#: lib/noticelist.php:438
msgid "S"
msgstr ""
#. TRANS: Used in coordinates as abbreviation of east
-#: lib/noticelist.php:434
+#: lib/noticelist.php:440
msgid "E"
msgstr ""
#. TRANS: Used in coordinates as abbreviation of west
-#: lib/noticelist.php:436
+#: lib/noticelist.php:442
msgid "W"
msgstr ""
-#: lib/noticelist.php:438
+#: lib/noticelist.php:444
#, php-format
msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
msgstr ""
-#: lib/noticelist.php:447
+#: lib/noticelist.php:453
msgid "at"
msgstr ""
-#: lib/noticelist.php:559
+#: lib/noticelist.php:567
#, fuzzy
msgid "in context"
msgstr "Ei sisältöä!"
-#: lib/noticelist.php:594
+#: lib/noticelist.php:602
#, fuzzy
msgid "Repeated by"
msgstr "Luotu"
-#: lib/noticelist.php:621
+#: lib/noticelist.php:629
msgid "Reply to this notice"
msgstr "Vastaa tähän päivitykseen"
-#: lib/noticelist.php:622
+#: lib/noticelist.php:630
msgid "Reply"
msgstr "Vastaus"
-#: lib/noticelist.php:666
+#: lib/noticelist.php:674
#, fuzzy
msgid "Notice repeated"
msgstr "Päivitys on poistettu."
@@ -6884,9 +6994,8 @@ msgid "This server cannot handle theme uploads without ZIP support."
msgstr ""
#: lib/themeuploader.php:58 lib/themeuploader.php:61
-#, fuzzy
-msgid "Theme upload missing or failed."
-msgstr "Tiedoston lähetyksessä tapahtui järjestelmävirhe."
+msgid "The theme file is missing or the upload failed."
+msgstr ""
#: lib/themeuploader.php:91 lib/themeuploader.php:102
#: lib/themeuploader.php:253 lib/themeuploader.php:257
diff --git a/locale/fr/LC_MESSAGES/statusnet.po b/locale/fr/LC_MESSAGES/statusnet.po
index 5adb8b360..3246555e1 100644
--- a/locale/fr/LC_MESSAGES/statusnet.po
+++ b/locale/fr/LC_MESSAGES/statusnet.po
@@ -15,12 +15,12 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-06-16 22:18+0000\n"
-"PO-Revision-Date: 2010-06-21 18:03:40+0000\n"
+"POT-Creation-Date: 2010-08-03 13:21+0000\n"
+"PO-Revision-Date: 2010-08-03 13:21:58+0000\n"
"Language-Team: French\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.17alpha (r68367); Translate extension (2010-06-12)\n"
+"X-Generator: MediaWiki 1.17alpha (r70381); Translate extension (2010-07-21)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: fr\n"
"X-Message-Group: out-statusnet\n"
@@ -104,7 +104,7 @@ msgstr "Page non trouvée."
#: actions/apidirectmessagenew.php:74 actions/apigroupcreate.php:113
#: actions/apigroupismember.php:91 actions/apigroupjoin.php:100
#: actions/apigroupleave.php:100 actions/apigrouplist.php:73
-#: actions/apistatusesupdate.php:228 actions/apisubscriptions.php:87
+#: actions/apistatusesupdate.php:229 actions/apisubscriptions.php:87
#: actions/apitimelinefavorites.php:72 actions/apitimelinefriends.php:174
#: actions/apitimelinehome.php:80 actions/apitimelinementions.php:80
#: actions/apitimelineuser.php:82 actions/avatarbynickname.php:75
@@ -175,8 +175,8 @@ msgstr ""
#: actions/all.php:146
#, 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)."
+"You can try to [nudge %1$s](../%2$s) from their profile or [post something "
+"to them](%%%%action.newnotice%%%%?status_textarea=%3$s)."
msgstr ""
"Vous pouvez essayer de [faire un clin d’œil à %1$s](../%2$s) depuis son "
"profil ou [poster quelque chose à son intention](%%%%action.newnotice%%%%?"
@@ -186,9 +186,9 @@ msgstr ""
#, php-format
msgid ""
"Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
-"post a notice to his or her attention."
+"post a notice to them."
msgstr ""
-"Pourquoi ne pas [créer un compte](%%%%action.register%%%%) et ensuite faire "
+"Pourquoi ne pas [créer un compte](%%%%action.register%%%%) et faire ensuite "
"un clin d’œil à %s ou poster un avis à son intention."
#. TRANS: H1 text
@@ -221,7 +221,7 @@ msgstr "Statuts de %1$s et ses amis dans %2$s!"
#: actions/apistatusesshow.php:109 actions/apistatusnetconfig.php:141
#: actions/apistatusnetversion.php:93 actions/apisubscriptions.php:111
#: actions/apitimelinefavorites.php:174 actions/apitimelinefriends.php:271
-#: actions/apitimelinegroup.php:152 actions/apitimelinehome.php:175
+#: actions/apitimelinegroup.php:154 actions/apitimelinehome.php:175
#: actions/apitimelinementions.php:174 actions/apitimelinepublic.php:241
#: actions/apitimelineretweetedtome.php:121
#: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161
@@ -271,7 +271,7 @@ msgstr "Impossible d’enregistrer le profil."
#: actions/apiaccountupdateprofilebackgroundimage.php:108
#: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80
-#: actions/apistatusesupdate.php:211 actions/avatarsettings.php:257
+#: actions/apistatusesupdate.php:212 actions/avatarsettings.php:257
#: actions/designadminpanel.php:123 actions/editapplication.php:118
#: actions/newapplication.php:101 actions/newnotice.php:94
#: lib/designsettings.php:283
@@ -371,8 +371,8 @@ msgid "Could not delete favorite."
msgstr "Impossible de supprimer le favori."
#: actions/apifriendshipscreate.php:109
-msgid "Could not follow user: User not found."
-msgstr "Impossible de suivre l’utilisateur : Utilisateur non trouvé."
+msgid "Could not follow user: profile not found."
+msgstr "Impossible de suivre l’utilisateur : profil non trouvé."
#: actions/apifriendshipscreate.php:118
#, php-format
@@ -387,9 +387,9 @@ msgstr "Impossible de ne plus suivre l’utilisateur : utilisateur non trouvé."
msgid "You cannot unfollow yourself."
msgstr "Vous ne pouvez pas ne plus vous suivre vous-même."
-#: actions/apifriendshipsexists.php:94
-msgid "Two user ids or screen_names must be supplied."
-msgstr "Vous devez fournir 2 identifiants ou pseudos."
+#: actions/apifriendshipsexists.php:91
+msgid "Two valid IDs or screen_names must be supplied."
+msgstr "Vous devez fournir deux identifiants ou pseudonymes."
#: actions/apifriendshipsshow.php:134
msgid "Could not determine source user."
@@ -518,6 +518,10 @@ msgstr "Groupes de %s"
msgid "groups on %s"
msgstr "groupes sur %s"
+#: actions/apimediaupload.php:99
+msgid "Upload failed."
+msgstr "Échec du téléversement."
+
#: actions/apioauthauthorize.php:101
msgid "No oauth_token parameter provided."
msgstr "Paramètre oauth_token non fourni."
@@ -668,24 +672,28 @@ msgstr "Statut supprimé."
msgid "No status with that ID found."
msgstr "Aucun statut trouvé avec cet identifiant."
-#: actions/apistatusesupdate.php:241 actions/newnotice.php:155
+#: actions/apistatusesupdate.php:221
+msgid "Client must provide a 'status' parameter with a value."
+msgstr "Le client doit fournir un paramètre « statut » avec une valeur."
+
+#: actions/apistatusesupdate.php:242 actions/newnotice.php:155
#: lib/mailhandler.php:60
#, php-format
msgid "That's too long. Max notice size is %d chars."
msgstr "C’est trop long ! La taille maximale de l’avis est de %d caractères."
-#: actions/apistatusesupdate.php:282 actions/apiusershow.php:96
+#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96
msgid "Not found."
msgstr "Non trouvé."
-#: actions/apistatusesupdate.php:305 actions/newnotice.php:178
+#: actions/apistatusesupdate.php:306 actions/newnotice.php:178
#, php-format
msgid "Max notice size is %d chars, including attachment URL."
msgstr ""
"La taille maximale de l’avis est de %d caractères, en incluant l’URL de la "
"pièce jointe."
-#: actions/apisubscriptions.php:231 actions/apisubscriptions.php:261
+#: actions/apisubscriptions.php:232 actions/apisubscriptions.php:262
msgid "Unsupported format."
msgstr "Format non supporté."
@@ -739,6 +747,10 @@ msgstr "Avis marqués avec %s"
msgid "Updates tagged with %1$s on %2$s!"
msgstr "Mises à jour marquées avec %1$s dans %2$s !"
+#: actions/apitrends.php:87
+msgid "API method under construction."
+msgstr "Méthode API en construction."
+
#: actions/attachment.php:73
msgid "No such attachment."
msgstr "Pièce jointe non trouvée."
@@ -793,7 +805,7 @@ msgid "Preview"
msgstr "Aperçu"
#: actions/avatarsettings.php:149 actions/showapplication.php:252
-#: lib/deleteuserform.php:66 lib/noticelist.php:648
+#: lib/deleteuserform.php:66 lib/noticelist.php:656
msgid "Delete"
msgstr "Supprimer"
@@ -1074,7 +1086,7 @@ msgid "Do not delete this notice"
msgstr "Ne pas supprimer cet avis"
#. TRANS: Submit button title for 'Yes' when deleting a notice.
-#: actions/deletenotice.php:158 lib/noticelist.php:648
+#: actions/deletenotice.php:158 lib/noticelist.php:656
msgid "Delete this notice"
msgstr "Supprimer cet avis"
@@ -1353,7 +1365,8 @@ msgstr "Alias invalide : « %s »"
msgid "Could not update group."
msgstr "Impossible de mettre à jour le groupe."
-#: actions/editgroup.php:264 classes/User_group.php:496
+#. TRANS: Server exception thrown when creating group aliases failed.
+#: actions/editgroup.php:264 classes/User_group.php:514
msgid "Could not create aliases."
msgstr "Impossible de créer les alias."
@@ -1503,7 +1516,7 @@ msgstr "Préférences de courrier électronique enregistrées."
#. TRANS: Message given saving e-mail address without having provided one.
#: actions/emailsettings.php:353
msgid "No email address."
-msgstr "Aucune adresse courriel."
+msgstr "Aucune adresse électronique."
#. TRANS: Message given saving e-mail address that cannot be normalised.
#: actions/emailsettings.php:361
@@ -2524,7 +2537,7 @@ msgstr "mises à jour correspondant au(x) terme(s) « %1$s » sur %2$s !"
#: actions/nudge.php:85
msgid ""
-"This user doesn't allow nudges or hasn't confirmed or set his email yet."
+"This user doesn't allow nudges or hasn't confirmed or set their email yet."
msgstr ""
"Cet utilisateur n’accepte pas les clins d’œil ou n’a pas encore validé son "
"adresse électronique."
@@ -2604,8 +2617,8 @@ msgid "Only %s URLs over plain HTTP please."
msgstr "Veuillez n'utiliser que des URL HTTP complètes en %s."
#. TRANS: Client error on an API request with an unsupported data format.
-#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1179
-#: lib/apiaction.php:1208 lib/apiaction.php:1325
+#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1204
+#: lib/apiaction.php:1232 lib/apiaction.php:1355
msgid "Not a supported data format."
msgstr "Format de données non supporté."
@@ -3525,7 +3538,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:667
+#: actions/repeat.php:114 lib/noticelist.php:675
msgid "Repeated"
msgstr "Repris"
@@ -3563,7 +3576,7 @@ msgstr "Flux des réponses pour %s (Atom)"
#, php-format
msgid ""
"This is the timeline showing replies to %1$s but %2$s hasn't received a "
-"notice to his attention yet."
+"notice to them yet."
msgstr ""
"Ceci est la chronologie des réponses à %1$s mais %2$s n’a encore reçu aucun "
"avis à son intention."
@@ -3581,8 +3594,8 @@ msgstr ""
#: actions/replies.php:206
#, php-format
msgid ""
-"You can try to [nudge %1$s](../%2$s) or [post something to his or her "
-"attention](%%%%action.newnotice%%%%?status_textarea=%3$s)."
+"You can try to [nudge %1$s](../%2$s) or [post something to them](%%%%action."
+"newnotice%%%%?status_textarea=%3$s)."
msgstr ""
"Vous pouvez essayer de [faire un clin d’œil à %1$s](../%2$s) ou de [poster "
"quelque chose à son intention](%%%%action.newnotice%%%%?status_textarea=%3"
@@ -3675,7 +3688,7 @@ msgstr "Organisation"
msgid "Description"
msgstr "Description"
-#: actions/showapplication.php:192 actions/showgroup.php:444
+#: actions/showapplication.php:192 actions/showgroup.php:436
#: lib/profileaction.php:187
msgid "Statistics"
msgstr "Statistiques"
@@ -3765,8 +3778,8 @@ msgstr ""
#: actions/showfavorites.php:208
#, php-format
msgid ""
-"%s hasn't added any notices to his favorites yet. Post something interesting "
-"they would add to their favorites :)"
+"%s hasn't added any favorite notices yet. Post something interesting they "
+"would add to their favorites :)"
msgstr ""
"%s n’a pas ajouté d’avis à ses favoris pour le moment. Publiez quelque chose "
"d’intéressant, et cela pourrait être ajouté à ses favoris :)"
@@ -3774,13 +3787,13 @@ msgstr ""
#: actions/showfavorites.php:212
#, php-format
msgid ""
-"%s hasn't added any notices to his favorites yet. Why not [register an "
-"account](%%%%action.register%%%%) and then post something interesting they "
-"would add to their favorites :)"
+"%s hasn't added any favorite notices yet. Why not [register an account](%%%%"
+"action.register%%%%) and then post something interesting they would add to "
+"their favorites :)"
msgstr ""
"%s n’a pas ajouté d’avis à ses favoris pour le moment. Vous pourriez [créer "
"un compte](%%%%action.register%%%%), puis poster quelque chose "
-"d’intéressant, qui serait ajouté à ses favoris :)"
+"d’intéressant, qu’il pourrait ajouter à ses favoris :)"
#: actions/showfavorites.php:243
msgid "This is a way to share what you like."
@@ -3838,7 +3851,7 @@ msgstr "Fil des avis du groupe %s (Atom)"
msgid "FOAF for %s group"
msgstr "ami d’un ami pour le groupe %s"
-#: actions/showgroup.php:393 actions/showgroup.php:453 lib/groupnav.php:91
+#: actions/showgroup.php:393 actions/showgroup.php:445 lib/groupnav.php:91
msgid "Members"
msgstr "Membres"
@@ -3852,11 +3865,11 @@ msgstr "(aucun)"
msgid "All members"
msgstr "Tous les membres"
-#: actions/showgroup.php:447
+#: actions/showgroup.php:439
msgid "Created"
msgstr "Créé"
-#: actions/showgroup.php:463
+#: actions/showgroup.php:455
#, php-format
msgid ""
"**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3872,7 +3885,7 @@ msgstr ""
"action.register%%%%) pour devenir membre de ce groupe et bien plus ! ([En "
"lire plus](%%%%doc.help%%%%))"
-#: actions/showgroup.php:469
+#: actions/showgroup.php:461
#, php-format
msgid ""
"**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3885,7 +3898,7 @@ msgstr ""
"logiciel libre [StatusNet](http://status.net/). Ses membres partagent des "
"messages courts à propos de leur vie et leurs intérêts. "
-#: actions/showgroup.php:497
+#: actions/showgroup.php:489
msgid "Admins"
msgstr "Administrateurs"
@@ -3965,8 +3978,8 @@ msgstr ""
#: 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)."
+"You can try to nudge %1$s or [post something to them](%%%%action.newnotice%%%"
+"%?status_textarea=%2$s)."
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)."
@@ -4359,7 +4372,8 @@ msgstr "Sauvegarder les paramètres des instantanés"
msgid "You are not subscribed to that profile."
msgstr "Vous n’êtes pas abonné(e) à ce profil."
-#: actions/subedit.php:83 classes/Subscription.php:132
+#. TRANS: Exception thrown when a subscription could not be stored on the server.
+#: actions/subedit.php:83 classes/Subscription.php:136
msgid "Could not save subscription."
msgstr "Impossible d’enregistrer l’abonnement."
@@ -4540,10 +4554,6 @@ msgstr ""
msgid "No such tag."
msgstr "Cette marque n’existe pas."
-#: actions/twitapitrends.php:85
-msgid "API method under construction."
-msgstr "Méthode API en construction."
-
#: actions/unblock.php:59
msgid "You haven't blocked that user."
msgstr "Vous n’avez pas bloqué cet utilisateur."
@@ -4859,80 +4869,127 @@ msgstr "Version"
msgid "Author(s)"
msgstr "Auteur(s)"
-#: classes/File.php:185
+#. TRANS: Server exception thrown when a URL cannot be processed.
+#: classes/File.php:143
+#, php-format
+msgid "Cannot process URL '%s'"
+msgstr "Impossible de traiter l’URL « %s »"
+
+#. TRANS: Server exception thrown when... Robin thinks something is impossible!
+#: classes/File.php:175
+msgid "Robin thinks something is impossible."
+msgstr "Robin pense que quelque chose est impossible."
+
+#. TRANS: Message given if an upload is larger than the configured maximum.
+#. TRANS: %1$d is the byte limit for uploads, %2$d is the byte count for the uploaded file.
+#: classes/File.php:190
#, php-format
msgid ""
-"No file may be larger than %d bytes and the file you sent was %d bytes. Try "
-"to upload a smaller version."
+"No file may be larger than %1$d bytes and the file you sent was %2$d bytes. "
+"Try to upload a smaller version."
msgstr ""
-"Un fichier ne peut pas être plus gros que %d octets et le fichier que vous "
-"avez envoyé pesait %d octets. Essayez d’importer une version moins grosse."
+"Un fichier ne peut pas peser plus de %1$d octets et le fichier que vous avez "
+"envoyé pesait %2$d octets. Essayez d’importer une version moins lourde."
-#: classes/File.php:195
+#. TRANS: Message given if an upload would exceed user quota.
+#. TRANS: %d (number) is the user quota in bytes.
+#: classes/File.php:202
#, php-format
msgid "A file this large would exceed your user quota of %d bytes."
msgstr "Un fichier aussi gros dépasserai votre quota utilisateur de %d octets."
-#: classes/File.php:202
+#. TRANS: Message given id an upload would exceed a user's monthly quota.
+#. TRANS: $d (number) is the monthly user quota in bytes.
+#: classes/File.php:211
#, php-format
msgid "A file this large would exceed your monthly quota of %d bytes."
msgstr "Un fichier aussi gros dépasserai votre quota mensuel de %d octets."
-#: classes/Group_member.php:41
+#. TRANS: Client exception thrown if a file upload does not have a valid name.
+#: classes/File.php:248 classes/File.php:263
+msgid "Invalid filename."
+msgstr "Nom de fichier non valide."
+
+#. TRANS: Exception thrown when joining a group fails.
+#: classes/Group_member.php:42
msgid "Group join failed."
msgstr "L’inscription au groupe a échoué."
-#: classes/Group_member.php:53
+#. TRANS: Exception thrown when trying to leave a group the user is not a member of.
+#: classes/Group_member.php:55
msgid "Not part of group."
msgstr "N’appartient pas au groupe."
-#: classes/Group_member.php:60
+#. TRANS: Exception thrown when trying to leave a group fails.
+#: classes/Group_member.php:63
msgid "Group leave failed."
msgstr "La désinscription du groupe a échoué."
-#: classes/Local_group.php:41
+#. TRANS: Server exception thrown when updating a local group fails.
+#: classes/Local_group.php:42
msgid "Could not update local group."
msgstr "Impossible de mettre à jour le groupe local."
-#: classes/Login_token.php:76
+#. TRANS: Exception thrown when trying creating a login token failed.
+#. TRANS: %s is the user nickname for which token creation failed.
+#: classes/Login_token.php:78
#, php-format
msgid "Could not create login token for %s"
msgstr "Impossible de créer le jeton d’identification pour %s"
-#: classes/Message.php:45
+#. TRANS: Exception thrown when database name or Data Source Name could not be found.
+#: classes/Memcached_DataObject.php:533
+msgid "No database name or DSN found anywhere."
+msgstr "Aucune base de données de nom ou DSN trouvée nulle part."
+
+#. TRANS: Client exception thrown when a user tries to send a direct message while being banned from sending them.
+#: classes/Message.php:46
msgid "You are banned from sending direct messages."
msgstr "Il vous est interdit d’envoyer des messages directs."
-#: classes/Message.php:61
+#. TRANS: Message given when a message could not be stored on the server.
+#: classes/Message.php:63
msgid "Could not insert message."
msgstr "Impossible d’insérer le message."
-#: classes/Message.php:71
+#. TRANS: Message given when a message could not be updated on the server.
+#: classes/Message.php:74
msgid "Could not update message with new URI."
msgstr "Impossible de mettre à jour le message avec un nouvel URI."
+#. TRANS: Server exception thrown when a user profile for a notice cannot be found.
+#. TRANS: %1$d is a profile ID (number), %2$d is a notice ID (number).
+#: classes/Notice.php:98
+#, php-format
+msgid "No such profile (%1$d) for notice (%2$d)."
+msgstr "Impossible de trouver le profil (%1$d) pour l’avis (%2$d)."
+
#. TRANS: Server exception. %s are the error details.
-#: classes/Notice.php:182
+#: classes/Notice.php:190
#, php-format
msgid "Database error inserting hashtag: %s"
msgstr "Erreur de base de donnée en insérant la marque (hashtag) : %s"
-#: classes/Notice.php:251
+#. TRANS: Client exception thrown if a notice contains too many characters.
+#: classes/Notice.php:260
msgid "Problem saving notice. Too long."
msgstr "Problème lors de l’enregistrement de l’avis ; trop long."
-#: classes/Notice.php:255
+#. TRANS: Client exception thrown when trying to save a notice for an unknown user.
+#: classes/Notice.php:265
msgid "Problem saving notice. Unknown user."
msgstr "Erreur lors de l’enregistrement de l’avis. Utilisateur inconnu."
-#: classes/Notice.php:260
+#. TRANS: Client exception thrown when a user tries to post too many notices in a given time frame.
+#: classes/Notice.php:271
msgid ""
"Too many notices too fast; take a breather and post again in a few minutes."
msgstr ""
"Trop d’avis, trop vite ! Faites une pause et publiez à nouveau dans quelques "
"minutes."
-#: classes/Notice.php:266
+#. TRANS: Client exception thrown when a user tries to post too many duplicate notices in a given time frame.
+#: classes/Notice.php:278
msgid ""
"Too many duplicate messages too quickly; take a breather and post again in a "
"few minutes."
@@ -4940,71 +4997,121 @@ msgstr ""
"Trop de messages en double trop vite ! Prenez une pause et publiez à nouveau "
"dans quelques minutes."
-#: classes/Notice.php:272
+#. TRANS: Client exception thrown when a user tries to post while being banned.
+#: classes/Notice.php:286
msgid "You are banned from posting notices on this site."
msgstr "Il vous est interdit de poster des avis sur ce site."
-#: classes/Notice.php:338 classes/Notice.php:364
+#. TRANS: Server exception thrown when a notice cannot be saved.
+#. TRANS: Server exception thrown when a notice cannot be updated.
+#: classes/Notice.php:353 classes/Notice.php:380
msgid "Problem saving notice."
msgstr "Problème lors de l’enregistrement de l’avis."
-#: classes/Notice.php:973
+#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups().
+#: classes/Notice.php:892
+msgid "Bad type provided to saveKnownGroups"
+msgstr "Le type renseigné pour saveKnownGroups n’est pas valable"
+
+#. TRANS: Server exception thrown when an update for a group inbox fails.
+#: classes/Notice.php:991
msgid "Problem saving group inbox."
msgstr "Problème lors de l’enregistrement de la boîte de réception du groupe."
#. TRANS: Message used to repeat a notice. RT is the abbreviation of 'retweet'.
#. TRANS: %1$s is the repeated user's name, %2$s is the repeated notice.
-#: classes/Notice.php:1564
+#: classes/Notice.php:1614
#, php-format
msgid "RT @%1$s %2$s"
msgstr "RT @%1$s %2$s"
-#: classes/Subscription.php:74 lib/oauthstore.php:465
+#. TRANS: Exception thrown when trying to revoke an existing role for a user that does not exist.
+#. TRANS: %1$s is the role name, %2$s is the user ID (number).
+#: classes/Profile.php:740
+#, php-format
+msgid "Cannot revoke role \"%1$s\" for user #%2$d; does not exist."
+msgstr ""
+"Impossible de révoquer le rôle de « %1$s » pour l’utilisateur #%2$d : "
+"l’utilisateur n’existe pas."
+
+#. TRANS: Exception thrown when trying to revoke a role for a user with a failing database query.
+#. TRANS: %1$s is the role name, %2$s is the user ID (number).
+#: classes/Profile.php:749
+#, php-format
+msgid "Cannot revoke role \"%1$s\" for user #%2$d; database error."
+msgstr ""
+"Impossible de révoquer le rôle de « %1$s » pour l’utilisateur #%2$d : erreur "
+"dans la base de données."
+
+#. TRANS: Exception thrown when a right for a non-existing user profile is checked.
+#: classes/Remote_profile.php:54
+msgid "Missing profile."
+msgstr "Profil manquant."
+
+#. TRANS: Exception thrown when a tag cannot be saved.
+#: classes/Status_network.php:346
+msgid "Unable to save tag."
+msgstr "Impossible d’enregistrer l’étiquette."
+
+#. TRANS: Exception thrown when trying to subscribe while being banned from subscribing.
+#: classes/Subscription.php:75 lib/oauthstore.php:465
msgid "You have been banned from subscribing."
msgstr "Il vous a été interdit de vous abonner."
-#: classes/Subscription.php:78
+#. TRANS: Exception thrown when trying to subscribe while already subscribed.
+#: classes/Subscription.php:80
msgid "Already subscribed!"
msgstr "Déjà abonné !"
-#: classes/Subscription.php:82
+#. TRANS: Exception thrown when trying to subscribe to a user who has blocked the subscribing user.
+#: classes/Subscription.php:85
msgid "User has blocked you."
msgstr "Cet utilisateur vous a bloqué."
-#: classes/Subscription.php:167
+#. TRANS: Exception thrown when trying to unsibscribe without a subscription.
+#: classes/Subscription.php:171
msgid "Not subscribed!"
msgstr "Pas abonné !"
-#: classes/Subscription.php:173
-msgid "Couldn't delete self-subscription."
+#. TRANS: Exception thrown when trying to unsubscribe a user from themselves.
+#: classes/Subscription.php:178
+msgid "Could not delete self-subscription."
msgstr "Impossible de supprimer l’abonnement à soi-même."
-#: classes/Subscription.php:200
-msgid "Couldn't delete subscription OMB token."
-msgstr "Impossible de supprimer le jeton OMB de l'abonnement ."
+#. TRANS: Exception thrown when the OMB token for a subscription could not deleted on the server.
+#: classes/Subscription.php:206
+msgid "Could not delete subscription OMB token."
+msgstr "Impossible de supprimer le jeton OMB de l'abonnement."
-#: classes/Subscription.php:211
-msgid "Couldn't delete subscription."
-msgstr "Impossible de cesser l’abonnement"
+#. TRANS: Exception thrown when a subscription could not be deleted on the server.
+#: classes/Subscription.php:218
+msgid "Could not delete subscription."
+msgstr "Impossible de supprimer l’abonnement"
-#: classes/User.php:363
+#. TRANS: Notice given on user registration.
+#. TRANS: %1$s is the sitename, $2$s is the registering user's nickname.
+#: classes/User.php:365
#, php-format
msgid "Welcome to %1$s, @%2$s!"
msgstr "Bienvenue à %1$s, @%2$s !"
-#: classes/User_group.php:480
+#. TRANS: Server exception thrown when creating a group failed.
+#: classes/User_group.php:496
msgid "Could not create group."
msgstr "Impossible de créer le groupe."
-#: classes/User_group.php:489
+#. TRANS: Server exception thrown when updating a group URI failed.
+#: classes/User_group.php:506
msgid "Could not set group URI."
msgstr "Impossible de définir l'URI du groupe."
-#: classes/User_group.php:510
+#. TRANS: Server exception thrown when setting group membership failed.
+#: classes/User_group.php:529
msgid "Could not set group membership."
msgstr "Impossible d’établir l’inscription au groupe."
-#: classes/User_group.php:524
+#. TRANS: Server exception thrown when saving local group information failed.
+#: classes/User_group.php:544
msgid "Could not save local group info."
msgstr "Impossible d’enregistrer les informations du groupe local."
@@ -6487,7 +6594,7 @@ msgstr ""
"pour démarrer des conversations avec d’autres utilisateurs. Ceux-ci peuvent "
"vous envoyer des messages destinés à vous seul(e)."
-#: lib/mailbox.php:227 lib/noticelist.php:497
+#: lib/mailbox.php:227 lib/noticelist.php:505
msgid "from"
msgstr "de"
@@ -6546,24 +6653,24 @@ msgstr "Impossible d’écrire sur le disque."
msgid "File upload stopped by extension."
msgstr "Import de fichier stoppé par une extension."
-#: lib/mediafile.php:179 lib/mediafile.php:216
+#: lib/mediafile.php:179 lib/mediafile.php:217
msgid "File exceeds user's quota."
msgstr "Le fichier dépasse le quota de l’utilisateur."
-#: lib/mediafile.php:196 lib/mediafile.php:233
+#: lib/mediafile.php:197 lib/mediafile.php:234
msgid "File could not be moved to destination directory."
msgstr "Le fichier n’a pas pu être déplacé dans le dossier de destination."
-#: lib/mediafile.php:201 lib/mediafile.php:237
+#: lib/mediafile.php:202 lib/mediafile.php:238
msgid "Could not determine file's MIME type."
msgstr "Impossible de déterminer le type MIME du fichier."
-#: lib/mediafile.php:270
+#: lib/mediafile.php:318
#, php-format
msgid " Try using another %s format."
msgstr " Essayez d’utiliser un autre %s format."
-#: lib/mediafile.php:275
+#: lib/mediafile.php:323
#, php-format
msgid "%s is not a supported file type on this server."
msgstr "%s n’est pas un type de fichier supporté sur ce serveur."
@@ -6619,51 +6726,51 @@ msgstr ""
"Veuillez réessayer plus tard."
#. TRANS: Used in coordinates as abbreviation of north
-#: lib/noticelist.php:430
+#: lib/noticelist.php:436
msgid "N"
msgstr "N"
#. TRANS: Used in coordinates as abbreviation of south
-#: lib/noticelist.php:432
+#: lib/noticelist.php:438
msgid "S"
msgstr "S"
#. TRANS: Used in coordinates as abbreviation of east
-#: lib/noticelist.php:434
+#: lib/noticelist.php:440
msgid "E"
msgstr "E"
#. TRANS: Used in coordinates as abbreviation of west
-#: lib/noticelist.php:436
+#: lib/noticelist.php:442
msgid "W"
msgstr "O"
-#: lib/noticelist.php:438
+#: lib/noticelist.php:444
#, php-format
msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
msgstr "%1$u° %2$u' %3$u\" %4$s %5$u° %6$u' %7$u\" %8$s"
-#: lib/noticelist.php:447
+#: lib/noticelist.php:453
msgid "at"
msgstr "chez"
-#: lib/noticelist.php:559
+#: lib/noticelist.php:567
msgid "in context"
msgstr "dans le contexte"
-#: lib/noticelist.php:594
+#: lib/noticelist.php:602
msgid "Repeated by"
msgstr "Repris par"
-#: lib/noticelist.php:621
+#: lib/noticelist.php:629
msgid "Reply to this notice"
msgstr "Répondre à cet avis"
-#: lib/noticelist.php:622
+#: lib/noticelist.php:630
msgid "Reply"
msgstr "Répondre"
-#: lib/noticelist.php:666
+#: lib/noticelist.php:674
msgid "Notice repeated"
msgstr "Avis repris"
@@ -6923,8 +7030,8 @@ msgstr ""
"ZIP."
#: lib/themeuploader.php:58 lib/themeuploader.php:61
-msgid "Theme upload missing or failed."
-msgstr "Le thème est manquant ou son import a échoué."
+msgid "The theme file is missing or the upload failed."
+msgstr "Le fichier de thème est manquant ou le téléversement a échoué."
#: lib/themeuploader.php:91 lib/themeuploader.php:102
#: lib/themeuploader.php:253 lib/themeuploader.php:257
diff --git a/locale/ga/LC_MESSAGES/statusnet.po b/locale/ga/LC_MESSAGES/statusnet.po
index ac7ad1b5f..dc3c53286 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-06-16 22:18+0000\n"
-"PO-Revision-Date: 2010-06-21 18:03:45+0000\n"
+"POT-Creation-Date: 2010-08-03 13:21+0000\n"
+"PO-Revision-Date: 2010-08-03 13:22:00+0000\n"
"Language-Team: Irish\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.17alpha (r68367); Translate extension (2010-06-12)\n"
+"X-Generator: MediaWiki 1.17alpha (r70381); Translate extension (2010-07-21)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: ga\n"
"X-Message-Group: out-statusnet\n"
@@ -107,7 +107,7 @@ msgstr "Non existe a etiqueta."
#: actions/apidirectmessagenew.php:74 actions/apigroupcreate.php:113
#: actions/apigroupismember.php:91 actions/apigroupjoin.php:100
#: actions/apigroupleave.php:100 actions/apigrouplist.php:73
-#: actions/apistatusesupdate.php:228 actions/apisubscriptions.php:87
+#: actions/apistatusesupdate.php:229 actions/apisubscriptions.php:87
#: actions/apitimelinefavorites.php:72 actions/apitimelinefriends.php:174
#: actions/apitimelinehome.php:80 actions/apitimelinementions.php:80
#: actions/apitimelineuser.php:82 actions/avatarbynickname.php:75
@@ -174,15 +174,15 @@ msgstr ""
#: actions/all.php:146
#, 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)."
+"You can try to [nudge %1$s](../%2$s) from their profile or [post something "
+"to them](%%%%action.newnotice%%%%?status_textarea=%3$s)."
msgstr ""
#: actions/all.php:149 actions/replies.php:210 actions/showstream.php:211
#, php-format
msgid ""
"Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
-"post a notice to his or her attention."
+"post a notice to them."
msgstr ""
#. TRANS: H1 text
@@ -216,7 +216,7 @@ msgstr "Actualizacións dende %1$s e amigos en %2$s!"
#: actions/apistatusesshow.php:109 actions/apistatusnetconfig.php:141
#: actions/apistatusnetversion.php:93 actions/apisubscriptions.php:111
#: actions/apitimelinefavorites.php:174 actions/apitimelinefriends.php:271
-#: actions/apitimelinegroup.php:152 actions/apitimelinehome.php:175
+#: actions/apitimelinegroup.php:154 actions/apitimelinehome.php:175
#: actions/apitimelinementions.php:174 actions/apitimelinepublic.php:241
#: actions/apitimelineretweetedtome.php:121
#: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161
@@ -267,7 +267,7 @@ msgstr "Non se puido gardar o perfil."
#: actions/apiaccountupdateprofilebackgroundimage.php:108
#: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80
-#: actions/apistatusesupdate.php:211 actions/avatarsettings.php:257
+#: actions/apistatusesupdate.php:212 actions/avatarsettings.php:257
#: actions/designadminpanel.php:123 actions/editapplication.php:118
#: actions/newapplication.php:101 actions/newnotice.php:94
#: lib/designsettings.php:283
@@ -370,7 +370,8 @@ msgid "Could not delete favorite."
msgstr "Non se puido eliminar o favorito."
#: actions/apifriendshipscreate.php:109
-msgid "Could not follow user: User not found."
+#, fuzzy
+msgid "Could not follow user: profile not found."
msgstr "Non podes seguir a este usuario: o Usuario non se atopa."
#: actions/apifriendshipscreate.php:118
@@ -388,8 +389,9 @@ msgstr "Non podes seguir a este usuario: o Usuario non se atopa."
msgid "You cannot unfollow yourself."
msgstr "Non se puido actualizar o usuario."
-#: actions/apifriendshipsexists.php:94
-msgid "Two user ids or screen_names must be supplied."
+#: actions/apifriendshipsexists.php:91
+#, fuzzy
+msgid "Two valid IDs or screen_names must be supplied."
msgstr ""
"Dous identificadores de usuario ou nomes_en_pantalla deben ser "
"proporcionados."
@@ -522,6 +524,11 @@ msgstr ""
msgid "groups on %s"
msgstr "Outras opcions"
+#: actions/apimediaupload.php:99
+#, fuzzy
+msgid "Upload failed."
+msgstr "Subir"
+
#: actions/apioauthauthorize.php:101
msgid "No oauth_token parameter provided."
msgstr ""
@@ -669,23 +676,27 @@ msgstr "Avatar actualizado."
msgid "No status with that ID found."
msgstr "Non existe ningún estado con esa ID atopada."
-#: actions/apistatusesupdate.php:241 actions/newnotice.php:155
+#: actions/apistatusesupdate.php:221
+msgid "Client must provide a 'status' parameter with a value."
+msgstr ""
+
+#: actions/apistatusesupdate.php:242 actions/newnotice.php:155
#: lib/mailhandler.php:60
#, fuzzy, php-format
msgid "That's too long. Max notice size is %d chars."
msgstr ""
"Iso é demasiado longo. O tamaño máximo para un chío é de 140 caracteres."
-#: actions/apistatusesupdate.php:282 actions/apiusershow.php:96
+#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96
msgid "Not found."
msgstr "Non atopado"
-#: actions/apistatusesupdate.php:305 actions/newnotice.php:178
+#: actions/apistatusesupdate.php:306 actions/newnotice.php:178
#, php-format
msgid "Max notice size is %d chars, including attachment URL."
msgstr ""
-#: actions/apisubscriptions.php:231 actions/apisubscriptions.php:261
+#: actions/apisubscriptions.php:232 actions/apisubscriptions.php:262
#, fuzzy
msgid "Unsupported format."
msgstr "Formato de ficheiro de imaxe non soportado."
@@ -740,6 +751,10 @@ msgstr "Chíos tagueados con %s"
msgid "Updates tagged with %1$s on %2$s!"
msgstr "Actualizacións dende %1$s en %2$s!"
+#: actions/apitrends.php:87
+msgid "API method under construction."
+msgstr "Método da API en contrución."
+
#: actions/attachment.php:73
#, fuzzy
msgid "No such attachment."
@@ -795,7 +810,7 @@ msgid "Preview"
msgstr ""
#: actions/avatarsettings.php:149 actions/showapplication.php:252
-#: lib/deleteuserform.php:66 lib/noticelist.php:648
+#: lib/deleteuserform.php:66 lib/noticelist.php:656
#, fuzzy
msgid "Delete"
msgstr "eliminar"
@@ -1095,7 +1110,7 @@ msgid "Do not delete this notice"
msgstr "Non se pode eliminar este chíos."
#. TRANS: Submit button title for 'Yes' when deleting a notice.
-#: actions/deletenotice.php:158 lib/noticelist.php:648
+#: actions/deletenotice.php:158 lib/noticelist.php:656
#, fuzzy
msgid "Delete this notice"
msgstr "Eliminar chío"
@@ -1400,7 +1415,8 @@ msgstr "Etiqueta inválida: '%s'"
msgid "Could not update group."
msgstr "Non se puido actualizar o usuario."
-#: actions/editgroup.php:264 classes/User_group.php:496
+#. TRANS: Server exception thrown when creating group aliases failed.
+#: actions/editgroup.php:264 classes/User_group.php:514
#, fuzzy
msgid "Could not create aliases."
msgstr "Non se puido crear o favorito."
@@ -2586,8 +2602,9 @@ msgid "Updates matching search term \"%1$s\" on %2$s!"
msgstr "Tódalas actualizacións que coinciden co termo de procura \"%s\""
#: actions/nudge.php:85
+#, fuzzy
msgid ""
-"This user doesn't allow nudges or hasn't confirmed or set his email yet."
+"This user doesn't allow nudges or hasn't confirmed or set their email yet."
msgstr ""
"Este usuario non permite toques, ou non confirmou ainda o seu correo "
"electrónico."
@@ -2668,8 +2685,8 @@ msgid "Only %s URLs over plain HTTP please."
msgstr ""
#. TRANS: Client error on an API request with an unsupported data format.
-#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1179
-#: lib/apiaction.php:1208 lib/apiaction.php:1325
+#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1204
+#: lib/apiaction.php:1232 lib/apiaction.php:1355
msgid "Not a supported data format."
msgstr "Non é un formato de datos soportado."
@@ -3608,7 +3625,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:667
+#: actions/repeat.php:114 lib/noticelist.php:675
#, fuzzy
msgid "Repeated"
msgstr "Crear"
@@ -3648,7 +3665,7 @@ msgstr "Fonte de chíos para %s"
#, php-format
msgid ""
"This is the timeline showing replies to %1$s but %2$s hasn't received a "
-"notice to his attention yet."
+"notice to them yet."
msgstr ""
#: actions/replies.php:204
@@ -3661,8 +3678,8 @@ msgstr ""
#: actions/replies.php:206
#, php-format
msgid ""
-"You can try to [nudge %1$s](../%2$s) or [post something to his or her "
-"attention](%%%%action.newnotice%%%%?status_textarea=%3$s)."
+"You can try to [nudge %1$s](../%2$s) or [post something to them](%%%%action."
+"newnotice%%%%?status_textarea=%3$s)."
msgstr ""
#: actions/repliesrss.php:72
@@ -3762,7 +3779,7 @@ msgstr "Invitación(s) enviada(s)."
msgid "Description"
msgstr "Subscricións"
-#: actions/showapplication.php:192 actions/showgroup.php:444
+#: actions/showapplication.php:192 actions/showgroup.php:436
#: lib/profileaction.php:187
msgid "Statistics"
msgstr "Estatísticas"
@@ -3848,16 +3865,16 @@ msgstr ""
#: actions/showfavorites.php:208
#, php-format
msgid ""
-"%s hasn't added any notices to his favorites yet. Post something interesting "
-"they would add to their favorites :)"
+"%s hasn't added any favorite notices yet. Post something interesting they "
+"would add to their favorites :)"
msgstr ""
#: actions/showfavorites.php:212
#, php-format
msgid ""
-"%s hasn't added any notices to his favorites yet. Why not [register an "
-"account](%%%%action.register%%%%) and then post something interesting they "
-"would add to their favorites :)"
+"%s hasn't added any favorite notices yet. Why not [register an account](%%%%"
+"action.register%%%%) and then post something interesting they would add to "
+"their favorites :)"
msgstr ""
#: actions/showfavorites.php:243
@@ -3919,7 +3936,7 @@ msgstr "Fonte de chíos para %s"
msgid "FOAF for %s group"
msgstr "Band. Saída para %s"
-#: actions/showgroup.php:393 actions/showgroup.php:453 lib/groupnav.php:91
+#: actions/showgroup.php:393 actions/showgroup.php:445 lib/groupnav.php:91
#, fuzzy
msgid "Members"
msgstr "Membro dende"
@@ -3935,12 +3952,12 @@ msgstr "(nada)"
msgid "All members"
msgstr ""
-#: actions/showgroup.php:447
+#: actions/showgroup.php:439
#, fuzzy
msgid "Created"
msgstr "Crear"
-#: actions/showgroup.php:463
+#: actions/showgroup.php:455
#, fuzzy, php-format
msgid ""
"**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3954,7 +3971,7 @@ msgstr ""
"(http://status.net/). [Únete agora](%%action.register%%) para compartir "
"chíos cos teus amigos, colegas e familia! ([Ler mais](%%doc.help%%))"
-#: actions/showgroup.php:469
+#: actions/showgroup.php:461
#, fuzzy, php-format
msgid ""
"**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3967,7 +3984,7 @@ msgstr ""
"(http://status.net/). [Únete agora](%%action.register%%) para compartir "
"chíos cos teus amigos, colegas e familia! ([Ler mais](%%doc.help%%))"
-#: actions/showgroup.php:497
+#: actions/showgroup.php:489
msgid "Admins"
msgstr ""
@@ -4043,8 +4060,8 @@ msgstr ""
#: 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)."
+"You can try to nudge %1$s or [post something to them](%%%%action.newnotice%%%"
+"%?status_textarea=%2$s)."
msgstr ""
#: actions/showstream.php:243
@@ -4450,7 +4467,8 @@ msgstr "Configuracións de Twitter"
msgid "You are not subscribed to that profile."
msgstr "Non estás suscrito a ese perfil"
-#: actions/subedit.php:83 classes/Subscription.php:132
+#. TRANS: Exception thrown when a subscription could not be stored on the server.
+#: actions/subedit.php:83 classes/Subscription.php:136
msgid "Could not save subscription."
msgstr "Non se pode gardar a subscrición."
@@ -4625,10 +4643,6 @@ msgstr ""
msgid "No such tag."
msgstr "Non existe a etiqueta."
-#: actions/twitapitrends.php:85
-msgid "API method under construction."
-msgstr "Método da API en contrución."
-
#: actions/unblock.php:59
#, fuzzy
msgid "You haven't blocked that user."
@@ -4942,84 +4956,132 @@ msgstr "Persoal"
msgid "Author(s)"
msgstr ""
-#: classes/File.php:185
+#. TRANS: Server exception thrown when a URL cannot be processed.
+#: classes/File.php:143
+#, php-format
+msgid "Cannot process URL '%s'"
+msgstr ""
+
+#. TRANS: Server exception thrown when... Robin thinks something is impossible!
+#: classes/File.php:175
+msgid "Robin thinks something is impossible."
+msgstr ""
+
+#. TRANS: Message given if an upload is larger than the configured maximum.
+#. TRANS: %1$d is the byte limit for uploads, %2$d is the byte count for the uploaded file.
+#: classes/File.php:190
#, php-format
msgid ""
-"No file may be larger than %d bytes and the file you sent was %d bytes. Try "
-"to upload a smaller version."
+"No file may be larger than %1$d bytes and the file you sent was %2$d bytes. "
+"Try to upload a smaller version."
msgstr ""
-#: classes/File.php:195
+#. TRANS: Message given if an upload would exceed user quota.
+#. TRANS: %d (number) is the user quota in bytes.
+#: classes/File.php:202
#, php-format
msgid "A file this large would exceed your user quota of %d bytes."
msgstr ""
-#: classes/File.php:202
+#. TRANS: Message given id an upload would exceed a user's monthly quota.
+#. TRANS: $d (number) is the monthly user quota in bytes.
+#: classes/File.php:211
#, php-format
msgid "A file this large would exceed your monthly quota of %d bytes."
msgstr ""
-#: classes/Group_member.php:41
+#. TRANS: Client exception thrown if a file upload does not have a valid name.
+#: classes/File.php:248 classes/File.php:263
+#, fuzzy
+msgid "Invalid filename."
+msgstr "Tamaño inválido."
+
+#. TRANS: Exception thrown when joining a group fails.
+#: classes/Group_member.php:42
#, fuzzy
msgid "Group join failed."
msgstr "Non existe o perfil."
-#: classes/Group_member.php:53
+#. TRANS: Exception thrown when trying to leave a group the user is not a member of.
+#: classes/Group_member.php:55
#, fuzzy
msgid "Not part of group."
msgstr "Non se puido actualizar o usuario."
-#: classes/Group_member.php:60
+#. TRANS: Exception thrown when trying to leave a group fails.
+#: classes/Group_member.php:63
#, fuzzy
msgid "Group leave failed."
msgstr "Non existe o perfil."
-#: classes/Local_group.php:41
+#. TRANS: Server exception thrown when updating a local group fails.
+#: classes/Local_group.php:42
#, fuzzy
msgid "Could not update local group."
msgstr "Non se puido actualizar o usuario."
-#: classes/Login_token.php:76
+#. TRANS: Exception thrown when trying creating a login token failed.
+#. TRANS: %s is the user nickname for which token creation failed.
+#: classes/Login_token.php:78
#, fuzzy, php-format
msgid "Could not create login token for %s"
msgstr "Non se puido crear o favorito."
-#: classes/Message.php:45
+#. TRANS: Exception thrown when database name or Data Source Name could not be found.
+#: classes/Memcached_DataObject.php:533
+msgid "No database name or DSN found anywhere."
+msgstr ""
+
+#. TRANS: Client exception thrown when a user tries to send a direct message while being banned from sending them.
+#: classes/Message.php:46
#, fuzzy
msgid "You are banned from sending direct messages."
msgstr "Erro ó enviar a mensaxe directa."
-#: classes/Message.php:61
+#. TRANS: Message given when a message could not be stored on the server.
+#: classes/Message.php:63
msgid "Could not insert message."
msgstr "Non se pode inserir unha mensaxe."
-#: classes/Message.php:71
+#. TRANS: Message given when a message could not be updated on the server.
+#: classes/Message.php:74
msgid "Could not update message with new URI."
msgstr "Non se puido actualizar a mensaxe coa nova URI."
+#. TRANS: Server exception thrown when a user profile for a notice cannot be found.
+#. TRANS: %1$d is a profile ID (number), %2$d is a notice ID (number).
+#: classes/Notice.php:98
+#, php-format
+msgid "No such profile (%1$d) for notice (%2$d)."
+msgstr ""
+
#. TRANS: Server exception. %s are the error details.
-#: classes/Notice.php:182
+#: classes/Notice.php:190
#, fuzzy, php-format
msgid "Database error inserting hashtag: %s"
msgstr "Erro ó inserir o hashtag na BD: %s"
-#: classes/Notice.php:251
+#. TRANS: Client exception thrown if a notice contains too many characters.
+#: classes/Notice.php:260
#, fuzzy
msgid "Problem saving notice. Too long."
msgstr "Aconteceu un erro ó gardar o chío."
-#: classes/Notice.php:255
+#. TRANS: Client exception thrown when trying to save a notice for an unknown user.
+#: classes/Notice.php:265
msgid "Problem saving notice. Unknown user."
msgstr "Aconteceu un erro ó gardar o chío. Usuario descoñecido."
-#: classes/Notice.php:260
+#. TRANS: Client exception thrown when a user tries to post too many notices in a given time frame.
+#: classes/Notice.php:271
msgid ""
"Too many notices too fast; take a breather and post again in a few minutes."
msgstr ""
"Demasiados chíos en pouco tempo; tomate un respiro e envíao de novo dentro "
"duns minutos."
-#: classes/Notice.php:266
+#. TRANS: Client exception thrown when a user tries to post too many duplicate notices in a given time frame.
+#: classes/Notice.php:278
#, fuzzy
msgid ""
"Too many duplicate messages too quickly; take a breather and post again in a "
@@ -5028,79 +5090,128 @@ msgstr ""
"Demasiados chíos en pouco tempo; tomate un respiro e envíao de novo dentro "
"duns minutos."
-#: classes/Notice.php:272
+#. TRANS: Client exception thrown when a user tries to post while being banned.
+#: classes/Notice.php:286
msgid "You are banned from posting notices on this site."
msgstr "Tes restrinxido o envio de chíos neste sitio."
-#: classes/Notice.php:338 classes/Notice.php:364
+#. TRANS: Server exception thrown when a notice cannot be saved.
+#. TRANS: Server exception thrown when a notice cannot be updated.
+#: classes/Notice.php:353 classes/Notice.php:380
msgid "Problem saving notice."
msgstr "Aconteceu un erro ó gardar o chío."
-#: classes/Notice.php:973
+#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups().
+#: classes/Notice.php:892
+msgid "Bad type provided to saveKnownGroups"
+msgstr ""
+
+#. TRANS: Server exception thrown when an update for a group inbox fails.
+#: classes/Notice.php:991
#, fuzzy
msgid "Problem saving group inbox."
msgstr "Aconteceu un erro ó gardar o chío."
#. TRANS: Message used to repeat a notice. RT is the abbreviation of 'retweet'.
#. TRANS: %1$s is the repeated user's name, %2$s is the repeated notice.
-#: classes/Notice.php:1564
+#: classes/Notice.php:1614
#, fuzzy, php-format
msgid "RT @%1$s %2$s"
msgstr "%1$s (%2$s)"
-#: classes/Subscription.php:74 lib/oauthstore.php:465
+#. TRANS: Exception thrown when trying to revoke an existing role for a user that does not exist.
+#. TRANS: %1$s is the role name, %2$s is the user ID (number).
+#: classes/Profile.php:740
+#, php-format
+msgid "Cannot revoke role \"%1$s\" for user #%2$d; does not exist."
+msgstr ""
+
+#. TRANS: Exception thrown when trying to revoke a role for a user with a failing database query.
+#. TRANS: %1$s is the role name, %2$s is the user ID (number).
+#: classes/Profile.php:749
+#, php-format
+msgid "Cannot revoke role \"%1$s\" for user #%2$d; database error."
+msgstr ""
+
+#. TRANS: Exception thrown when a right for a non-existing user profile is checked.
+#: classes/Remote_profile.php:54
+#, fuzzy
+msgid "Missing profile."
+msgstr "O usuario non ten perfil."
+
+#. TRANS: Exception thrown when a tag cannot be saved.
+#: classes/Status_network.php:346
+#, fuzzy
+msgid "Unable to save tag."
+msgstr "Non se puideron gardar os teus axustes de Twitter!"
+
+#. TRANS: Exception thrown when trying to subscribe while being banned from subscribing.
+#: classes/Subscription.php:75 lib/oauthstore.php:465
#, fuzzy
msgid "You have been banned from subscribing."
msgstr "Este usuario non che permite suscribirte a el."
-#: classes/Subscription.php:78
+#. TRANS: Exception thrown when trying to subscribe while already subscribed.
+#: classes/Subscription.php:80
msgid "Already subscribed!"
msgstr ""
-#: classes/Subscription.php:82
+#. TRANS: Exception thrown when trying to subscribe to a user who has blocked the subscribing user.
+#: classes/Subscription.php:85
msgid "User has blocked you."
msgstr "O usuario bloqueoute."
-#: classes/Subscription.php:167
+#. TRANS: Exception thrown when trying to unsibscribe without a subscription.
+#: classes/Subscription.php:171
#, fuzzy
msgid "Not subscribed!"
msgstr "Non está suscrito!"
-#: classes/Subscription.php:173
+#. TRANS: Exception thrown when trying to unsubscribe a user from themselves.
+#: classes/Subscription.php:178
#, fuzzy
-msgid "Couldn't delete self-subscription."
+msgid "Could not delete self-subscription."
msgstr "Non se pode eliminar a subscrición."
-#: classes/Subscription.php:200
+#. TRANS: Exception thrown when the OMB token for a subscription could not deleted on the server.
+#: classes/Subscription.php:206
#, fuzzy
-msgid "Couldn't delete subscription OMB token."
+msgid "Could not delete subscription OMB token."
msgstr "Non se pode eliminar a subscrición."
-#: classes/Subscription.php:211
-msgid "Couldn't delete subscription."
+#. TRANS: Exception thrown when a subscription could not be deleted on the server.
+#: classes/Subscription.php:218
+#, fuzzy
+msgid "Could not delete subscription."
msgstr "Non se pode eliminar a subscrición."
-#: classes/User.php:363
+#. TRANS: Notice given on user registration.
+#. TRANS: %1$s is the sitename, $2$s is the registering user's nickname.
+#: classes/User.php:365
#, fuzzy, php-format
msgid "Welcome to %1$s, @%2$s!"
msgstr "Mensaxe de %1$s en %2$s"
-#: classes/User_group.php:480
+#. TRANS: Server exception thrown when creating a group failed.
+#: classes/User_group.php:496
#, fuzzy
msgid "Could not create group."
msgstr "Non se puido crear o favorito."
-#: classes/User_group.php:489
+#. TRANS: Server exception thrown when updating a group URI failed.
+#: classes/User_group.php:506
#, fuzzy
msgid "Could not set group URI."
msgstr "Non se pode gardar a subscrición."
-#: classes/User_group.php:510
+#. TRANS: Server exception thrown when setting group membership failed.
+#: classes/User_group.php:529
#, fuzzy
msgid "Could not set group membership."
msgstr "Non se pode gardar a subscrición."
-#: classes/User_group.php:524
+#. TRANS: Server exception thrown when saving local group information failed.
+#: classes/User_group.php:544
#, fuzzy
msgid "Could not save local group info."
msgstr "Non se pode gardar a subscrición."
@@ -6585,7 +6696,7 @@ msgid ""
"users in conversation. People can send you messages for your eyes only."
msgstr ""
-#: lib/mailbox.php:227 lib/noticelist.php:497
+#: lib/mailbox.php:227 lib/noticelist.php:505
#, fuzzy
msgid "from"
msgstr " dende "
@@ -6641,25 +6752,25 @@ msgstr ""
msgid "File upload stopped by extension."
msgstr ""
-#: lib/mediafile.php:179 lib/mediafile.php:216
+#: lib/mediafile.php:179 lib/mediafile.php:217
msgid "File exceeds user's quota."
msgstr ""
-#: lib/mediafile.php:196 lib/mediafile.php:233
+#: lib/mediafile.php:197 lib/mediafile.php:234
msgid "File could not be moved to destination directory."
msgstr ""
-#: lib/mediafile.php:201 lib/mediafile.php:237
+#: lib/mediafile.php:202 lib/mediafile.php:238
#, fuzzy
msgid "Could not determine file's MIME type."
msgstr "Non se pudo recuperar a liña de tempo publica."
-#: lib/mediafile.php:270
+#: lib/mediafile.php:318
#, php-format
msgid " Try using another %s format."
msgstr ""
-#: lib/mediafile.php:275
+#: lib/mediafile.php:323
#, php-format
msgid "%s is not a supported file type on this server."
msgstr ""
@@ -6719,56 +6830,56 @@ msgid ""
msgstr ""
#. TRANS: Used in coordinates as abbreviation of north
-#: lib/noticelist.php:430
+#: lib/noticelist.php:436
#, fuzzy
msgid "N"
msgstr "No"
#. TRANS: Used in coordinates as abbreviation of south
-#: lib/noticelist.php:432
+#: lib/noticelist.php:438
msgid "S"
msgstr ""
#. TRANS: Used in coordinates as abbreviation of east
-#: lib/noticelist.php:434
+#: lib/noticelist.php:440
msgid "E"
msgstr ""
#. TRANS: Used in coordinates as abbreviation of west
-#: lib/noticelist.php:436
+#: lib/noticelist.php:442
msgid "W"
msgstr ""
-#: lib/noticelist.php:438
+#: lib/noticelist.php:444
#, php-format
msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
msgstr ""
-#: lib/noticelist.php:447
+#: lib/noticelist.php:453
msgid "at"
msgstr ""
-#: lib/noticelist.php:559
+#: lib/noticelist.php:567
#, fuzzy
msgid "in context"
msgstr "Sen contido!"
-#: lib/noticelist.php:594
+#: lib/noticelist.php:602
#, fuzzy
msgid "Repeated by"
msgstr "Crear"
-#: lib/noticelist.php:621
+#: lib/noticelist.php:629
#, fuzzy
msgid "Reply to this notice"
msgstr "Non se pode eliminar este chíos."
-#: lib/noticelist.php:622
+#: lib/noticelist.php:630
#, fuzzy
msgid "Reply"
msgstr "contestar"
-#: lib/noticelist.php:666
+#: lib/noticelist.php:674
#, fuzzy
msgid "Notice repeated"
msgstr "Chío publicado"
@@ -7049,9 +7160,8 @@ msgid "This server cannot handle theme uploads without ZIP support."
msgstr ""
#: lib/themeuploader.php:58 lib/themeuploader.php:61
-#, fuzzy
-msgid "Theme upload missing or failed."
-msgstr "Aconteceu un erro no sistema namentras se estaba cargando o ficheiro."
+msgid "The theme file is missing or the upload failed."
+msgstr ""
#: lib/themeuploader.php:91 lib/themeuploader.php:102
#: lib/themeuploader.php:253 lib/themeuploader.php:257
diff --git a/locale/gl/LC_MESSAGES/statusnet.po b/locale/gl/LC_MESSAGES/statusnet.po
index 14cbd03c7..40e79f782 100644
--- a/locale/gl/LC_MESSAGES/statusnet.po
+++ b/locale/gl/LC_MESSAGES/statusnet.po
@@ -9,12 +9,12 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-06-16 22:18+0000\n"
-"PO-Revision-Date: 2010-06-21 18:03:49+0000\n"
+"POT-Creation-Date: 2010-08-03 13:21+0000\n"
+"PO-Revision-Date: 2010-08-03 13:22:01+0000\n"
"Language-Team: Galician\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.17alpha (r68367); Translate extension (2010-06-12)\n"
+"X-Generator: MediaWiki 1.17alpha (r70381); Translate extension (2010-07-21)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: gl\n"
"X-Message-Group: out-statusnet\n"
@@ -98,7 +98,7 @@ msgstr "Esa páxina non existe."
#: actions/apidirectmessagenew.php:74 actions/apigroupcreate.php:113
#: actions/apigroupismember.php:91 actions/apigroupjoin.php:100
#: actions/apigroupleave.php:100 actions/apigrouplist.php:73
-#: actions/apistatusesupdate.php:228 actions/apisubscriptions.php:87
+#: actions/apistatusesupdate.php:229 actions/apisubscriptions.php:87
#: actions/apitimelinefavorites.php:72 actions/apitimelinefriends.php:174
#: actions/apitimelinehome.php:80 actions/apitimelinementions.php:80
#: actions/apitimelineuser.php:82 actions/avatarbynickname.php:75
@@ -166,20 +166,20 @@ msgstr ""
#. TRANS: %1$s is user nickname, %2$s is user nickname, %2$s is user nickname prefixed with "@"
#: actions/all.php:146
-#, php-format
+#, fuzzy, 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)."
+"You can try to [nudge %1$s](../%2$s) from their profile or [post something "
+"to them](%%%%action.newnotice%%%%?status_textarea=%3$s)."
msgstr ""
"Pode probar a [facerlle un aceno a %1$s](../%2$s) dende o seu perfil ou "
"[publicar algo dirixido a el ou ela](%%%%action.newnotice%%%%?"
"status_textarea=%3$s)."
#: actions/all.php:149 actions/replies.php:210 actions/showstream.php:211
-#, php-format
+#, fuzzy, php-format
msgid ""
"Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
-"post a notice to his or her attention."
+"post a notice to them."
msgstr ""
"Por que non [rexistrar unha conta](%%%%action.register%%%%) e entón facerlle "
"un aceno a %s ou publicar unha nota dirixida a el ou ela?"
@@ -214,7 +214,7 @@ msgstr "Actualizacións de %1$s e amigos en %2$s!"
#: actions/apistatusesshow.php:109 actions/apistatusnetconfig.php:141
#: actions/apistatusnetversion.php:93 actions/apisubscriptions.php:111
#: actions/apitimelinefavorites.php:174 actions/apitimelinefriends.php:271
-#: actions/apitimelinegroup.php:152 actions/apitimelinehome.php:175
+#: actions/apitimelinegroup.php:154 actions/apitimelinehome.php:175
#: actions/apitimelinementions.php:174 actions/apitimelinepublic.php:241
#: actions/apitimelineretweetedtome.php:121
#: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161
@@ -264,7 +264,7 @@ msgstr "Non se puido gardar o perfil."
#: actions/apiaccountupdateprofilebackgroundimage.php:108
#: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80
-#: actions/apistatusesupdate.php:211 actions/avatarsettings.php:257
+#: actions/apistatusesupdate.php:212 actions/avatarsettings.php:257
#: actions/designadminpanel.php:123 actions/editapplication.php:118
#: actions/newapplication.php:101 actions/newnotice.php:94
#: lib/designsettings.php:283
@@ -364,7 +364,7 @@ msgid "Could not delete favorite."
msgstr "Non se puido eliminar o favorito."
#: actions/apifriendshipscreate.php:109
-msgid "Could not follow user: User not found."
+msgid "Could not follow user: profile not found."
msgstr "Non se puido seguir o usuario: non se atopou."
#: actions/apifriendshipscreate.php:118
@@ -380,8 +380,8 @@ msgstr "Non se puido deixar de seguir o usuario: non se atopou."
msgid "You cannot unfollow yourself."
msgstr "Non pode deixar de seguirse a si mesmo."
-#: actions/apifriendshipsexists.php:94
-msgid "Two user ids or screen_names must be supplied."
+#: actions/apifriendshipsexists.php:91
+msgid "Two valid IDs or screen_names must be supplied."
msgstr "Deben fornecerse dúas identificacións ou nomes de usuario."
#: actions/apifriendshipsshow.php:134
@@ -511,6 +511,11 @@ msgstr "grupos %s"
msgid "groups on %s"
msgstr "grupos en %s"
+#: actions/apimediaupload.php:99
+#, fuzzy
+msgid "Upload failed."
+msgstr "Cargar un ficheiro"
+
#: actions/apioauthauthorize.php:101
msgid "No oauth_token parameter provided."
msgstr "Non se forneceu o parámetro oauth_token."
@@ -656,24 +661,28 @@ msgstr "Borrouse o estado."
msgid "No status with that ID found."
msgstr "Non se atopou ningún estado con esa ID."
-#: actions/apistatusesupdate.php:241 actions/newnotice.php:155
+#: actions/apistatusesupdate.php:221
+msgid "Client must provide a 'status' parameter with a value."
+msgstr ""
+
+#: actions/apistatusesupdate.php:242 actions/newnotice.php:155
#: lib/mailhandler.php:60
#, php-format
msgid "That's too long. Max notice size is %d chars."
msgstr "Iso é longo de máis. A nota non pode exceder os %d caracteres."
-#: actions/apistatusesupdate.php:282 actions/apiusershow.php:96
+#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96
msgid "Not found."
msgstr "Non se atopou."
-#: actions/apistatusesupdate.php:305 actions/newnotice.php:178
+#: actions/apistatusesupdate.php:306 actions/newnotice.php:178
#, php-format
msgid "Max notice size is %d chars, including attachment URL."
msgstr ""
"A lonxitude máxima das notas é de %d caracteres, incluído o URL do dato "
"adxunto."
-#: actions/apisubscriptions.php:231 actions/apisubscriptions.php:261
+#: actions/apisubscriptions.php:232 actions/apisubscriptions.php:262
msgid "Unsupported format."
msgstr "Formato non soportado."
@@ -727,6 +736,10 @@ msgstr "Notas etiquetadas con %s"
msgid "Updates tagged with %1$s on %2$s!"
msgstr "Actualizacións etiquetadas con %1$s en %2$s!"
+#: actions/apitrends.php:87
+msgid "API method under construction."
+msgstr "Método API en desenvolvemento."
+
#: actions/attachment.php:73
msgid "No such attachment."
msgstr "Non existe tal dato adxunto."
@@ -781,7 +794,7 @@ msgid "Preview"
msgstr "Vista previa"
#: actions/avatarsettings.php:149 actions/showapplication.php:252
-#: lib/deleteuserform.php:66 lib/noticelist.php:648
+#: lib/deleteuserform.php:66 lib/noticelist.php:656
msgid "Delete"
msgstr "Borrar"
@@ -1062,7 +1075,7 @@ msgid "Do not delete this notice"
msgstr "Non borrar esta nota"
#. TRANS: Submit button title for 'Yes' when deleting a notice.
-#: actions/deletenotice.php:158 lib/noticelist.php:648
+#: actions/deletenotice.php:158 lib/noticelist.php:656
msgid "Delete this notice"
msgstr "Borrar esta nota"
@@ -1341,7 +1354,8 @@ msgstr "Pseudónimo inválido: \"%s\""
msgid "Could not update group."
msgstr "Non se puido actualizar o grupo."
-#: actions/editgroup.php:264 classes/User_group.php:496
+#. TRANS: Server exception thrown when creating group aliases failed.
+#: actions/editgroup.php:264 classes/User_group.php:514
msgid "Could not create aliases."
msgstr "Non se puideron crear os pseudónimos."
@@ -2501,9 +2515,9 @@ msgstr "Actualizacións que conteñen o termo \"%1$s\" en %2$s!"
#: actions/nudge.php:85
msgid ""
-"This user doesn't allow nudges or hasn't confirmed or set his email yet."
+"This user doesn't allow nudges or hasn't confirmed or set their email yet."
msgstr ""
-"Este usuario non permite acenos ou aínda non corfirmou ou configurou o seu "
+"Este usuario non permite acenos ou aínda non confirmou ou configurou o seu "
"enderezo de correo electrónico."
#: actions/nudge.php:94
@@ -2580,8 +2594,8 @@ msgid "Only %s URLs over plain HTTP please."
msgstr "Só %s enderezos URL sobre HTTP simple."
#. TRANS: Client error on an API request with an unsupported data format.
-#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1179
-#: lib/apiaction.php:1208 lib/apiaction.php:1325
+#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1204
+#: lib/apiaction.php:1232 lib/apiaction.php:1355
msgid "Not a supported data format."
msgstr "Non se soporta ese formato de datos."
@@ -3506,7 +3520,7 @@ msgstr "Non pode repetir a súa propia nota."
msgid "You already repeated that notice."
msgstr "Xa repetiu esa nota."
-#: actions/repeat.php:114 lib/noticelist.php:667
+#: actions/repeat.php:114 lib/noticelist.php:675
msgid "Repeated"
msgstr "Repetida"
@@ -3541,10 +3555,10 @@ msgid "Replies feed for %s (Atom)"
msgstr "Fonte de novas coas respostas a %s (Atom)"
#: actions/replies.php:199
-#, php-format
+#, fuzzy, php-format
msgid ""
"This is the timeline showing replies to %1$s but %2$s hasn't received a "
-"notice to his attention yet."
+"notice to them yet."
msgstr ""
"Esta é a liña do tempo coas respostas a %1$s, pero a %2$s aínda non lle "
"mandaron ningunha nota."
@@ -3559,10 +3573,10 @@ msgstr ""
"grupos](%%action.groups%%)."
#: actions/replies.php:206
-#, php-format
+#, fuzzy, php-format
msgid ""
-"You can try to [nudge %1$s](../%2$s) or [post something to his or her "
-"attention](%%%%action.newnotice%%%%?status_textarea=%3$s)."
+"You can try to [nudge %1$s](../%2$s) or [post something to them](%%%%action."
+"newnotice%%%%?status_textarea=%3$s)."
msgstr ""
"Pode probar a [facerlle un aceno a %1$s](../%2$s) ou [publicar algo dirixido "
"a el ou ela](%%%%action.newnotice%%%%?status_textarea=%3$s)."
@@ -3653,7 +3667,7 @@ msgstr "Organización"
msgid "Description"
msgstr "Descrición"
-#: actions/showapplication.php:192 actions/showgroup.php:444
+#: actions/showapplication.php:192 actions/showgroup.php:436
#: lib/profileaction.php:187
msgid "Statistics"
msgstr "Estatísticas"
@@ -3744,8 +3758,8 @@ msgstr ""
#: actions/showfavorites.php:208
#, php-format
msgid ""
-"%s hasn't added any notices to his favorites yet. Post something interesting "
-"they would add to their favorites :)"
+"%s hasn't added any favorite notices yet. Post something interesting they "
+"would add to their favorites :)"
msgstr ""
"%s aínda non marcou ningunha nota como favorita. Publique algo interesante "
"que poida querer engadir aos seus favoritos :)"
@@ -3753,9 +3767,9 @@ msgstr ""
#: actions/showfavorites.php:212
#, php-format
msgid ""
-"%s hasn't added any notices to his favorites yet. Why not [register an "
-"account](%%%%action.register%%%%) and then post something interesting they "
-"would add to their favorites :)"
+"%s hasn't added any favorite notices yet. Why not [register an account](%%%%"
+"action.register%%%%) and then post something interesting they would add to "
+"their favorites :)"
msgstr ""
"%s aínda non marcou ningunha nota como favorita. Por que non [rexistrar unha "
"conta](%%%%action.register%%%%) e publicar algo interesante que puidese "
@@ -3817,7 +3831,7 @@ msgstr "Fonte de novas das notas do grupo %s (Atom)"
msgid "FOAF for %s group"
msgstr "Amigo dun amigo para o grupo %s"
-#: actions/showgroup.php:393 actions/showgroup.php:453 lib/groupnav.php:91
+#: actions/showgroup.php:393 actions/showgroup.php:445 lib/groupnav.php:91
msgid "Members"
msgstr "Membros"
@@ -3831,11 +3845,11 @@ msgstr "(Ningún)"
msgid "All members"
msgstr "Todos os membros"
-#: actions/showgroup.php:447
+#: actions/showgroup.php:439
msgid "Created"
msgstr "Creado"
-#: actions/showgroup.php:463
+#: actions/showgroup.php:455
#, php-format
msgid ""
"**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3851,7 +3865,7 @@ msgstr ""
"[Únase agora](%%%%action.register%%%%) para pasar a formar parte deste grupo "
"e de moitos máis! ([Máis información](%%%%doc.help%%%%))"
-#: actions/showgroup.php:469
+#: actions/showgroup.php:461
#, php-format
msgid ""
"**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3864,7 +3878,7 @@ msgstr ""
"baseado na ferramenta de software libre [StatusNet](http://status.net/). Os "
"seus membros comparten mensaxes curtas sobre as súas vidas e intereses. "
-#: actions/showgroup.php:497
+#: actions/showgroup.php:489
msgid "Admins"
msgstr "Administradores"
@@ -3939,10 +3953,10 @@ msgstr ""
"bo momento para comezar :)"
#: actions/showstream.php:207
-#, php-format
+#, fuzzy, php-format
msgid ""
-"You can try to nudge %1$s or [post something to his or her attention](%%%%"
-"action.newnotice%%%%?status_textarea=%2$s)."
+"You can try to nudge %1$s or [post something to them](%%%%action.newnotice%%%"
+"%?status_textarea=%2$s)."
msgstr ""
"Pode probar a facerlle un aceno a %1$s ou [publicar algo dirixido a el ou "
"ela](%%%%action.newnotice%%%%?status_textarea=%2$s)."
@@ -4335,7 +4349,8 @@ msgstr "Gardar a configuración das instantáneas"
msgid "You are not subscribed to that profile."
msgstr "Non está subscrito a ese perfil."
-#: actions/subedit.php:83 classes/Subscription.php:132
+#. TRANS: Exception thrown when a subscription could not be stored on the server.
+#: actions/subedit.php:83 classes/Subscription.php:136
msgid "Could not save subscription."
msgstr "Non se puido gardar a subscrición."
@@ -4514,10 +4529,6 @@ msgstr ""
msgid "No such tag."
msgstr "Esa etiqueta non existe."
-#: actions/twitapitrends.php:85
-msgid "API method under construction."
-msgstr "Método API en desenvolvemento."
-
#: actions/unblock.php:59
msgid "You haven't blocked that user."
msgstr "Non bloqueou a ese usuario."
@@ -4828,81 +4839,129 @@ msgstr "Versión"
msgid "Author(s)"
msgstr "Autores"
-#: classes/File.php:185
+#. TRANS: Server exception thrown when a URL cannot be processed.
+#: classes/File.php:143
+#, php-format
+msgid "Cannot process URL '%s'"
+msgstr ""
+
+#. TRANS: Server exception thrown when... Robin thinks something is impossible!
+#: classes/File.php:175
+msgid "Robin thinks something is impossible."
+msgstr ""
+
+#. TRANS: Message given if an upload is larger than the configured maximum.
+#. TRANS: %1$d is the byte limit for uploads, %2$d is the byte count for the uploaded file.
+#: classes/File.php:190
#, php-format
msgid ""
-"No file may be larger than %d bytes and the file you sent was %d bytes. Try "
-"to upload a smaller version."
+"No file may be larger than %1$d bytes and the file you sent was %2$d bytes. "
+"Try to upload a smaller version."
msgstr ""
-"Ningún ficheiro pode superar os %d bytes e o que enviou ocupaba %d. Probe a "
-"subir un ficheiro máis pequeno."
+"Ningún ficheiro pode superar os %1$d bytes e o que enviou ocupaba %2$d. "
+"Probe a subir un ficheiro máis pequeno."
-#: classes/File.php:195
+#. TRANS: Message given if an upload would exceed user quota.
+#. TRANS: %d (number) is the user quota in bytes.
+#: classes/File.php:202
#, php-format
msgid "A file this large would exceed your user quota of %d bytes."
msgstr ""
"Un ficheiro deste tamaño excedería a súa cota de usuario, que é de %d bytes."
-#: classes/File.php:202
+#. TRANS: Message given id an upload would exceed a user's monthly quota.
+#. TRANS: $d (number) is the monthly user quota in bytes.
+#: classes/File.php:211
#, php-format
msgid "A file this large would exceed your monthly quota of %d bytes."
msgstr "Un ficheiro deste tamaño excedería a súa cota mensual de %d bytes."
-#: classes/Group_member.php:41
+#. TRANS: Client exception thrown if a file upload does not have a valid name.
+#: classes/File.php:248 classes/File.php:263
+#, fuzzy
+msgid "Invalid filename."
+msgstr "Tamaño non válido."
+
+#. TRANS: Exception thrown when joining a group fails.
+#: classes/Group_member.php:42
msgid "Group join failed."
msgstr "Non se puido unir ao grupo."
-#: classes/Group_member.php:53
+#. TRANS: Exception thrown when trying to leave a group the user is not a member of.
+#: classes/Group_member.php:55
msgid "Not part of group."
msgstr "Non forma parte do grupo."
-#: classes/Group_member.php:60
+#. TRANS: Exception thrown when trying to leave a group fails.
+#: classes/Group_member.php:63
msgid "Group leave failed."
msgstr "Non se puido deixar o grupo."
-#: classes/Local_group.php:41
+#. TRANS: Server exception thrown when updating a local group fails.
+#: classes/Local_group.php:42
msgid "Could not update local group."
msgstr "Non se puido actualizar o grupo local."
-#: classes/Login_token.php:76
+#. TRANS: Exception thrown when trying creating a login token failed.
+#. TRANS: %s is the user nickname for which token creation failed.
+#: classes/Login_token.php:78
#, php-format
msgid "Could not create login token for %s"
msgstr "Non se puido crear un pase de sesión para %s"
-#: classes/Message.php:45
+#. TRANS: Exception thrown when database name or Data Source Name could not be found.
+#: classes/Memcached_DataObject.php:533
+msgid "No database name or DSN found anywhere."
+msgstr ""
+
+#. TRANS: Client exception thrown when a user tries to send a direct message while being banned from sending them.
+#: classes/Message.php:46
msgid "You are banned from sending direct messages."
msgstr "Prohibíuselle enviar mensaxes directas de momento."
-#: classes/Message.php:61
+#. TRANS: Message given when a message could not be stored on the server.
+#: classes/Message.php:63
msgid "Could not insert message."
msgstr "Non se puido inserir a mensaxe."
-#: classes/Message.php:71
+#. TRANS: Message given when a message could not be updated on the server.
+#: classes/Message.php:74
msgid "Could not update message with new URI."
msgstr "Non se puido actualizar a mensaxe co novo URI."
+#. TRANS: Server exception thrown when a user profile for a notice cannot be found.
+#. TRANS: %1$d is a profile ID (number), %2$d is a notice ID (number).
+#: classes/Notice.php:98
+#, fuzzy, php-format
+msgid "No such profile (%1$d) for notice (%2$d)."
+msgstr "Non existe tal perfil (%d) para a nota (%d)"
+
#. TRANS: Server exception. %s are the error details.
-#: classes/Notice.php:182
+#: classes/Notice.php:190
#, php-format
msgid "Database error inserting hashtag: %s"
msgstr "Houbo un erro na base de datos ao intentar inserir a etiqueta: %s"
-#: classes/Notice.php:251
+#. TRANS: Client exception thrown if a notice contains too many characters.
+#: classes/Notice.php:260
msgid "Problem saving notice. Too long."
msgstr "Houbo un problema ao gardar a nota. É longa de máis."
-#: classes/Notice.php:255
+#. TRANS: Client exception thrown when trying to save a notice for an unknown user.
+#: classes/Notice.php:265
msgid "Problem saving notice. Unknown user."
msgstr "Houbo un problema ao gardar a nota. Descoñécese o usuario."
-#: classes/Notice.php:260
+#. TRANS: Client exception thrown when a user tries to post too many notices in a given time frame.
+#: classes/Notice.php:271
msgid ""
"Too many notices too fast; take a breather and post again in a few minutes."
msgstr ""
"Escribiu demasiadas notas en moi pouco tempo. Tómese un respiro e volva "
"publicar nuns minutos."
-#: classes/Notice.php:266
+#. TRANS: Client exception thrown when a user tries to post too many duplicate notices in a given time frame.
+#: classes/Notice.php:278
msgid ""
"Too many duplicate messages too quickly; take a breather and post again in a "
"few minutes."
@@ -4910,71 +4969,121 @@ msgstr ""
"Repetiu demasiadas mensaxes en moi pouco tempo. Tómese un respiro e volva "
"publicar nuns minutos."
-#: classes/Notice.php:272
+#. TRANS: Client exception thrown when a user tries to post while being banned.
+#: classes/Notice.php:286
msgid "You are banned from posting notices on this site."
msgstr "Prohibíuselle publicar notas neste sitio de momento."
-#: classes/Notice.php:338 classes/Notice.php:364
+#. TRANS: Server exception thrown when a notice cannot be saved.
+#. TRANS: Server exception thrown when a notice cannot be updated.
+#: classes/Notice.php:353 classes/Notice.php:380
msgid "Problem saving notice."
msgstr "Houbo un problema ao gardar a nota."
-#: classes/Notice.php:973
+#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups().
+#: classes/Notice.php:892
+msgid "Bad type provided to saveKnownGroups"
+msgstr ""
+
+#. TRANS: Server exception thrown when an update for a group inbox fails.
+#: classes/Notice.php:991
msgid "Problem saving group inbox."
msgstr "Houbo un problema ao gardar a caixa de entrada do grupo."
#. TRANS: Message used to repeat a notice. RT is the abbreviation of 'retweet'.
#. TRANS: %1$s is the repeated user's name, %2$s is the repeated notice.
-#: classes/Notice.php:1564
+#: classes/Notice.php:1614
#, php-format
msgid "RT @%1$s %2$s"
msgstr "â™» @%1$s %2$s"
-#: classes/Subscription.php:74 lib/oauthstore.php:465
+#. TRANS: Exception thrown when trying to revoke an existing role for a user that does not exist.
+#. TRANS: %1$s is the role name, %2$s is the user ID (number).
+#: classes/Profile.php:740
+#, php-format
+msgid "Cannot revoke role \"%1$s\" for user #%2$d; does not exist."
+msgstr ""
+
+#. TRANS: Exception thrown when trying to revoke a role for a user with a failing database query.
+#. TRANS: %1$s is the role name, %2$s is the user ID (number).
+#: classes/Profile.php:749
+#, php-format
+msgid "Cannot revoke role \"%1$s\" for user #%2$d; database error."
+msgstr ""
+
+#. TRANS: Exception thrown when a right for a non-existing user profile is checked.
+#: classes/Remote_profile.php:54
+#, fuzzy
+msgid "Missing profile."
+msgstr "O usuario non ten perfil."
+
+#. TRANS: Exception thrown when a tag cannot be saved.
+#: classes/Status_network.php:346
+msgid "Unable to save tag."
+msgstr "Non se puido gardar a nota do sitio."
+
+#. TRANS: Exception thrown when trying to subscribe while being banned from subscribing.
+#: classes/Subscription.php:75 lib/oauthstore.php:465
msgid "You have been banned from subscribing."
msgstr "Prohibíuselle realizar subscricións de momento."
-#: classes/Subscription.php:78
+#. TRANS: Exception thrown when trying to subscribe while already subscribed.
+#: classes/Subscription.php:80
msgid "Already subscribed!"
msgstr "Xa está subscrito!"
-#: classes/Subscription.php:82
+#. TRANS: Exception thrown when trying to subscribe to a user who has blocked the subscribing user.
+#: classes/Subscription.php:85
msgid "User has blocked you."
msgstr "O usuario bloqueouno."
-#: classes/Subscription.php:167
+#. TRANS: Exception thrown when trying to unsibscribe without a subscription.
+#: classes/Subscription.php:171
msgid "Not subscribed!"
msgstr "Non está subscrito!"
-#: classes/Subscription.php:173
-msgid "Couldn't delete self-subscription."
+#. TRANS: Exception thrown when trying to unsubscribe a user from themselves.
+#: classes/Subscription.php:178
+#, fuzzy
+msgid "Could not delete self-subscription."
msgstr "Non se puido borrar a subscrición a si mesmo."
-#: classes/Subscription.php:200
-msgid "Couldn't delete subscription OMB token."
+#. TRANS: Exception thrown when the OMB token for a subscription could not deleted on the server.
+#: classes/Subscription.php:206
+#, fuzzy
+msgid "Could not delete subscription OMB token."
msgstr "Non se puido borrar o pase de subscrición OMB."
-#: classes/Subscription.php:211
-msgid "Couldn't delete subscription."
+#. TRANS: Exception thrown when a subscription could not be deleted on the server.
+#: classes/Subscription.php:218
+#, fuzzy
+msgid "Could not delete subscription."
msgstr "Non se puido borrar a subscrición."
-#: classes/User.php:363
+#. TRANS: Notice given on user registration.
+#. TRANS: %1$s is the sitename, $2$s is the registering user's nickname.
+#: classes/User.php:365
#, php-format
msgid "Welcome to %1$s, @%2$s!"
msgstr "Benvido a %1$s, @%2$s!"
-#: classes/User_group.php:480
+#. TRANS: Server exception thrown when creating a group failed.
+#: classes/User_group.php:496
msgid "Could not create group."
msgstr "Non se puido crear o grupo."
-#: classes/User_group.php:489
+#. TRANS: Server exception thrown when updating a group URI failed.
+#: classes/User_group.php:506
msgid "Could not set group URI."
msgstr "Non se puido establecer o URI do grupo."
-#: classes/User_group.php:510
+#. TRANS: Server exception thrown when setting group membership failed.
+#: classes/User_group.php:529
msgid "Could not set group membership."
msgstr "Non se puido establecer a pertenza ao grupo."
-#: classes/User_group.php:524
+#. TRANS: Server exception thrown when saving local group information failed.
+#: classes/User_group.php:544
msgid "Could not save local group info."
msgstr "Non se puido gardar a información do grupo local."
@@ -6447,7 +6556,7 @@ msgstr ""
"Non ten mensaxes privadas. Pode enviar mensaxes privadas para conversar con "
"outros usuarios. A xente pode enviarlle mensaxes para que só as lea vostede."
-#: lib/mailbox.php:227 lib/noticelist.php:497
+#: lib/mailbox.php:227 lib/noticelist.php:505
msgid "from"
msgstr "de"
@@ -6505,24 +6614,24 @@ msgstr "Non se puido escribir o ficheiro no disco."
msgid "File upload stopped by extension."
msgstr "Interrompeuse a carga do ficheiro por mor da extensión."
-#: lib/mediafile.php:179 lib/mediafile.php:216
+#: lib/mediafile.php:179 lib/mediafile.php:217
msgid "File exceeds user's quota."
msgstr "O ficheiro supera a cota do usuario."
-#: lib/mediafile.php:196 lib/mediafile.php:233
+#: lib/mediafile.php:197 lib/mediafile.php:234
msgid "File could not be moved to destination directory."
msgstr "Non se puido mover o ficheiro ao directorio de destino."
-#: lib/mediafile.php:201 lib/mediafile.php:237
+#: lib/mediafile.php:202 lib/mediafile.php:238
msgid "Could not determine file's MIME type."
msgstr "Non se puido determinar o tipo MIME do ficheiro."
-#: lib/mediafile.php:270
+#: lib/mediafile.php:318
#, php-format
msgid " Try using another %s format."
msgstr "Inténteo utilizando outro formato %s."
-#: lib/mediafile.php:275
+#: lib/mediafile.php:323
#, php-format
msgid "%s is not a supported file type on this server."
msgstr "Neste servidor non se soporta o tipo de ficheiro %s."
@@ -6578,51 +6687,51 @@ msgstr ""
"intentar máis tarde"
#. TRANS: Used in coordinates as abbreviation of north
-#: lib/noticelist.php:430
+#: lib/noticelist.php:436
msgid "N"
msgstr "N"
#. TRANS: Used in coordinates as abbreviation of south
-#: lib/noticelist.php:432
+#: lib/noticelist.php:438
msgid "S"
msgstr "S"
#. TRANS: Used in coordinates as abbreviation of east
-#: lib/noticelist.php:434
+#: lib/noticelist.php:440
msgid "E"
msgstr "L"
#. TRANS: Used in coordinates as abbreviation of west
-#: lib/noticelist.php:436
+#: lib/noticelist.php:442
msgid "W"
msgstr "O"
-#: lib/noticelist.php:438
+#: lib/noticelist.php:444
#, php-format
msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
msgstr "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
-#: lib/noticelist.php:447
+#: lib/noticelist.php:453
msgid "at"
msgstr "en"
-#: lib/noticelist.php:559
+#: lib/noticelist.php:567
msgid "in context"
msgstr "no contexto"
-#: lib/noticelist.php:594
+#: lib/noticelist.php:602
msgid "Repeated by"
msgstr "Repetida por"
-#: lib/noticelist.php:621
+#: lib/noticelist.php:629
msgid "Reply to this notice"
msgstr "Responder a esta nota"
-#: lib/noticelist.php:622
+#: lib/noticelist.php:630
msgid "Reply"
msgstr "Responder"
-#: lib/noticelist.php:666
+#: lib/noticelist.php:674
msgid "Notice repeated"
msgstr "Repetiuse a nota"
@@ -6882,8 +6991,8 @@ msgstr ""
"formato ZIP."
#: lib/themeuploader.php:58 lib/themeuploader.php:61
-msgid "Theme upload missing or failed."
-msgstr "Houbo un erro no sistema ao cargar o tema visual."
+msgid "The theme file is missing or the upload failed."
+msgstr "O ficheiro do tema visual non existe ou a subida fallou."
#: lib/themeuploader.php:91 lib/themeuploader.php:102
#: lib/themeuploader.php:253 lib/themeuploader.php:257
diff --git a/locale/he/LC_MESSAGES/statusnet.po b/locale/he/LC_MESSAGES/statusnet.po
index d1b13a29a..d8d60e729 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-06-16 22:18+0000\n"
-"PO-Revision-Date: 2010-06-21 18:03:54+0000\n"
+"POT-Creation-Date: 2010-08-03 13:21+0000\n"
+"PO-Revision-Date: 2010-08-03 13:22:03+0000\n"
"Language-Team: Hebrew\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.17alpha (r68367); Translate extension (2010-06-12)\n"
+"X-Generator: MediaWiki 1.17alpha (r70381); Translate extension (2010-07-21)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: he\n"
"X-Message-Group: out-statusnet\n"
@@ -104,7 +104,7 @@ msgstr "×ין הודעה כזו."
#: actions/apidirectmessagenew.php:74 actions/apigroupcreate.php:113
#: actions/apigroupismember.php:91 actions/apigroupjoin.php:100
#: actions/apigroupleave.php:100 actions/apigrouplist.php:73
-#: actions/apistatusesupdate.php:228 actions/apisubscriptions.php:87
+#: actions/apistatusesupdate.php:229 actions/apisubscriptions.php:87
#: actions/apitimelinefavorites.php:72 actions/apitimelinefriends.php:174
#: actions/apitimelinehome.php:80 actions/apitimelinementions.php:80
#: actions/apitimelineuser.php:82 actions/avatarbynickname.php:75
@@ -171,15 +171,15 @@ msgstr ""
#: actions/all.php:146
#, 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)."
+"You can try to [nudge %1$s](../%2$s) from their profile or [post something "
+"to them](%%%%action.newnotice%%%%?status_textarea=%3$s)."
msgstr ""
#: actions/all.php:149 actions/replies.php:210 actions/showstream.php:211
#, php-format
msgid ""
"Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
-"post a notice to his or her attention."
+"post a notice to them."
msgstr ""
#. TRANS: H1 text
@@ -213,7 +213,7 @@ msgstr ""
#: actions/apistatusesshow.php:109 actions/apistatusnetconfig.php:141
#: actions/apistatusnetversion.php:93 actions/apisubscriptions.php:111
#: actions/apitimelinefavorites.php:174 actions/apitimelinefriends.php:271
-#: actions/apitimelinegroup.php:152 actions/apitimelinehome.php:175
+#: actions/apitimelinegroup.php:154 actions/apitimelinehome.php:175
#: actions/apitimelinementions.php:174 actions/apitimelinepublic.php:241
#: actions/apitimelineretweetedtome.php:121
#: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161
@@ -264,7 +264,7 @@ msgstr "שמירת הפרופיל נכשלה."
#: actions/apiaccountupdateprofilebackgroundimage.php:108
#: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80
-#: actions/apistatusesupdate.php:211 actions/avatarsettings.php:257
+#: actions/apistatusesupdate.php:212 actions/avatarsettings.php:257
#: actions/designadminpanel.php:123 actions/editapplication.php:118
#: actions/newapplication.php:101 actions/newnotice.php:94
#: lib/designsettings.php:283
@@ -363,8 +363,9 @@ msgid "Could not delete favorite."
msgstr ""
#: actions/apifriendshipscreate.php:109
-msgid "Could not follow user: User not found."
-msgstr ""
+#, fuzzy
+msgid "Could not follow user: profile not found."
+msgstr "נכשלה ההפניה לשרת: %s"
#: actions/apifriendshipscreate.php:118
#, php-format
@@ -381,8 +382,8 @@ msgstr "נכשלה ההפניה לשרת: %s"
msgid "You cannot unfollow yourself."
msgstr "עידכון המשתמש נכשל."
-#: actions/apifriendshipsexists.php:94
-msgid "Two user ids or screen_names must be supplied."
+#: actions/apifriendshipsexists.php:91
+msgid "Two valid IDs or screen_names must be supplied."
msgstr ""
#: actions/apifriendshipsshow.php:134
@@ -515,6 +516,11 @@ msgstr ""
msgid "groups on %s"
msgstr ""
+#: actions/apimediaupload.php:99
+#, fuzzy
+msgid "Upload failed."
+msgstr "ההעלה"
+
#: actions/apioauthauthorize.php:101
msgid "No oauth_token parameter provided."
msgstr ""
@@ -661,23 +667,27 @@ msgstr "התמונה עודכנה."
msgid "No status with that ID found."
msgstr ""
-#: actions/apistatusesupdate.php:241 actions/newnotice.php:155
+#: actions/apistatusesupdate.php:221
+msgid "Client must provide a 'status' parameter with a value."
+msgstr ""
+
+#: actions/apistatusesupdate.php:242 actions/newnotice.php:155
#: lib/mailhandler.php:60
#, fuzzy, php-format
msgid "That's too long. Max notice size is %d chars."
msgstr "×–×” ×רוך מידי. ×ורך מירבי להודעה ×”×•× 140 ×ותיות."
-#: actions/apistatusesupdate.php:282 actions/apiusershow.php:96
+#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96
#, fuzzy
msgid "Not found."
msgstr "×œ× × ×ž×¦×"
-#: actions/apistatusesupdate.php:305 actions/newnotice.php:178
+#: actions/apistatusesupdate.php:306 actions/newnotice.php:178
#, php-format
msgid "Max notice size is %d chars, including attachment URL."
msgstr ""
-#: actions/apisubscriptions.php:231 actions/apisubscriptions.php:261
+#: actions/apisubscriptions.php:232 actions/apisubscriptions.php:262
#, fuzzy
msgid "Unsupported format."
msgstr "פורמט התמונה ×ינו נתמך."
@@ -732,6 +742,10 @@ msgstr ""
msgid "Updates tagged with %1$s on %2$s!"
msgstr "מיקרובלוג מ×ת %s"
+#: actions/apitrends.php:87
+msgid "API method under construction."
+msgstr ""
+
#: actions/attachment.php:73
#, fuzzy
msgid "No such attachment."
@@ -787,7 +801,7 @@ msgid "Preview"
msgstr ""
#: actions/avatarsettings.php:149 actions/showapplication.php:252
-#: lib/deleteuserform.php:66 lib/noticelist.php:648
+#: lib/deleteuserform.php:66 lib/noticelist.php:656
#, fuzzy
msgid "Delete"
msgstr "מחק"
@@ -1081,7 +1095,7 @@ msgid "Do not delete this notice"
msgstr "×ין הודעה כזו."
#. TRANS: Submit button title for 'Yes' when deleting a notice.
-#: actions/deletenotice.php:158 lib/noticelist.php:648
+#: actions/deletenotice.php:158 lib/noticelist.php:656
msgid "Delete this notice"
msgstr ""
@@ -1379,7 +1393,8 @@ msgstr "כתובת ×תר הבית '%s' ××™× ×” חוקית"
msgid "Could not update group."
msgstr "עידכון המשתמש נכשל."
-#: actions/editgroup.php:264 classes/User_group.php:496
+#. TRANS: Server exception thrown when creating group aliases failed.
+#: actions/editgroup.php:264 classes/User_group.php:514
#, fuzzy
msgid "Could not create aliases."
msgstr "שמירת מידע התמונה נכשל"
@@ -2523,7 +2538,7 @@ msgstr "כל ×”×¢×™×“×›×•× ×™× ×”×ª×•××ž×™× ×ת החיפוש ×חרי \"%s\"
#: actions/nudge.php:85
msgid ""
-"This user doesn't allow nudges or hasn't confirmed or set his email yet."
+"This user doesn't allow nudges or hasn't confirmed or set their email yet."
msgstr ""
#: actions/nudge.php:94
@@ -2600,8 +2615,8 @@ msgid "Only %s URLs over plain HTTP please."
msgstr ""
#. TRANS: Client error on an API request with an unsupported data format.
-#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1179
-#: lib/apiaction.php:1208 lib/apiaction.php:1325
+#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1204
+#: lib/apiaction.php:1232 lib/apiaction.php:1355
msgid "Not a supported data format."
msgstr ""
@@ -3496,7 +3511,7 @@ msgstr "×œ× × ×™×ª×Ÿ ×œ×”×™×¨×©× ×œ×œ× ×”×¡×›×ž×” לרשיון"
msgid "You already repeated that notice."
msgstr "כבר נכנסת למערכת!"
-#: actions/repeat.php:114 lib/noticelist.php:667
+#: actions/repeat.php:114 lib/noticelist.php:675
#, fuzzy
msgid "Repeated"
msgstr "צור"
@@ -3536,7 +3551,7 @@ msgstr "הזנת הודעות של %s"
#, php-format
msgid ""
"This is the timeline showing replies to %1$s but %2$s hasn't received a "
-"notice to his attention yet."
+"notice to them yet."
msgstr ""
#: actions/replies.php:204
@@ -3549,8 +3564,8 @@ msgstr ""
#: actions/replies.php:206
#, php-format
msgid ""
-"You can try to [nudge %1$s](../%2$s) or [post something to his or her "
-"attention](%%%%action.newnotice%%%%?status_textarea=%3$s)."
+"You can try to [nudge %1$s](../%2$s) or [post something to them](%%%%action."
+"newnotice%%%%?status_textarea=%3$s)."
msgstr ""
#: actions/repliesrss.php:72
@@ -3649,7 +3664,7 @@ msgstr "מיקו×"
msgid "Description"
msgstr "הרשמות"
-#: actions/showapplication.php:192 actions/showgroup.php:444
+#: actions/showapplication.php:192 actions/showgroup.php:436
#: lib/profileaction.php:187
msgid "Statistics"
msgstr "סטטיסטיקה"
@@ -3734,16 +3749,16 @@ msgstr ""
#: actions/showfavorites.php:208
#, php-format
msgid ""
-"%s hasn't added any notices to his favorites yet. Post something interesting "
-"they would add to their favorites :)"
+"%s hasn't added any favorite notices yet. Post something interesting they "
+"would add to their favorites :)"
msgstr ""
#: actions/showfavorites.php:212
#, php-format
msgid ""
-"%s hasn't added any notices to his favorites yet. Why not [register an "
-"account](%%%%action.register%%%%) and then post something interesting they "
-"would add to their favorites :)"
+"%s hasn't added any favorite notices yet. Why not [register an account](%%%%"
+"action.register%%%%) and then post something interesting they would add to "
+"their favorites :)"
msgstr ""
#: actions/showfavorites.php:243
@@ -3804,7 +3819,7 @@ msgstr "הזנת הודעות של %s"
msgid "FOAF for %s group"
msgstr "הזנת הודעות של %s"
-#: actions/showgroup.php:393 actions/showgroup.php:453 lib/groupnav.php:91
+#: actions/showgroup.php:393 actions/showgroup.php:445 lib/groupnav.php:91
#, fuzzy
msgid "Members"
msgstr "חבר מ××–"
@@ -3819,12 +3834,12 @@ msgstr ""
msgid "All members"
msgstr ""
-#: actions/showgroup.php:447
+#: actions/showgroup.php:439
#, fuzzy
msgid "Created"
msgstr "צור"
-#: actions/showgroup.php:463
+#: actions/showgroup.php:455
#, php-format
msgid ""
"**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3834,7 +3849,7 @@ msgid ""
"of this group and many more! ([Read more](%%%%doc.help%%%%))"
msgstr ""
-#: actions/showgroup.php:469
+#: actions/showgroup.php:461
#, php-format
msgid ""
"**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3843,7 +3858,7 @@ msgid ""
"their life and interests. "
msgstr ""
-#: actions/showgroup.php:497
+#: actions/showgroup.php:489
msgid "Admins"
msgstr ""
@@ -3919,8 +3934,8 @@ msgstr ""
#: 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)."
+"You can try to nudge %1$s or [post something to them](%%%%action.newnotice%%%"
+"%?status_textarea=%2$s)."
msgstr ""
#: actions/showstream.php:243
@@ -4307,7 +4322,8 @@ msgstr "הגדרות"
msgid "You are not subscribed to that profile."
msgstr "×œ× ×©×œ×—× ×• ×לינו ×ת הפרופיל ×”×–×”"
-#: actions/subedit.php:83 classes/Subscription.php:132
+#. TRANS: Exception thrown when a subscription could not be stored on the server.
+#: actions/subedit.php:83 classes/Subscription.php:136
#, fuzzy
msgid "Could not save subscription."
msgstr "יצירת המנוי נכשלה."
@@ -4480,10 +4496,6 @@ msgstr ""
msgid "No such tag."
msgstr "×ין הודעה כזו."
-#: actions/twitapitrends.php:85
-msgid "API method under construction."
-msgstr ""
-
#: actions/unblock.php:59
#, fuzzy
msgid "You haven't blocked that user."
@@ -4792,160 +4804,257 @@ msgstr "×ישי"
msgid "Author(s)"
msgstr ""
-#: classes/File.php:185
+#. TRANS: Server exception thrown when a URL cannot be processed.
+#: classes/File.php:143
+#, php-format
+msgid "Cannot process URL '%s'"
+msgstr ""
+
+#. TRANS: Server exception thrown when... Robin thinks something is impossible!
+#: classes/File.php:175
+msgid "Robin thinks something is impossible."
+msgstr ""
+
+#. TRANS: Message given if an upload is larger than the configured maximum.
+#. TRANS: %1$d is the byte limit for uploads, %2$d is the byte count for the uploaded file.
+#: classes/File.php:190
#, php-format
msgid ""
-"No file may be larger than %d bytes and the file you sent was %d bytes. Try "
-"to upload a smaller version."
+"No file may be larger than %1$d bytes and the file you sent was %2$d bytes. "
+"Try to upload a smaller version."
msgstr ""
-#: classes/File.php:195
+#. TRANS: Message given if an upload would exceed user quota.
+#. TRANS: %d (number) is the user quota in bytes.
+#: classes/File.php:202
#, php-format
msgid "A file this large would exceed your user quota of %d bytes."
msgstr ""
-#: classes/File.php:202
+#. TRANS: Message given id an upload would exceed a user's monthly quota.
+#. TRANS: $d (number) is the monthly user quota in bytes.
+#: classes/File.php:211
#, php-format
msgid "A file this large would exceed your monthly quota of %d bytes."
msgstr ""
-#: classes/Group_member.php:41
+#. TRANS: Client exception thrown if a file upload does not have a valid name.
+#: classes/File.php:248 classes/File.php:263
+#, fuzzy
+msgid "Invalid filename."
+msgstr "גודל ×œ× ×—×•×§×™."
+
+#. TRANS: Exception thrown when joining a group fails.
+#: classes/Group_member.php:42
#, fuzzy
msgid "Group join failed."
msgstr "×ין הודעה כזו."
-#: classes/Group_member.php:53
+#. TRANS: Exception thrown when trying to leave a group the user is not a member of.
+#: classes/Group_member.php:55
#, fuzzy
msgid "Not part of group."
msgstr "עידכון המשתמש נכשל."
-#: classes/Group_member.php:60
+#. TRANS: Exception thrown when trying to leave a group fails.
+#: classes/Group_member.php:63
#, fuzzy
msgid "Group leave failed."
msgstr "×ין הודעה כזו."
-#: classes/Local_group.php:41
+#. TRANS: Server exception thrown when updating a local group fails.
+#: classes/Local_group.php:42
#, fuzzy
msgid "Could not update local group."
msgstr "עידכון המשתמש נכשל."
-#: classes/Login_token.php:76
+#. TRANS: Exception thrown when trying creating a login token failed.
+#. TRANS: %s is the user nickname for which token creation failed.
+#: classes/Login_token.php:78
#, fuzzy, php-format
msgid "Could not create login token for %s"
msgstr "שמירת מידע התמונה נכשל"
-#: classes/Message.php:45
+#. TRANS: Exception thrown when database name or Data Source Name could not be found.
+#: classes/Memcached_DataObject.php:533
+msgid "No database name or DSN found anywhere."
+msgstr ""
+
+#. TRANS: Client exception thrown when a user tries to send a direct message while being banned from sending them.
+#: classes/Message.php:46
msgid "You are banned from sending direct messages."
msgstr ""
-#: classes/Message.php:61
+#. TRANS: Message given when a message could not be stored on the server.
+#: classes/Message.php:63
msgid "Could not insert message."
msgstr ""
-#: classes/Message.php:71
+#. TRANS: Message given when a message could not be updated on the server.
+#: classes/Message.php:74
msgid "Could not update message with new URI."
msgstr ""
+#. TRANS: Server exception thrown when a user profile for a notice cannot be found.
+#. TRANS: %1$d is a profile ID (number), %2$d is a notice ID (number).
+#: classes/Notice.php:98
+#, php-format
+msgid "No such profile (%1$d) for notice (%2$d)."
+msgstr ""
+
#. TRANS: Server exception. %s are the error details.
-#: classes/Notice.php:182
+#: classes/Notice.php:190
#, fuzzy, php-format
msgid "Database error inserting hashtag: %s"
msgstr "שגי×ת מסד × ×ª×•× ×™× ×‘×”×›× ×¡×ª התגובה: %s"
-#: classes/Notice.php:251
+#. TRANS: Client exception thrown if a notice contains too many characters.
+#: classes/Notice.php:260
#, fuzzy
msgid "Problem saving notice. Too long."
msgstr "בעיה בשמירת ההודעה."
-#: classes/Notice.php:255
+#. TRANS: Client exception thrown when trying to save a notice for an unknown user.
+#: classes/Notice.php:265
#, fuzzy
msgid "Problem saving notice. Unknown user."
msgstr "בעיה בשמירת ההודעה."
-#: classes/Notice.php:260
+#. TRANS: Client exception thrown when a user tries to post too many notices in a given time frame.
+#: classes/Notice.php:271
msgid ""
"Too many notices too fast; take a breather and post again in a few minutes."
msgstr ""
-#: classes/Notice.php:266
+#. TRANS: Client exception thrown when a user tries to post too many duplicate notices in a given time frame.
+#: classes/Notice.php:278
msgid ""
"Too many duplicate messages too quickly; take a breather and post again in a "
"few minutes."
msgstr ""
-#: classes/Notice.php:272
+#. TRANS: Client exception thrown when a user tries to post while being banned.
+#: classes/Notice.php:286
msgid "You are banned from posting notices on this site."
msgstr ""
-#: classes/Notice.php:338 classes/Notice.php:364
+#. TRANS: Server exception thrown when a notice cannot be saved.
+#. TRANS: Server exception thrown when a notice cannot be updated.
+#: classes/Notice.php:353 classes/Notice.php:380
msgid "Problem saving notice."
msgstr "בעיה בשמירת ההודעה."
-#: classes/Notice.php:973
+#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups().
+#: classes/Notice.php:892
+msgid "Bad type provided to saveKnownGroups"
+msgstr ""
+
+#. TRANS: Server exception thrown when an update for a group inbox fails.
+#: classes/Notice.php:991
#, fuzzy
msgid "Problem saving group inbox."
msgstr "בעיה בשמירת ההודעה."
#. TRANS: Message used to repeat a notice. RT is the abbreviation of 'retweet'.
#. TRANS: %1$s is the repeated user's name, %2$s is the repeated notice.
-#: classes/Notice.php:1564
+#: classes/Notice.php:1614
#, php-format
msgid "RT @%1$s %2$s"
msgstr ""
-#: classes/Subscription.php:74 lib/oauthstore.php:465
+#. TRANS: Exception thrown when trying to revoke an existing role for a user that does not exist.
+#. TRANS: %1$s is the role name, %2$s is the user ID (number).
+#: classes/Profile.php:740
+#, php-format
+msgid "Cannot revoke role \"%1$s\" for user #%2$d; does not exist."
+msgstr ""
+
+#. TRANS: Exception thrown when trying to revoke a role for a user with a failing database query.
+#. TRANS: %1$s is the role name, %2$s is the user ID (number).
+#: classes/Profile.php:749
+#, php-format
+msgid "Cannot revoke role \"%1$s\" for user #%2$d; database error."
+msgstr ""
+
+#. TRANS: Exception thrown when a right for a non-existing user profile is checked.
+#: classes/Remote_profile.php:54
+#, fuzzy
+msgid "Missing profile."
+msgstr "למשתמש ×ין פרופיל."
+
+#. TRANS: Exception thrown when a tag cannot be saved.
+#: classes/Status_network.php:346
+#, fuzzy
+msgid "Unable to save tag."
+msgstr "בעיה בשמירת ההודעה."
+
+#. TRANS: Exception thrown when trying to subscribe while being banned from subscribing.
+#: classes/Subscription.php:75 lib/oauthstore.php:465
msgid "You have been banned from subscribing."
msgstr ""
-#: classes/Subscription.php:78
+#. TRANS: Exception thrown when trying to subscribe while already subscribed.
+#: classes/Subscription.php:80
msgid "Already subscribed!"
msgstr ""
-#: classes/Subscription.php:82
+#. TRANS: Exception thrown when trying to subscribe to a user who has blocked the subscribing user.
+#: classes/Subscription.php:85
#, fuzzy
msgid "User has blocked you."
msgstr "למשתמש ×ין פרופיל."
-#: classes/Subscription.php:167
+#. TRANS: Exception thrown when trying to unsibscribe without a subscription.
+#: classes/Subscription.php:171
#, fuzzy
msgid "Not subscribed!"
msgstr "×œ× ×ž× ×•×™!"
-#: classes/Subscription.php:173
+#. TRANS: Exception thrown when trying to unsubscribe a user from themselves.
+#: classes/Subscription.php:178
#, fuzzy
-msgid "Couldn't delete self-subscription."
+msgid "Could not delete self-subscription."
msgstr "מחיקת המנוי ×œ× ×”×¦×œ×™×—×”."
-#: classes/Subscription.php:200
+#. TRANS: Exception thrown when the OMB token for a subscription could not deleted on the server.
+#: classes/Subscription.php:206
#, fuzzy
-msgid "Couldn't delete subscription OMB token."
+msgid "Could not delete subscription OMB token."
msgstr "מחיקת המנוי ×œ× ×”×¦×œ×™×—×”."
-#: classes/Subscription.php:211
-msgid "Couldn't delete subscription."
+#. TRANS: Exception thrown when a subscription could not be deleted on the server.
+#: classes/Subscription.php:218
+#, fuzzy
+msgid "Could not delete subscription."
msgstr "מחיקת המנוי ×œ× ×”×¦×œ×™×—×”."
-#: classes/User.php:363
+#. TRANS: Notice given on user registration.
+#. TRANS: %1$s is the sitename, $2$s is the registering user's nickname.
+#: classes/User.php:365
#, php-format
msgid "Welcome to %1$s, @%2$s!"
msgstr ""
-#: classes/User_group.php:480
+#. TRANS: Server exception thrown when creating a group failed.
+#: classes/User_group.php:496
#, fuzzy
msgid "Could not create group."
msgstr "שמירת מידע התמונה נכשל"
-#: classes/User_group.php:489
+#. TRANS: Server exception thrown when updating a group URI failed.
+#: classes/User_group.php:506
#, fuzzy
msgid "Could not set group URI."
msgstr "יצירת המנוי נכשלה."
-#: classes/User_group.php:510
+#. TRANS: Server exception thrown when setting group membership failed.
+#: classes/User_group.php:529
#, fuzzy
msgid "Could not set group membership."
msgstr "יצירת המנוי נכשלה."
-#: classes/User_group.php:524
+#. TRANS: Server exception thrown when saving local group information failed.
+#: classes/User_group.php:544
#, fuzzy
msgid "Could not save local group info."
msgstr "יצירת המנוי נכשלה."
@@ -6324,7 +6433,7 @@ msgid ""
"users in conversation. People can send you messages for your eyes only."
msgstr ""
-#: lib/mailbox.php:227 lib/noticelist.php:497
+#: lib/mailbox.php:227 lib/noticelist.php:505
msgid "from"
msgstr ""
@@ -6379,25 +6488,25 @@ msgstr ""
msgid "File upload stopped by extension."
msgstr ""
-#: lib/mediafile.php:179 lib/mediafile.php:216
+#: lib/mediafile.php:179 lib/mediafile.php:217
msgid "File exceeds user's quota."
msgstr ""
-#: lib/mediafile.php:196 lib/mediafile.php:233
+#: lib/mediafile.php:197 lib/mediafile.php:234
msgid "File could not be moved to destination directory."
msgstr ""
-#: lib/mediafile.php:201 lib/mediafile.php:237
+#: lib/mediafile.php:202 lib/mediafile.php:238
#, fuzzy
msgid "Could not determine file's MIME type."
msgstr "עידכון המשתמש נכשל."
-#: lib/mediafile.php:270
+#: lib/mediafile.php:318
#, php-format
msgid " Try using another %s format."
msgstr ""
-#: lib/mediafile.php:275
+#: lib/mediafile.php:323
#, php-format
msgid "%s is not a supported file type on this server."
msgstr ""
@@ -6456,55 +6565,55 @@ msgid ""
msgstr ""
#. TRANS: Used in coordinates as abbreviation of north
-#: lib/noticelist.php:430
+#: lib/noticelist.php:436
#, fuzzy
msgid "N"
msgstr "ל×"
#. TRANS: Used in coordinates as abbreviation of south
-#: lib/noticelist.php:432
+#: lib/noticelist.php:438
msgid "S"
msgstr ""
#. TRANS: Used in coordinates as abbreviation of east
-#: lib/noticelist.php:434
+#: lib/noticelist.php:440
msgid "E"
msgstr ""
#. TRANS: Used in coordinates as abbreviation of west
-#: lib/noticelist.php:436
+#: lib/noticelist.php:442
msgid "W"
msgstr ""
-#: lib/noticelist.php:438
+#: lib/noticelist.php:444
#, php-format
msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
msgstr ""
-#: lib/noticelist.php:447
+#: lib/noticelist.php:453
msgid "at"
msgstr ""
-#: lib/noticelist.php:559
+#: lib/noticelist.php:567
#, fuzzy
msgid "in context"
msgstr "×ין תוכן!"
-#: lib/noticelist.php:594
+#: lib/noticelist.php:602
#, fuzzy
msgid "Repeated by"
msgstr "צור"
-#: lib/noticelist.php:621
+#: lib/noticelist.php:629
msgid "Reply to this notice"
msgstr ""
-#: lib/noticelist.php:622
+#: lib/noticelist.php:630
#, fuzzy
msgid "Reply"
msgstr "הגב"
-#: lib/noticelist.php:666
+#: lib/noticelist.php:674
#, fuzzy
msgid "Notice repeated"
msgstr "הודעות"
@@ -6776,9 +6885,8 @@ msgid "This server cannot handle theme uploads without ZIP support."
msgstr ""
#: lib/themeuploader.php:58 lib/themeuploader.php:61
-#, fuzzy
-msgid "Theme upload missing or failed."
-msgstr "שגי×ת מערכת בהעל×ת הקובץ."
+msgid "The theme file is missing or the upload failed."
+msgstr ""
#: lib/themeuploader.php:91 lib/themeuploader.php:102
#: lib/themeuploader.php:253 lib/themeuploader.php:257
diff --git a/locale/hsb/LC_MESSAGES/statusnet.po b/locale/hsb/LC_MESSAGES/statusnet.po
index 1c5781d51..e0cc3dc43 100644
--- a/locale/hsb/LC_MESSAGES/statusnet.po
+++ b/locale/hsb/LC_MESSAGES/statusnet.po
@@ -1,5 +1,6 @@
# Translation of StatusNet to Upper Sorbian
#
+# Author@translatewiki.net: Brion
# Author@translatewiki.net: McDutchie
# Author@translatewiki.net: Michawiki
# --
@@ -9,12 +10,12 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-06-16 22:18+0000\n"
-"PO-Revision-Date: 2010-06-21 18:03:58+0000\n"
+"POT-Creation-Date: 2010-08-03 13:21+0000\n"
+"PO-Revision-Date: 2010-08-03 13:22:04+0000\n"
"Language-Team: Dutch\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.17alpha (r68367); Translate extension (2010-06-12)\n"
+"X-Generator: MediaWiki 1.17alpha (r70381); Translate extension (2010-07-21)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: hsb\n"
"X-Message-Group: out-statusnet\n"
@@ -99,7 +100,7 @@ msgstr "Strona njeeksistuje."
#: actions/apidirectmessagenew.php:74 actions/apigroupcreate.php:113
#: actions/apigroupismember.php:91 actions/apigroupjoin.php:100
#: actions/apigroupleave.php:100 actions/apigrouplist.php:73
-#: actions/apistatusesupdate.php:228 actions/apisubscriptions.php:87
+#: actions/apistatusesupdate.php:229 actions/apisubscriptions.php:87
#: actions/apitimelinefavorites.php:72 actions/apitimelinefriends.php:174
#: actions/apitimelinehome.php:80 actions/apitimelinementions.php:80
#: actions/apitimelineuser.php:82 actions/avatarbynickname.php:75
@@ -166,15 +167,15 @@ msgstr ""
#: actions/all.php:146
#, 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)."
+"You can try to [nudge %1$s](../%2$s) from their profile or [post something "
+"to them](%%%%action.newnotice%%%%?status_textarea=%3$s)."
msgstr ""
#: actions/all.php:149 actions/replies.php:210 actions/showstream.php:211
#, php-format
msgid ""
"Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
-"post a notice to his or her attention."
+"post a notice to them."
msgstr ""
#. TRANS: H1 text
@@ -207,7 +208,7 @@ msgstr "Aktualizacije wot %1$s a přećelow na %2$s!"
#: actions/apistatusesshow.php:109 actions/apistatusnetconfig.php:141
#: actions/apistatusnetversion.php:93 actions/apisubscriptions.php:111
#: actions/apitimelinefavorites.php:174 actions/apitimelinefriends.php:271
-#: actions/apitimelinegroup.php:152 actions/apitimelinehome.php:175
+#: actions/apitimelinegroup.php:154 actions/apitimelinehome.php:175
#: actions/apitimelinementions.php:174 actions/apitimelinepublic.php:241
#: actions/apitimelineretweetedtome.php:121
#: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161
@@ -255,7 +256,7 @@ msgstr "Profil njeje so składować dał."
#: actions/apiaccountupdateprofilebackgroundimage.php:108
#: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80
-#: actions/apistatusesupdate.php:211 actions/avatarsettings.php:257
+#: actions/apistatusesupdate.php:212 actions/avatarsettings.php:257
#: actions/designadminpanel.php:123 actions/editapplication.php:118
#: actions/newapplication.php:101 actions/newnotice.php:94
#: lib/designsettings.php:283
@@ -353,8 +354,8 @@ msgid "Could not delete favorite."
msgstr "Faworit njeda so zhašeć."
#: actions/apifriendshipscreate.php:109
-msgid "Could not follow user: User not found."
-msgstr ""
+msgid "Could not follow user: profile not found."
+msgstr "Njebě móžno wužiwarja słědować: profil njenamakany."
#: actions/apifriendshipscreate.php:118
#, php-format
@@ -369,9 +370,9 @@ msgstr ""
msgid "You cannot unfollow yourself."
msgstr "Njemóžeš slědowanje swójskich aktiwitow blokować."
-#: actions/apifriendshipsexists.php:94
-msgid "Two user ids or screen_names must be supplied."
-msgstr "Dwaj wužiwarskej ID abo wužiwarskej mjenje dyrbitej so podać."
+#: actions/apifriendshipsexists.php:91
+msgid "Two valid IDs or screen_names must be supplied."
+msgstr "Dyrbitej so dwaj płaćiwej wužiwarskej ID abo wužiwarskej mjenje podać."
#: actions/apifriendshipsshow.php:134
msgid "Could not determine source user."
@@ -386,6 +387,7 @@ msgstr "Cilowy wužiwar njeda so namakać."
#: actions/register.php:212
msgid "Nickname must have only lowercase letters and numbers and no spaces."
msgstr ""
+"Přimjeno smě jenož małe pismiki a cyfry wobsahować. Mjezery njejsu dowolene."
#: actions/apigroupcreate.php:176 actions/editgroup.php:190
#: actions/newgroup.php:130 actions/profilesettings.php:238
@@ -498,6 +500,10 @@ msgstr "%s skupinow"
msgid "groups on %s"
msgstr "skupiny na %s"
+#: actions/apimediaupload.php:99
+msgid "Upload failed."
+msgstr "Nahraće je so njeporadźiło."
+
#: actions/apioauthauthorize.php:101
msgid "No oauth_token parameter provided."
msgstr ""
@@ -636,22 +642,26 @@ msgstr "Status zniÄeny."
msgid "No status with that ID found."
msgstr "Žadyn status z tym ID namakany."
-#: actions/apistatusesupdate.php:241 actions/newnotice.php:155
+#: actions/apistatusesupdate.php:221
+msgid "Client must provide a 'status' parameter with a value."
+msgstr ""
+
+#: actions/apistatusesupdate.php:242 actions/newnotice.php:155
#: lib/mailhandler.php:60
#, php-format
msgid "That's too long. Max notice size is %d chars."
msgstr "To je předołho. Maksimalna wulkosć zdźělenki je %d znamješkow."
-#: actions/apistatusesupdate.php:282 actions/apiusershow.php:96
+#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96
msgid "Not found."
msgstr "Njenamakany."
-#: actions/apistatusesupdate.php:305 actions/newnotice.php:178
+#: actions/apistatusesupdate.php:306 actions/newnotice.php:178
#, php-format
msgid "Max notice size is %d chars, including attachment URL."
msgstr ""
-#: actions/apisubscriptions.php:231 actions/apisubscriptions.php:261
+#: actions/apisubscriptions.php:232 actions/apisubscriptions.php:262
msgid "Unsupported format."
msgstr "Njepodpěrany format."
@@ -705,6 +715,10 @@ msgstr ""
msgid "Updates tagged with %1$s on %2$s!"
msgstr ""
+#: actions/apitrends.php:87
+msgid "API method under construction."
+msgstr ""
+
#: actions/attachment.php:73
msgid "No such attachment."
msgstr "Přiwěšk njeeksistuje."
@@ -758,7 +772,7 @@ msgid "Preview"
msgstr "Přehlad"
#: actions/avatarsettings.php:149 actions/showapplication.php:252
-#: lib/deleteuserform.php:66 lib/noticelist.php:648
+#: lib/deleteuserform.php:66 lib/noticelist.php:656
msgid "Delete"
msgstr "ZniÄić"
@@ -1031,7 +1045,7 @@ msgid "Do not delete this notice"
msgstr "Tutu zdźělenku njewušmórnyć"
#. TRANS: Submit button title for 'Yes' when deleting a notice.
-#: actions/deletenotice.php:158 lib/noticelist.php:648
+#: actions/deletenotice.php:158 lib/noticelist.php:656
msgid "Delete this notice"
msgstr "Tutu zdźělenku wušmórnyć"
@@ -1104,7 +1118,7 @@ msgstr "Swójski šat"
#: actions/designadminpanel.php:471
msgid "You can upload a custom StatusNet theme as a .ZIP archive."
-msgstr ""
+msgstr "Móžeš swójski šat StatusNet jako .ZIP-archiw nahrać."
#: actions/designadminpanel.php:486 lib/designsettings.php:101
msgid "Change background image"
@@ -1306,7 +1320,8 @@ msgstr "Njepłaćiwy alias: \"%s\""
msgid "Could not update group."
msgstr "Skupina njeje so dała aktualizować."
-#: actions/editgroup.php:264 classes/User_group.php:496
+#. TRANS: Server exception thrown when creating group aliases failed.
+#: actions/editgroup.php:264 classes/User_group.php:514
msgid "Could not create aliases."
msgstr "Aliasy njejsu so dali wutworić."
@@ -2263,12 +2278,12 @@ msgstr "%1$s je hižo administrator za skupinu \"%2$s\"."
#: actions/makeadmin.php:133
#, php-format
msgid "Can't get membership record for %1$s in group %2$s."
-msgstr "PÅ™istup na datowu sadźbu ÄÅ‚ona %1$S w skupinje %2$s móžno njeje."
+msgstr "PÅ™istup na datowu sadźbu ÄÅ‚ona %1$s w skupinje %2$s móžno njeje."
#: actions/makeadmin.php:146
#, php-format
msgid "Can't make %1$s an admin for group %2$s."
-msgstr "Njeje móžno %1$S k administratorej w skupinje %2$s Äinić."
+msgstr "Njeje móžno %1$s k administratorej w skupinje %2$s Äinić."
#: actions/microsummary.php:69
msgid "No current status."
@@ -2387,7 +2402,7 @@ msgstr ""
#: actions/nudge.php:85
msgid ""
-"This user doesn't allow nudges or hasn't confirmed or set his email yet."
+"This user doesn't allow nudges or hasn't confirmed or set their email yet."
msgstr ""
#: actions/nudge.php:94
@@ -2462,8 +2477,8 @@ msgid "Only %s URLs over plain HTTP please."
msgstr ""
#. TRANS: Client error on an API request with an unsupported data format.
-#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1179
-#: lib/apiaction.php:1208 lib/apiaction.php:1325
+#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1204
+#: lib/apiaction.php:1232 lib/apiaction.php:1355
msgid "Not a supported data format."
msgstr "Njeje podpěrany datowy format."
@@ -3321,7 +3336,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:667
+#: actions/repeat.php:114 lib/noticelist.php:675
msgid "Repeated"
msgstr "Wospjetowany"
@@ -3359,7 +3374,7 @@ msgstr ""
#, php-format
msgid ""
"This is the timeline showing replies to %1$s but %2$s hasn't received a "
-"notice to his attention yet."
+"notice to them yet."
msgstr ""
#: actions/replies.php:204
@@ -3372,8 +3387,8 @@ msgstr ""
#: actions/replies.php:206
#, php-format
msgid ""
-"You can try to [nudge %1$s](../%2$s) or [post something to his or her "
-"attention](%%%%action.newnotice%%%%?status_textarea=%3$s)."
+"You can try to [nudge %1$s](../%2$s) or [post something to them](%%%%action."
+"newnotice%%%%?status_textarea=%3$s)."
msgstr ""
#: actions/repliesrss.php:72
@@ -3462,7 +3477,7 @@ msgstr "Organizacija"
msgid "Description"
msgstr "Wopisanje"
-#: actions/showapplication.php:192 actions/showgroup.php:444
+#: actions/showapplication.php:192 actions/showgroup.php:436
#: lib/profileaction.php:187
msgid "Statistics"
msgstr "Statistika"
@@ -3547,16 +3562,16 @@ msgstr ""
#: actions/showfavorites.php:208
#, php-format
msgid ""
-"%s hasn't added any notices to his favorites yet. Post something interesting "
-"they would add to their favorites :)"
+"%s hasn't added any favorite notices yet. Post something interesting they "
+"would add to their favorites :)"
msgstr ""
#: actions/showfavorites.php:212
#, php-format
msgid ""
-"%s hasn't added any notices to his favorites yet. Why not [register an "
-"account](%%%%action.register%%%%) and then post something interesting they "
-"would add to their favorites :)"
+"%s hasn't added any favorite notices yet. Why not [register an account](%%%%"
+"action.register%%%%) and then post something interesting they would add to "
+"their favorites :)"
msgstr ""
#: actions/showfavorites.php:243
@@ -3615,7 +3630,7 @@ msgstr ""
msgid "FOAF for %s group"
msgstr ""
-#: actions/showgroup.php:393 actions/showgroup.php:453 lib/groupnav.php:91
+#: actions/showgroup.php:393 actions/showgroup.php:445 lib/groupnav.php:91
msgid "Members"
msgstr "Čłonojo"
@@ -3629,11 +3644,11 @@ msgstr "(Žadyn)"
msgid "All members"
msgstr "WÅ¡itcy ÄÅ‚onojo"
-#: actions/showgroup.php:447
+#: actions/showgroup.php:439
msgid "Created"
msgstr "Wutworjeny"
-#: actions/showgroup.php:463
+#: actions/showgroup.php:455
#, php-format
msgid ""
"**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3643,7 +3658,7 @@ msgid ""
"of this group and many more! ([Read more](%%%%doc.help%%%%))"
msgstr ""
-#: actions/showgroup.php:469
+#: actions/showgroup.php:461
#, php-format
msgid ""
"**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3652,7 +3667,7 @@ msgid ""
"their life and interests. "
msgstr ""
-#: actions/showgroup.php:497
+#: actions/showgroup.php:489
msgid "Admins"
msgstr "Administratorojo"
@@ -3727,8 +3742,8 @@ msgstr ""
#: 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)."
+"You can try to nudge %1$s or [post something to them](%%%%action.newnotice%%%"
+"%?status_textarea=%2$s)."
msgstr ""
#: actions/showstream.php:243
@@ -4095,7 +4110,8 @@ msgstr "Nastajenja wobrazowkoweho fota składować"
msgid "You are not subscribed to that profile."
msgstr "Njejsy tón profil abonował."
-#: actions/subedit.php:83 classes/Subscription.php:132
+#. TRANS: Exception thrown when a subscription could not be stored on the server.
+#: actions/subedit.php:83 classes/Subscription.php:136
msgid "Could not save subscription."
msgstr "Abonement njeda so składować."
@@ -4259,10 +4275,6 @@ msgstr ""
msgid "No such tag."
msgstr ""
-#: actions/twitapitrends.php:85
-msgid "API method under construction."
-msgstr ""
-
#: actions/unblock.php:59
msgid "You haven't blocked that user."
msgstr "Njejsy toho wužiwarja zablokował."
@@ -4548,146 +4560,239 @@ msgstr "Wersija"
msgid "Author(s)"
msgstr "Awtorojo"
-#: classes/File.php:185
+#. TRANS: Server exception thrown when a URL cannot be processed.
+#: classes/File.php:143
+#, php-format
+msgid "Cannot process URL '%s'"
+msgstr ""
+
+#. TRANS: Server exception thrown when... Robin thinks something is impossible!
+#: classes/File.php:175
+msgid "Robin thinks something is impossible."
+msgstr ""
+
+#. TRANS: Message given if an upload is larger than the configured maximum.
+#. TRANS: %1$d is the byte limit for uploads, %2$d is the byte count for the uploaded file.
+#: classes/File.php:190
#, php-format
msgid ""
-"No file may be larger than %d bytes and the file you sent was %d bytes. Try "
-"to upload a smaller version."
+"No file may be larger than %1$d bytes and the file you sent was %2$d bytes. "
+"Try to upload a smaller version."
msgstr ""
-#: classes/File.php:195
+#. TRANS: Message given if an upload would exceed user quota.
+#. TRANS: %d (number) is the user quota in bytes.
+#: classes/File.php:202
#, php-format
msgid "A file this large would exceed your user quota of %d bytes."
msgstr ""
-#: classes/File.php:202
+#. TRANS: Message given id an upload would exceed a user's monthly quota.
+#. TRANS: $d (number) is the monthly user quota in bytes.
+#: classes/File.php:211
#, php-format
msgid "A file this large would exceed your monthly quota of %d bytes."
msgstr ""
-#: classes/Group_member.php:41
+#. TRANS: Client exception thrown if a file upload does not have a valid name.
+#: classes/File.php:248 classes/File.php:263
+msgid "Invalid filename."
+msgstr "Njepłaćiwe datajowe mjeno."
+
+#. TRANS: Exception thrown when joining a group fails.
+#: classes/Group_member.php:42
msgid "Group join failed."
msgstr "Přizamknjenje k skupinje je so njeporadźiło."
-#: classes/Group_member.php:53
+#. TRANS: Exception thrown when trying to leave a group the user is not a member of.
+#: classes/Group_member.php:55
msgid "Not part of group."
msgstr "Njeje dźěl skupiny."
-#: classes/Group_member.php:60
+#. TRANS: Exception thrown when trying to leave a group fails.
+#: classes/Group_member.php:63
msgid "Group leave failed."
msgstr "Wopušćenje skupiny je so njeporadźiło."
-#: classes/Local_group.php:41
+#. TRANS: Server exception thrown when updating a local group fails.
+#: classes/Local_group.php:42
msgid "Could not update local group."
msgstr "Lokalna skupina njeda so aktualizować."
-#: classes/Login_token.php:76
+#. TRANS: Exception thrown when trying creating a login token failed.
+#. TRANS: %s is the user nickname for which token creation failed.
+#: classes/Login_token.php:78
#, php-format
msgid "Could not create login token for %s"
msgstr "Njeje móžno było, přizjewjenske znamješko za %s wutworić"
-#: classes/Message.php:45
+#. TRANS: Exception thrown when database name or Data Source Name could not be found.
+#: classes/Memcached_DataObject.php:533
+msgid "No database name or DSN found anywhere."
+msgstr ""
+
+#. TRANS: Client exception thrown when a user tries to send a direct message while being banned from sending them.
+#: classes/Message.php:46
msgid "You are banned from sending direct messages."
msgstr ""
-#: classes/Message.php:61
+#. TRANS: Message given when a message could not be stored on the server.
+#: classes/Message.php:63
msgid "Could not insert message."
msgstr "Powěsć njeda so zasunyć."
-#: classes/Message.php:71
+#. TRANS: Message given when a message could not be updated on the server.
+#: classes/Message.php:74
msgid "Could not update message with new URI."
msgstr ""
+#. TRANS: Server exception thrown when a user profile for a notice cannot be found.
+#. TRANS: %1$d is a profile ID (number), %2$d is a notice ID (number).
+#: classes/Notice.php:98
+#, php-format
+msgid "No such profile (%1$d) for notice (%2$d)."
+msgstr ""
+
#. TRANS: Server exception. %s are the error details.
-#: classes/Notice.php:182
+#: classes/Notice.php:190
#, php-format
msgid "Database error inserting hashtag: %s"
msgstr "Zmylk datoweje banki pÅ™i zasunjenju haÅ¡eje tafliÄki: %s"
-#: classes/Notice.php:251
+#. TRANS: Client exception thrown if a notice contains too many characters.
+#: classes/Notice.php:260
msgid "Problem saving notice. Too long."
msgstr ""
-#: classes/Notice.php:255
+#. TRANS: Client exception thrown when trying to save a notice for an unknown user.
+#: classes/Notice.php:265
msgid "Problem saving notice. Unknown user."
msgstr ""
-#: classes/Notice.php:260
+#. TRANS: Client exception thrown when a user tries to post too many notices in a given time frame.
+#: classes/Notice.php:271
msgid ""
"Too many notices too fast; take a breather and post again in a few minutes."
msgstr ""
-#: classes/Notice.php:266
+#. TRANS: Client exception thrown when a user tries to post too many duplicate notices in a given time frame.
+#: classes/Notice.php:278
msgid ""
"Too many duplicate messages too quickly; take a breather and post again in a "
"few minutes."
msgstr ""
-#: classes/Notice.php:272
+#. TRANS: Client exception thrown when a user tries to post while being banned.
+#: classes/Notice.php:286
msgid "You are banned from posting notices on this site."
msgstr ""
-#: classes/Notice.php:338 classes/Notice.php:364
+#. TRANS: Server exception thrown when a notice cannot be saved.
+#. TRANS: Server exception thrown when a notice cannot be updated.
+#: classes/Notice.php:353 classes/Notice.php:380
msgid "Problem saving notice."
msgstr ""
-#: classes/Notice.php:973
+#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups().
+#: classes/Notice.php:892
+msgid "Bad type provided to saveKnownGroups"
+msgstr ""
+
+#. TRANS: Server exception thrown when an update for a group inbox fails.
+#: classes/Notice.php:991
msgid "Problem saving group inbox."
msgstr ""
#. TRANS: Message used to repeat a notice. RT is the abbreviation of 'retweet'.
#. TRANS: %1$s is the repeated user's name, %2$s is the repeated notice.
-#: classes/Notice.php:1564
+#: classes/Notice.php:1614
#, php-format
msgid "RT @%1$s %2$s"
msgstr ""
-#: classes/Subscription.php:74 lib/oauthstore.php:465
+#. TRANS: Exception thrown when trying to revoke an existing role for a user that does not exist.
+#. TRANS: %1$s is the role name, %2$s is the user ID (number).
+#: classes/Profile.php:740
+#, php-format
+msgid "Cannot revoke role \"%1$s\" for user #%2$d; does not exist."
+msgstr ""
+
+#. TRANS: Exception thrown when trying to revoke a role for a user with a failing database query.
+#. TRANS: %1$s is the role name, %2$s is the user ID (number).
+#: classes/Profile.php:749
+#, php-format
+msgid "Cannot revoke role \"%1$s\" for user #%2$d; database error."
+msgstr ""
+
+#. TRANS: Exception thrown when a right for a non-existing user profile is checked.
+#: classes/Remote_profile.php:54
+msgid "Missing profile."
+msgstr "Falowacy profil."
+
+#. TRANS: Exception thrown when a tag cannot be saved.
+#: classes/Status_network.php:346
+msgid "Unable to save tag."
+msgstr "Njeje móžno, tafliÄku skÅ‚adować."
+
+#. TRANS: Exception thrown when trying to subscribe while being banned from subscribing.
+#: classes/Subscription.php:75 lib/oauthstore.php:465
msgid "You have been banned from subscribing."
msgstr ""
-#: classes/Subscription.php:78
+#. TRANS: Exception thrown when trying to subscribe while already subscribed.
+#: classes/Subscription.php:80
msgid "Already subscribed!"
msgstr "Hižo abonowany!"
-#: classes/Subscription.php:82
+#. TRANS: Exception thrown when trying to subscribe to a user who has blocked the subscribing user.
+#: classes/Subscription.php:85
msgid "User has blocked you."
msgstr "Wužiwar je će zablokował."
-#: classes/Subscription.php:167
+#. TRANS: Exception thrown when trying to unsibscribe without a subscription.
+#: classes/Subscription.php:171
msgid "Not subscribed!"
msgstr "Njeje abonowany!"
-#: classes/Subscription.php:173
-msgid "Couldn't delete self-subscription."
-msgstr "Sebjeabonement njeje so daÅ‚ zniÄić."
+#. TRANS: Exception thrown when trying to unsubscribe a user from themselves.
+#: classes/Subscription.php:178
+msgid "Could not delete self-subscription."
+msgstr "Sebjeabonement njeda so zhašeć."
-#: classes/Subscription.php:200
-msgid "Couldn't delete subscription OMB token."
+#. TRANS: Exception thrown when the OMB token for a subscription could not deleted on the server.
+#: classes/Subscription.php:206
+msgid "Could not delete subscription OMB token."
msgstr "Znamjo OMB-abonementa njeda so zhašeć."
-#: classes/Subscription.php:211
-msgid "Couldn't delete subscription."
-msgstr "Abonoment njeje so daÅ‚ zniÄić."
+#. TRANS: Exception thrown when a subscription could not be deleted on the server.
+#: classes/Subscription.php:218
+msgid "Could not delete subscription."
+msgstr "Abonoment njeda so zhašeć ."
-#: classes/User.php:363
+#. TRANS: Notice given on user registration.
+#. TRANS: %1$s is the sitename, $2$s is the registering user's nickname.
+#: classes/User.php:365
#, php-format
msgid "Welcome to %1$s, @%2$s!"
msgstr "Witaj do %1$s, @%2$s!"
-#: classes/User_group.php:480
+#. TRANS: Server exception thrown when creating a group failed.
+#: classes/User_group.php:496
msgid "Could not create group."
msgstr "Skupina njeda so wutowrić."
-#: classes/User_group.php:489
+#. TRANS: Server exception thrown when updating a group URI failed.
+#: classes/User_group.php:506
msgid "Could not set group URI."
msgstr "URI skupiny njeda so nastajić."
-#: classes/User_group.php:510
+#. TRANS: Server exception thrown when setting group membership failed.
+#: classes/User_group.php:529
msgid "Could not set group membership."
msgstr "Skupinske ÄÅ‚onstwo njeda so stajić."
-#: classes/User_group.php:524
+#. TRANS: Server exception thrown when saving local group information failed.
+#: classes/User_group.php:544
msgid "Could not save local group info."
msgstr "Informacije wo lokalnej skupinje njedachu so składować."
@@ -4980,13 +5085,13 @@ msgstr ""
#. TRANS: present than the currently displayed information.
#: lib/action.php:1203
msgid "After"
-msgstr ""
+msgstr "Po"
#. TRANS: Pagination message to go to a page displaying information more in the
#. TRANS: past than the currently displayed information.
#: lib/action.php:1213
msgid "Before"
-msgstr ""
+msgstr "Před"
#. TRANS: Client exception thrown when a feed instance is a DOMDocument.
#: lib/activity.php:122
@@ -6008,7 +6113,7 @@ msgid ""
"users in conversation. People can send you messages for your eyes only."
msgstr ""
-#: lib/mailbox.php:227 lib/noticelist.php:497
+#: lib/mailbox.php:227 lib/noticelist.php:505
msgid "from"
msgstr "wot"
@@ -6065,24 +6170,24 @@ msgstr "Dataju njeda so na taÄel pisać."
msgid "File upload stopped by extension."
msgstr "Datajowe nahraće přez rozšěrjenje zastajene."
-#: lib/mediafile.php:179 lib/mediafile.php:216
+#: lib/mediafile.php:179 lib/mediafile.php:217
msgid "File exceeds user's quota."
msgstr ""
-#: lib/mediafile.php:196 lib/mediafile.php:233
+#: lib/mediafile.php:197 lib/mediafile.php:234
msgid "File could not be moved to destination directory."
msgstr "Dataja njeda so do ciloweho zapisa přesunyć."
-#: lib/mediafile.php:201 lib/mediafile.php:237
+#: lib/mediafile.php:202 lib/mediafile.php:238
msgid "Could not determine file's MIME type."
msgstr "MIME-typ dataje njeda so zwěsćić."
-#: lib/mediafile.php:270
+#: lib/mediafile.php:318
#, php-format
msgid " Try using another %s format."
msgstr "Spytaj druhi format %s."
-#: lib/mediafile.php:275
+#: lib/mediafile.php:323
#, php-format
msgid "%s is not a supported file type on this server."
msgstr "%s njeje podpěrany datajowy typ na tutym serwerje."
@@ -6136,51 +6241,51 @@ msgid ""
msgstr ""
#. TRANS: Used in coordinates as abbreviation of north
-#: lib/noticelist.php:430
+#: lib/noticelist.php:436
msgid "N"
msgstr "S"
#. TRANS: Used in coordinates as abbreviation of south
-#: lib/noticelist.php:432
+#: lib/noticelist.php:438
msgid "S"
msgstr "J"
#. TRANS: Used in coordinates as abbreviation of east
-#: lib/noticelist.php:434
+#: lib/noticelist.php:440
msgid "E"
msgstr "W"
#. TRANS: Used in coordinates as abbreviation of west
-#: lib/noticelist.php:436
+#: lib/noticelist.php:442
msgid "W"
msgstr "Z"
-#: lib/noticelist.php:438
+#: lib/noticelist.php:444
#, php-format
msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
msgstr "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
-#: lib/noticelist.php:447
+#: lib/noticelist.php:453
msgid "at"
msgstr ""
-#: lib/noticelist.php:559
+#: lib/noticelist.php:567
msgid "in context"
msgstr "w konteksće"
-#: lib/noticelist.php:594
+#: lib/noticelist.php:602
msgid "Repeated by"
msgstr "Wospjetowany wot"
-#: lib/noticelist.php:621
+#: lib/noticelist.php:629
msgid "Reply to this notice"
msgstr "Na tutu zdźělenku wotmołwić"
-#: lib/noticelist.php:622
+#: lib/noticelist.php:630
msgid "Reply"
msgstr "Wotmołwić"
-#: lib/noticelist.php:666
+#: lib/noticelist.php:674
msgid "Notice repeated"
msgstr "Zdźělenka wospjetowana"
@@ -6438,8 +6543,8 @@ msgid "This server cannot handle theme uploads without ZIP support."
msgstr ""
#: lib/themeuploader.php:58 lib/themeuploader.php:61
-msgid "Theme upload missing or failed."
-msgstr "Nahraće šata faluje abo je so njeporadźiło."
+msgid "The theme file is missing or the upload failed."
+msgstr ""
#: lib/themeuploader.php:91 lib/themeuploader.php:102
#: lib/themeuploader.php:253 lib/themeuploader.php:257
diff --git a/locale/ia/LC_MESSAGES/statusnet.po b/locale/ia/LC_MESSAGES/statusnet.po
index cc699cef4..e0961e447 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-06-16 22:18+0000\n"
-"PO-Revision-Date: 2010-06-21 18:04:03+0000\n"
+"POT-Creation-Date: 2010-08-03 13:21+0000\n"
+"PO-Revision-Date: 2010-08-03 13:22:07+0000\n"
"Language-Team: Interlingua\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.17alpha (r68367); Translate extension (2010-06-12)\n"
+"X-Generator: MediaWiki 1.17alpha (r70381); Translate extension (2010-07-21)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: ia\n"
"X-Message-Group: out-statusnet\n"
@@ -97,7 +97,7 @@ msgstr "Pagina non existe."
#: actions/apidirectmessagenew.php:74 actions/apigroupcreate.php:113
#: actions/apigroupismember.php:91 actions/apigroupjoin.php:100
#: actions/apigroupleave.php:100 actions/apigrouplist.php:73
-#: actions/apistatusesupdate.php:228 actions/apisubscriptions.php:87
+#: actions/apistatusesupdate.php:229 actions/apisubscriptions.php:87
#: actions/apitimelinefavorites.php:72 actions/apitimelinefriends.php:174
#: actions/apitimelinehome.php:80 actions/apitimelinementions.php:80
#: actions/apitimelineuser.php:82 actions/avatarbynickname.php:75
@@ -168,8 +168,8 @@ msgstr ""
#: actions/all.php:146
#, 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)."
+"You can try to [nudge %1$s](../%2$s) from their profile or [post something "
+"to them](%%%%action.newnotice%%%%?status_textarea=%3$s)."
msgstr ""
"Tu pote tentar [dar un pulsata a %1$s](../%2$s) in su profilo o [publicar un "
"message a su attention](%%%%action.newnotice%%%%?status_textarea=%3$s)."
@@ -178,7 +178,7 @@ msgstr ""
#, php-format
msgid ""
"Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
-"post a notice to his or her attention."
+"post a notice to them."
msgstr ""
"Proque non [registrar un conto](%%%%action.register%%%%) e postea dar un "
"pulsata a %s o publicar un message a su attention."
@@ -213,7 +213,7 @@ msgstr "Actualisationes de %1$s e su amicos in %2$s!"
#: actions/apistatusesshow.php:109 actions/apistatusnetconfig.php:141
#: actions/apistatusnetversion.php:93 actions/apisubscriptions.php:111
#: actions/apitimelinefavorites.php:174 actions/apitimelinefriends.php:271
-#: actions/apitimelinegroup.php:152 actions/apitimelinehome.php:175
+#: actions/apitimelinegroup.php:154 actions/apitimelinehome.php:175
#: actions/apitimelinementions.php:174 actions/apitimelinepublic.php:241
#: actions/apitimelineretweetedtome.php:121
#: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161
@@ -263,7 +263,7 @@ msgstr "Non poteva salveguardar le profilo."
#: actions/apiaccountupdateprofilebackgroundimage.php:108
#: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80
-#: actions/apistatusesupdate.php:211 actions/avatarsettings.php:257
+#: actions/apistatusesupdate.php:212 actions/avatarsettings.php:257
#: actions/designadminpanel.php:123 actions/editapplication.php:118
#: actions/newapplication.php:101 actions/newnotice.php:94
#: lib/designsettings.php:283
@@ -361,8 +361,8 @@ msgid "Could not delete favorite."
msgstr "Non poteva deler le favorite."
#: actions/apifriendshipscreate.php:109
-msgid "Could not follow user: User not found."
-msgstr "Non poteva sequer le usator: Usator non trovate."
+msgid "Could not follow user: profile not found."
+msgstr "Non poteva sequer le usator: profilo non trovate."
#: actions/apifriendshipscreate.php:118
#, php-format
@@ -377,9 +377,9 @@ msgstr "Non poteva cessar de sequer le usator: Usator non trovate."
msgid "You cannot unfollow yourself."
msgstr "Tu non pote cessar de sequer te mesme."
-#: actions/apifriendshipsexists.php:94
-msgid "Two user ids or screen_names must be supplied."
-msgstr "Duo IDs de usator o pseudonymos debe esser fornite."
+#: actions/apifriendshipsexists.php:91
+msgid "Two valid IDs or screen_names must be supplied."
+msgstr "Duo IDs o pseudonymos valide debe esser fornite."
#: actions/apifriendshipsshow.php:134
msgid "Could not determine source user."
@@ -506,6 +506,10 @@ msgstr "Gruppos de %s"
msgid "groups on %s"
msgstr "gruppos in %s"
+#: actions/apimediaupload.php:99
+msgid "Upload failed."
+msgstr "Le incargamento ha fallite."
+
#: actions/apioauthauthorize.php:101
msgid "No oauth_token parameter provided."
msgstr "Nulle parametro oauth_token fornite."
@@ -652,25 +656,29 @@ msgstr "Stato delite."
msgid "No status with that ID found."
msgstr "Nulle stato trovate con iste ID."
-#: actions/apistatusesupdate.php:241 actions/newnotice.php:155
+#: actions/apistatusesupdate.php:221
+msgid "Client must provide a 'status' parameter with a value."
+msgstr "Le cliente debe fornir un parametro 'status' con un valor."
+
+#: actions/apistatusesupdate.php:242 actions/newnotice.php:155
#: lib/mailhandler.php:60
#, php-format
msgid "That's too long. Max notice size is %d chars."
msgstr ""
"Isto es troppo longe. Le longitude maximal del notas es %d characteres."
-#: actions/apistatusesupdate.php:282 actions/apiusershow.php:96
+#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96
msgid "Not found."
msgstr "Non trovate."
-#: actions/apistatusesupdate.php:305 actions/newnotice.php:178
+#: actions/apistatusesupdate.php:306 actions/newnotice.php:178
#, php-format
msgid "Max notice size is %d chars, including attachment URL."
msgstr ""
"Le longitude maximal del notas es %d characteres, includente le URL "
"adjungite."
-#: actions/apisubscriptions.php:231 actions/apisubscriptions.php:261
+#: actions/apisubscriptions.php:232 actions/apisubscriptions.php:262
msgid "Unsupported format."
msgstr "Formato non supportate."
@@ -725,6 +733,10 @@ msgstr "Notas con etiquetta %s"
msgid "Updates tagged with %1$s on %2$s!"
msgstr "Actualisationes con etiquetta %1$s in %2$s!"
+#: actions/apitrends.php:87
+msgid "API method under construction."
+msgstr "Methodo API in construction."
+
#: actions/attachment.php:73
msgid "No such attachment."
msgstr "Annexo non existe."
@@ -778,7 +790,7 @@ msgid "Preview"
msgstr "Previsualisation"
#: actions/avatarsettings.php:149 actions/showapplication.php:252
-#: lib/deleteuserform.php:66 lib/noticelist.php:648
+#: lib/deleteuserform.php:66 lib/noticelist.php:656
msgid "Delete"
msgstr "Deler"
@@ -1031,7 +1043,7 @@ msgstr "Deler iste application"
#: lib/adminpanelaction.php:73 lib/profileformaction.php:64
#: lib/settingsaction.php:72
msgid "Not logged in."
-msgstr "Non identificate."
+msgstr "Tu non ha aperite un session."
#: actions/deletenotice.php:71
msgid "Can't delete this notice."
@@ -1059,7 +1071,7 @@ msgid "Do not delete this notice"
msgstr "Non deler iste nota"
#. TRANS: Submit button title for 'Yes' when deleting a notice.
-#: actions/deletenotice.php:158 lib/noticelist.php:648
+#: actions/deletenotice.php:158 lib/noticelist.php:656
msgid "Delete this notice"
msgstr "Deler iste nota"
@@ -1339,7 +1351,8 @@ msgstr "Alias invalide: \"%s\""
msgid "Could not update group."
msgstr "Non poteva actualisar gruppo."
-#: actions/editgroup.php:264 classes/User_group.php:496
+#. TRANS: Server exception thrown when creating group aliases failed.
+#: actions/editgroup.php:264 classes/User_group.php:514
msgid "Could not create aliases."
msgstr "Non poteva crear aliases."
@@ -2299,7 +2312,7 @@ msgstr "%1$s quitava le gruppo %2$s"
#: actions/login.php:102 actions/otp.php:62 actions/register.php:144
msgid "Already logged in."
-msgstr "Tu es ja identificate."
+msgstr "Tu es jam authenticate."
#: actions/login.php:148
msgid "Incorrect username or password."
@@ -2316,7 +2329,7 @@ msgstr "Aperir session"
#: actions/login.php:249
msgid "Login to site"
-msgstr "Identificar te a iste sito"
+msgstr "Authenticar te a iste sito"
#: actions/login.php:258 actions/register.php:485
msgid "Remember me"
@@ -2496,7 +2509,7 @@ msgstr "Actualisationes correspondente al termino de recerca \"%1$s\" in %2$s!"
#: actions/nudge.php:85
msgid ""
-"This user doesn't allow nudges or hasn't confirmed or set his email yet."
+"This user doesn't allow nudges or hasn't confirmed or set their email yet."
msgstr ""
"Iste usator non accepta pulsatas o non ha ancora confirmate o fornite su "
"adresse de e-mail."
@@ -2575,8 +2588,8 @@ msgid "Only %s URLs over plain HTTP please."
msgstr "Solmente le URLs %s es permittite super HTTP simple."
#. TRANS: Client error on an API request with an unsupported data format.
-#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1179
-#: lib/apiaction.php:1208 lib/apiaction.php:1325
+#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1204
+#: lib/apiaction.php:1232 lib/apiaction.php:1355
msgid "Not a supported data format."
msgstr "Formato de datos non supportate."
@@ -3148,7 +3161,7 @@ msgstr "Etiquettario"
#: actions/recoverpassword.php:36
msgid "You are already logged in!"
-msgstr "Tu es ja identificate!"
+msgstr "Tu es jam authenticate!"
#: actions/recoverpassword.php:62
msgid "No such recovery code."
@@ -3472,7 +3485,7 @@ msgstr "Non poteva obtener un indicio de requesta."
#: actions/repeat.php:57
msgid "Only logged-in users can repeat notices."
-msgstr "Solmente usatores identificate pote repeter notas."
+msgstr "Solmente usatores authenticate pote repeter notas."
#: actions/repeat.php:64 actions/repeat.php:71
msgid "No notice specified."
@@ -3486,7 +3499,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:667
+#: actions/repeat.php:114 lib/noticelist.php:675
msgid "Repeated"
msgstr "Repetite"
@@ -3524,10 +3537,10 @@ msgstr "Syndication de responsas pro %s (Atom)"
#, php-format
msgid ""
"This is the timeline showing replies to %1$s but %2$s hasn't received a "
-"notice to his attention yet."
+"notice to them yet."
msgstr ""
"Isto es le chronologia de responsas a %1$s, ma %2$s non ha ancora recipite "
-"alcun nota a su attention."
+"un nota a su attention."
#: actions/replies.php:204
#, php-format
@@ -3541,8 +3554,8 @@ msgstr ""
#: actions/replies.php:206
#, php-format
msgid ""
-"You can try to [nudge %1$s](../%2$s) or [post something to his or her "
-"attention](%%%%action.newnotice%%%%?status_textarea=%3$s)."
+"You can try to [nudge %1$s](../%2$s) or [post something to them](%%%%action."
+"newnotice%%%%?status_textarea=%3$s)."
msgstr ""
"Tu pote tentar [pulsar %1$s](../%2$s) o [publicar alique a su attention](%%%%"
"action.newnotice%%%%?status_textarea=%3$s)."
@@ -3633,7 +3646,7 @@ msgstr "Organisation"
msgid "Description"
msgstr "Description"
-#: actions/showapplication.php:192 actions/showgroup.php:444
+#: actions/showapplication.php:192 actions/showgroup.php:436
#: lib/profileaction.php:187
msgid "Statistics"
msgstr "Statisticas"
@@ -3721,20 +3734,20 @@ msgstr ""
"mitter los in evidentia."
#: actions/showfavorites.php:208
-#, php-format
+#, fuzzy, php-format
msgid ""
-"%s hasn't added any notices to his favorites yet. Post something interesting "
-"they would add to their favorites :)"
+"%s hasn't added any favorite notices yet. Post something interesting they "
+"would add to their favorites :)"
msgstr ""
"%s non ha ancora addite alcun nota a su favorites. Publica alique "
"interessante que ille favoritisarea :)"
#: actions/showfavorites.php:212
-#, php-format
+#, fuzzy, php-format
msgid ""
-"%s hasn't added any notices to his favorites yet. Why not [register an "
-"account](%%%%action.register%%%%) and then post something interesting they "
-"would add to their favorites :)"
+"%s hasn't added any favorite notices yet. Why not [register an account](%%%%"
+"action.register%%%%) and then post something interesting they would add to "
+"their favorites :)"
msgstr ""
"%s non ha ancora addite alcun nota a su favorites. Proque non [registrar un "
"conto](%%%%action.register%%%%) e postea publicar alique interessante que "
@@ -3796,7 +3809,7 @@ msgstr "Syndication de notas pro le gruppo %s (Atom)"
msgid "FOAF for %s group"
msgstr "Amico de un amico pro le gruppo %s"
-#: actions/showgroup.php:393 actions/showgroup.php:453 lib/groupnav.php:91
+#: actions/showgroup.php:393 actions/showgroup.php:445 lib/groupnav.php:91
msgid "Members"
msgstr "Membros"
@@ -3810,11 +3823,11 @@ msgstr "(Nulle)"
msgid "All members"
msgstr "Tote le membros"
-#: actions/showgroup.php:447
+#: actions/showgroup.php:439
msgid "Created"
msgstr "Create"
-#: actions/showgroup.php:463
+#: actions/showgroup.php:455
#, php-format
msgid ""
"**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3829,7 +3842,7 @@ msgstr ""
"lor vita e interesses. [Crea un conto](%%%%action.register%%%%) pro devenir "
"parte de iste gruppo e multe alteres! ([Lege plus](%%%%doc.help%%%%))"
-#: actions/showgroup.php:469
+#: actions/showgroup.php:461
#, php-format
msgid ""
"**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3842,7 +3855,7 @@ msgstr ""
"[StatusNet](http://status.net/). Su membros condivide breve messages super "
"lor vita e interesses. "
-#: actions/showgroup.php:497
+#: actions/showgroup.php:489
msgid "Admins"
msgstr "Administratores"
@@ -3918,10 +3931,10 @@ msgstr ""
"alcun nota, dunque iste es un bon momento pro comenciar :)"
#: actions/showstream.php:207
-#, php-format
+#, fuzzy, php-format
msgid ""
-"You can try to nudge %1$s or [post something to his or her attention](%%%%"
-"action.newnotice%%%%?status_textarea=%2$s)."
+"You can try to nudge %1$s or [post something to them](%%%%action.newnotice%%%"
+"%?status_textarea=%2$s)."
msgstr ""
"Tu pote tentar pulsar %1$s o [publicar un nota a su attention](%%%%action."
"newnotice%%%%?status_textarea=%2$s)."
@@ -4053,7 +4066,7 @@ msgstr "Limite de texto"
#: actions/siteadminpanel.php:274
msgid "Maximum number of characters for notices."
-msgstr "Numero maximal de characteres pro notas."
+msgstr "Numero maxime de characteres pro notas."
#: actions/siteadminpanel.php:278
msgid "Dupe limit"
@@ -4310,7 +4323,8 @@ msgstr "Salveguardar configuration de instantaneos"
msgid "You are not subscribed to that profile."
msgstr "Tu non es subscribite a iste profilo."
-#: actions/subedit.php:83 classes/Subscription.php:132
+#. TRANS: Exception thrown when a subscription could not be stored on the server.
+#: actions/subedit.php:83 classes/Subscription.php:136
msgid "Could not save subscription."
msgstr "Non poteva salveguardar le subscription."
@@ -4489,10 +4503,6 @@ msgstr ""
msgid "No such tag."
msgstr "Etiquetta non existe."
-#: actions/twitapitrends.php:85
-msgid "API method under construction."
-msgstr "Methodo API in construction."
-
#: actions/unblock.php:59
msgid "You haven't blocked that user."
msgstr "Tu non ha blocate iste usator."
@@ -4803,80 +4813,128 @@ msgstr "Version"
msgid "Author(s)"
msgstr "Autor(es)"
-#: classes/File.php:185
+#. TRANS: Server exception thrown when a URL cannot be processed.
+#: classes/File.php:143
#, php-format
+msgid "Cannot process URL '%s'"
+msgstr ""
+
+#. TRANS: Server exception thrown when... Robin thinks something is impossible!
+#: classes/File.php:175
+msgid "Robin thinks something is impossible."
+msgstr ""
+
+#. TRANS: Message given if an upload is larger than the configured maximum.
+#. TRANS: %1$d is the byte limit for uploads, %2$d is the byte count for the uploaded file.
+#: classes/File.php:190
+#, fuzzy, php-format
msgid ""
-"No file may be larger than %d bytes and the file you sent was %d bytes. Try "
-"to upload a smaller version."
+"No file may be larger than %1$d bytes and the file you sent was %2$d bytes. "
+"Try to upload a smaller version."
msgstr ""
"Nulle file pote esser plus grande que %d bytes e le file que tu inviava ha %"
"d bytes. Tenta incargar un version minus grande."
-#: classes/File.php:195
+#. TRANS: Message given if an upload would exceed user quota.
+#. TRANS: %d (number) is the user quota in bytes.
+#: classes/File.php:202
#, php-format
msgid "A file this large would exceed your user quota of %d bytes."
msgstr "Un file de iste dimension excederea tu quota de usator de %d bytes."
-#: classes/File.php:202
+#. TRANS: Message given id an upload would exceed a user's monthly quota.
+#. TRANS: $d (number) is the monthly user quota in bytes.
+#: classes/File.php:211
#, php-format
msgid "A file this large would exceed your monthly quota of %d bytes."
msgstr "Un file de iste dimension excederea tu quota mensual de %d bytes."
-#: classes/Group_member.php:41
+#. TRANS: Client exception thrown if a file upload does not have a valid name.
+#: classes/File.php:248 classes/File.php:263
+#, fuzzy
+msgid "Invalid filename."
+msgstr "Dimension invalide."
+
+#. TRANS: Exception thrown when joining a group fails.
+#: classes/Group_member.php:42
msgid "Group join failed."
msgstr "Le inscription al gruppo ha fallite."
-#: classes/Group_member.php:53
+#. TRANS: Exception thrown when trying to leave a group the user is not a member of.
+#: classes/Group_member.php:55
msgid "Not part of group."
msgstr "Non es membro del gruppo."
-#: classes/Group_member.php:60
+#. TRANS: Exception thrown when trying to leave a group fails.
+#: classes/Group_member.php:63
msgid "Group leave failed."
msgstr "Le cancellation del membrato del gruppo ha fallite."
-#: classes/Local_group.php:41
+#. TRANS: Server exception thrown when updating a local group fails.
+#: classes/Local_group.php:42
msgid "Could not update local group."
msgstr "Non poteva actualisar gruppo local."
-#: classes/Login_token.php:76
+#. TRANS: Exception thrown when trying creating a login token failed.
+#. TRANS: %s is the user nickname for which token creation failed.
+#: classes/Login_token.php:78
#, php-format
msgid "Could not create login token for %s"
msgstr "Non poteva crear indicio de identification pro %s"
-#: classes/Message.php:45
+#. TRANS: Exception thrown when database name or Data Source Name could not be found.
+#: classes/Memcached_DataObject.php:533
+msgid "No database name or DSN found anywhere."
+msgstr ""
+
+#. TRANS: Client exception thrown when a user tries to send a direct message while being banned from sending them.
+#: classes/Message.php:46
msgid "You are banned from sending direct messages."
msgstr "Il te es prohibite inviar messages directe."
-#: classes/Message.php:61
+#. TRANS: Message given when a message could not be stored on the server.
+#: classes/Message.php:63
msgid "Could not insert message."
msgstr "Non poteva inserer message."
-#: classes/Message.php:71
+#. TRANS: Message given when a message could not be updated on the server.
+#: classes/Message.php:74
msgid "Could not update message with new URI."
msgstr "Non poteva actualisar message con nove URI."
+#. TRANS: Server exception thrown when a user profile for a notice cannot be found.
+#. TRANS: %1$d is a profile ID (number), %2$d is a notice ID (number).
+#: classes/Notice.php:98
+#, php-format
+msgid "No such profile (%1$d) for notice (%2$d)."
+msgstr ""
+
#. TRANS: Server exception. %s are the error details.
-#: classes/Notice.php:182
+#: classes/Notice.php:190
#, php-format
msgid "Database error inserting hashtag: %s"
msgstr "Error in base de datos durante insertion del marca (hashtag): %s"
-#: classes/Notice.php:251
+#. TRANS: Client exception thrown if a notice contains too many characters.
+#: classes/Notice.php:260
msgid "Problem saving notice. Too long."
msgstr "Problema salveguardar nota. Troppo longe."
-#: classes/Notice.php:255
+#. TRANS: Client exception thrown when trying to save a notice for an unknown user.
+#: classes/Notice.php:265
msgid "Problem saving notice. Unknown user."
msgstr "Problema salveguardar nota. Usator incognite."
-#: classes/Notice.php:260
+#. TRANS: Client exception thrown when a user tries to post too many notices in a given time frame.
+#: classes/Notice.php:271
msgid ""
"Too many notices too fast; take a breather and post again in a few minutes."
msgstr ""
"Troppo de notas troppo rapidemente; face un pausa e publica de novo post "
"alcun minutas."
-#: classes/Notice.php:266
+#. TRANS: Client exception thrown when a user tries to post too many duplicate notices in a given time frame.
+#: classes/Notice.php:278
msgid ""
"Too many duplicate messages too quickly; take a breather and post again in a "
"few minutes."
@@ -4884,71 +4942,122 @@ msgstr ""
"Troppo de messages duplicate troppo rapidemente; face un pausa e publica de "
"novo post alcun minutas."
-#: classes/Notice.php:272
+#. TRANS: Client exception thrown when a user tries to post while being banned.
+#: classes/Notice.php:286
msgid "You are banned from posting notices on this site."
msgstr "Il te es prohibite publicar notas in iste sito."
-#: classes/Notice.php:338 classes/Notice.php:364
+#. TRANS: Server exception thrown when a notice cannot be saved.
+#. TRANS: Server exception thrown when a notice cannot be updated.
+#: classes/Notice.php:353 classes/Notice.php:380
msgid "Problem saving notice."
msgstr "Problema salveguardar nota."
-#: classes/Notice.php:973
+#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups().
+#: classes/Notice.php:892
+msgid "Bad type provided to saveKnownGroups"
+msgstr ""
+
+#. TRANS: Server exception thrown when an update for a group inbox fails.
+#: classes/Notice.php:991
msgid "Problem saving group inbox."
msgstr "Problema salveguardar le cassa de entrata del gruppo."
#. TRANS: Message used to repeat a notice. RT is the abbreviation of 'retweet'.
#. TRANS: %1$s is the repeated user's name, %2$s is the repeated notice.
-#: classes/Notice.php:1564
+#: classes/Notice.php:1614
#, php-format
msgid "RT @%1$s %2$s"
msgstr "RT @%1$s %2$s"
-#: classes/Subscription.php:74 lib/oauthstore.php:465
+#. TRANS: Exception thrown when trying to revoke an existing role for a user that does not exist.
+#. TRANS: %1$s is the role name, %2$s is the user ID (number).
+#: classes/Profile.php:740
+#, php-format
+msgid "Cannot revoke role \"%1$s\" for user #%2$d; does not exist."
+msgstr ""
+
+#. TRANS: Exception thrown when trying to revoke a role for a user with a failing database query.
+#. TRANS: %1$s is the role name, %2$s is the user ID (number).
+#: classes/Profile.php:749
+#, php-format
+msgid "Cannot revoke role \"%1$s\" for user #%2$d; database error."
+msgstr ""
+
+#. TRANS: Exception thrown when a right for a non-existing user profile is checked.
+#: classes/Remote_profile.php:54
+#, fuzzy
+msgid "Missing profile."
+msgstr "Le usator non ha un profilo."
+
+#. TRANS: Exception thrown when a tag cannot be saved.
+#: classes/Status_network.php:346
+#, fuzzy
+msgid "Unable to save tag."
+msgstr "Impossibile salveguardar le aviso del sito."
+
+#. TRANS: Exception thrown when trying to subscribe while being banned from subscribing.
+#: classes/Subscription.php:75 lib/oauthstore.php:465
msgid "You have been banned from subscribing."
msgstr "Tu ha essite blocate del subscription."
-#: classes/Subscription.php:78
+#. TRANS: Exception thrown when trying to subscribe while already subscribed.
+#: classes/Subscription.php:80
msgid "Already subscribed!"
msgstr "Ja subscribite!"
-#: classes/Subscription.php:82
+#. TRANS: Exception thrown when trying to subscribe to a user who has blocked the subscribing user.
+#: classes/Subscription.php:85
msgid "User has blocked you."
msgstr "Le usator te ha blocate."
-#: classes/Subscription.php:167
+#. TRANS: Exception thrown when trying to unsibscribe without a subscription.
+#: classes/Subscription.php:171
msgid "Not subscribed!"
msgstr "Non subscribite!"
-#: classes/Subscription.php:173
-msgid "Couldn't delete self-subscription."
+#. TRANS: Exception thrown when trying to unsubscribe a user from themselves.
+#: classes/Subscription.php:178
+#, fuzzy
+msgid "Could not delete self-subscription."
msgstr "Non poteva deler auto-subscription."
-#: classes/Subscription.php:200
-msgid "Couldn't delete subscription OMB token."
+#. TRANS: Exception thrown when the OMB token for a subscription could not deleted on the server.
+#: classes/Subscription.php:206
+#, fuzzy
+msgid "Could not delete subscription OMB token."
msgstr "Non poteva deler le indicio OMB del subscription."
-#: classes/Subscription.php:211
-msgid "Couldn't delete subscription."
+#. TRANS: Exception thrown when a subscription could not be deleted on the server.
+#: classes/Subscription.php:218
+#, fuzzy
+msgid "Could not delete subscription."
msgstr "Non poteva deler subscription."
-#: classes/User.php:363
+#. TRANS: Notice given on user registration.
+#. TRANS: %1$s is the sitename, $2$s is the registering user's nickname.
+#: classes/User.php:365
#, php-format
msgid "Welcome to %1$s, @%2$s!"
msgstr "Benvenite a %1$s, @%2$s!"
-#: classes/User_group.php:480
+#. TRANS: Server exception thrown when creating a group failed.
+#: classes/User_group.php:496
msgid "Could not create group."
msgstr "Non poteva crear gruppo."
-#: classes/User_group.php:489
+#. TRANS: Server exception thrown when updating a group URI failed.
+#: classes/User_group.php:506
msgid "Could not set group URI."
msgstr "Non poteva definir le URL del gruppo."
-#: classes/User_group.php:510
+#. TRANS: Server exception thrown when setting group membership failed.
+#: classes/User_group.php:529
msgid "Could not set group membership."
msgstr "Non poteva configurar le membrato del gruppo."
-#: classes/User_group.php:524
+#. TRANS: Server exception thrown when saving local group information failed.
+#: classes/User_group.php:544
msgid "Could not save local group info."
msgstr "Non poteva salveguardar le informationes del gruppo local."
@@ -5085,7 +5194,7 @@ msgstr "Crear conto"
#: lib/action.php:488
msgctxt "TOOLTIP"
msgid "Login to the site"
-msgstr "Identificar te a iste sito"
+msgstr "Authenticar te a iste sito"
#: lib/action.php:491
msgctxt "MENU"
@@ -6417,7 +6526,7 @@ msgstr ""
"altere usatores in conversation. Altere personas pote inviar te messages que "
"solmente tu pote leger."
-#: lib/mailbox.php:227 lib/noticelist.php:497
+#: lib/mailbox.php:227 lib/noticelist.php:505
msgid "from"
msgstr "de"
@@ -6476,24 +6585,24 @@ msgstr "Falleva de scriber le file in disco."
msgid "File upload stopped by extension."
msgstr "Incargamento de file stoppate per un extension."
-#: lib/mediafile.php:179 lib/mediafile.php:216
+#: lib/mediafile.php:179 lib/mediafile.php:217
msgid "File exceeds user's quota."
msgstr "File excede quota del usator."
-#: lib/mediafile.php:196 lib/mediafile.php:233
+#: lib/mediafile.php:197 lib/mediafile.php:234
msgid "File could not be moved to destination directory."
msgstr "File non poteva esser displaciate in le directorio de destination."
-#: lib/mediafile.php:201 lib/mediafile.php:237
+#: lib/mediafile.php:202 lib/mediafile.php:238
msgid "Could not determine file's MIME type."
msgstr "Non poteva determinar le typo MIME del file."
-#: lib/mediafile.php:270
+#: lib/mediafile.php:318
#, php-format
msgid " Try using another %s format."
msgstr " Tenta usar un altere formato %s."
-#: lib/mediafile.php:275
+#: lib/mediafile.php:323
#, php-format
msgid "%s is not a supported file type on this server."
msgstr "%s non es un typo de file supportate in iste servitor."
@@ -6549,51 +6658,51 @@ msgstr ""
"previste. Per favor reproba plus tarde."
#. TRANS: Used in coordinates as abbreviation of north
-#: lib/noticelist.php:430
+#: lib/noticelist.php:436
msgid "N"
msgstr "N"
#. TRANS: Used in coordinates as abbreviation of south
-#: lib/noticelist.php:432
+#: lib/noticelist.php:438
msgid "S"
msgstr "S"
#. TRANS: Used in coordinates as abbreviation of east
-#: lib/noticelist.php:434
+#: lib/noticelist.php:440
msgid "E"
msgstr "E"
#. TRANS: Used in coordinates as abbreviation of west
-#: lib/noticelist.php:436
+#: lib/noticelist.php:442
msgid "W"
msgstr "W"
-#: lib/noticelist.php:438
+#: lib/noticelist.php:444
#, php-format
msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
msgstr "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
-#: lib/noticelist.php:447
+#: lib/noticelist.php:453
msgid "at"
msgstr "a"
-#: lib/noticelist.php:559
+#: lib/noticelist.php:567
msgid "in context"
msgstr "in contexto"
-#: lib/noticelist.php:594
+#: lib/noticelist.php:602
msgid "Repeated by"
msgstr "Repetite per"
-#: lib/noticelist.php:621
+#: lib/noticelist.php:629
msgid "Reply to this notice"
msgstr "Responder a iste nota"
-#: lib/noticelist.php:622
+#: lib/noticelist.php:630
msgid "Reply"
msgstr "Responder"
-#: lib/noticelist.php:666
+#: lib/noticelist.php:674
msgid "Notice repeated"
msgstr "Nota repetite"
@@ -6853,7 +6962,7 @@ msgstr ""
"ZIP."
#: lib/themeuploader.php:58 lib/themeuploader.php:61
-msgid "Theme upload missing or failed."
+msgid "The theme file is missing or the upload failed."
msgstr "Le file del apparentia manca o le incargamento ha fallite."
#: lib/themeuploader.php:91 lib/themeuploader.php:102
diff --git a/locale/is/LC_MESSAGES/statusnet.po b/locale/is/LC_MESSAGES/statusnet.po
index c76c4e95f..963d21424 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-06-16 22:18+0000\n"
-"PO-Revision-Date: 2010-06-21 18:04:07+0000\n"
+"POT-Creation-Date: 2010-08-03 13:21+0000\n"
+"PO-Revision-Date: 2010-08-03 13:22:08+0000\n"
"Language-Team: Icelandic\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.17alpha (r68367); Translate extension (2010-06-12)\n"
+"X-Generator: MediaWiki 1.17alpha (r70381); Translate extension (2010-07-21)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: is\n"
"X-Message-Group: out-statusnet\n"
@@ -107,7 +107,7 @@ msgstr "Ekkert þannig merki."
#: actions/apidirectmessagenew.php:74 actions/apigroupcreate.php:113
#: actions/apigroupismember.php:91 actions/apigroupjoin.php:100
#: actions/apigroupleave.php:100 actions/apigrouplist.php:73
-#: actions/apistatusesupdate.php:228 actions/apisubscriptions.php:87
+#: actions/apistatusesupdate.php:229 actions/apisubscriptions.php:87
#: actions/apitimelinefavorites.php:72 actions/apitimelinefriends.php:174
#: actions/apitimelinehome.php:80 actions/apitimelinementions.php:80
#: actions/apitimelineuser.php:82 actions/avatarbynickname.php:75
@@ -174,15 +174,15 @@ msgstr ""
#: actions/all.php:146
#, 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)."
+"You can try to [nudge %1$s](../%2$s) from their profile or [post something "
+"to them](%%%%action.newnotice%%%%?status_textarea=%3$s)."
msgstr ""
#: actions/all.php:149 actions/replies.php:210 actions/showstream.php:211
#, php-format
msgid ""
"Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
-"post a notice to his or her attention."
+"post a notice to them."
msgstr ""
#. TRANS: H1 text
@@ -215,7 +215,7 @@ msgstr "Færslur frá %1$s og vinum á %2$s!"
#: actions/apistatusesshow.php:109 actions/apistatusnetconfig.php:141
#: actions/apistatusnetversion.php:93 actions/apisubscriptions.php:111
#: actions/apitimelinefavorites.php:174 actions/apitimelinefriends.php:271
-#: actions/apitimelinegroup.php:152 actions/apitimelinehome.php:175
+#: actions/apitimelinegroup.php:154 actions/apitimelinehome.php:175
#: actions/apitimelinementions.php:174 actions/apitimelinepublic.php:241
#: actions/apitimelineretweetedtome.php:121
#: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161
@@ -266,7 +266,7 @@ msgstr "Gat ekki vistað persónulega síðu."
#: actions/apiaccountupdateprofilebackgroundimage.php:108
#: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80
-#: actions/apistatusesupdate.php:211 actions/avatarsettings.php:257
+#: actions/apistatusesupdate.php:212 actions/avatarsettings.php:257
#: actions/designadminpanel.php:123 actions/editapplication.php:118
#: actions/newapplication.php:101 actions/newnotice.php:94
#: lib/designsettings.php:283
@@ -366,7 +366,8 @@ msgid "Could not delete favorite."
msgstr "Gat ekki eytt uppáhaldi."
#: actions/apifriendshipscreate.php:109
-msgid "Could not follow user: User not found."
+#, fuzzy
+msgid "Could not follow user: profile not found."
msgstr "Get ekki fylgst með notanda: Notandinn finnst ekki."
#: actions/apifriendshipscreate.php:118
@@ -385,8 +386,9 @@ msgstr "Get ekki fylgst með notanda: Notandinn finnst ekki."
msgid "You cannot unfollow yourself."
msgstr "Gat ekki uppfært notanda."
-#: actions/apifriendshipsexists.php:94
-msgid "Two user ids or screen_names must be supplied."
+#: actions/apifriendshipsexists.php:91
+#, fuzzy
+msgid "Two valid IDs or screen_names must be supplied."
msgstr "Tvo notendakenni eða skjáarnöfn verða að vera uppgefin."
#: actions/apifriendshipsshow.php:134
@@ -517,6 +519,11 @@ msgstr "Hópar %s"
msgid "groups on %s"
msgstr "Hópsaðgerðir"
+#: actions/apimediaupload.php:99
+#, fuzzy
+msgid "Upload failed."
+msgstr "Misheppnuð skipun"
+
#: actions/apioauthauthorize.php:101
msgid "No oauth_token parameter provided."
msgstr ""
@@ -662,22 +669,26 @@ msgstr ""
msgid "No status with that ID found."
msgstr "Engin staða með þessu kenni fannst."
-#: actions/apistatusesupdate.php:241 actions/newnotice.php:155
+#: actions/apistatusesupdate.php:221
+msgid "Client must provide a 'status' parameter with a value."
+msgstr ""
+
+#: actions/apistatusesupdate.php:242 actions/newnotice.php:155
#: lib/mailhandler.php:60
#, fuzzy, php-format
msgid "That's too long. Max notice size is %d chars."
msgstr "Þetta er of langt. Hámarkslengd babls er 140 tákn."
-#: actions/apistatusesupdate.php:282 actions/apiusershow.php:96
+#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96
msgid "Not found."
msgstr "Fannst ekki."
-#: actions/apistatusesupdate.php:305 actions/newnotice.php:178
+#: actions/apistatusesupdate.php:306 actions/newnotice.php:178
#, php-format
msgid "Max notice size is %d chars, including attachment URL."
msgstr ""
-#: actions/apisubscriptions.php:231 actions/apisubscriptions.php:261
+#: actions/apisubscriptions.php:232 actions/apisubscriptions.php:262
#, fuzzy
msgid "Unsupported format."
msgstr "Skráarsnið myndar ekki stutt."
@@ -732,6 +743,10 @@ msgstr "Babl merkt með %s"
msgid "Updates tagged with %1$s on %2$s!"
msgstr ""
+#: actions/apitrends.php:87
+msgid "API method under construction."
+msgstr "Aðferð í forritsskilum er í þróun."
+
#: actions/attachment.php:73
msgid "No such attachment."
msgstr ""
@@ -785,7 +800,7 @@ msgid "Preview"
msgstr "Forsýn"
#: actions/avatarsettings.php:149 actions/showapplication.php:252
-#: lib/deleteuserform.php:66 lib/noticelist.php:648
+#: lib/deleteuserform.php:66 lib/noticelist.php:656
msgid "Delete"
msgstr "Eyða"
@@ -1072,7 +1087,7 @@ msgid "Do not delete this notice"
msgstr ""
#. TRANS: Submit button title for 'Yes' when deleting a notice.
-#: actions/deletenotice.php:158 lib/noticelist.php:648
+#: actions/deletenotice.php:158 lib/noticelist.php:656
msgid "Delete this notice"
msgstr "Eyða þessu babli"
@@ -1369,7 +1384,8 @@ msgstr ""
msgid "Could not update group."
msgstr "Gat ekki uppfært hóp."
-#: actions/editgroup.php:264 classes/User_group.php:496
+#. TRANS: Server exception thrown when creating group aliases failed.
+#: actions/editgroup.php:264 classes/User_group.php:514
msgid "Could not create aliases."
msgstr ""
@@ -2538,8 +2554,9 @@ msgid "Updates matching search term \"%1$s\" on %2$s!"
msgstr "Allar færslur sem passa við \"%s\""
#: actions/nudge.php:85
+#, fuzzy
msgid ""
-"This user doesn't allow nudges or hasn't confirmed or set his email yet."
+"This user doesn't allow nudges or hasn't confirmed or set their email yet."
msgstr ""
"Þessi notandi leyfir ekki að ýta við sér eða hefur ekki staðfest eða skráð "
"tölvupóstinn sinn."
@@ -2620,8 +2637,8 @@ msgid "Only %s URLs over plain HTTP please."
msgstr ""
#. TRANS: Client error on an API request with an unsupported data format.
-#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1179
-#: lib/apiaction.php:1208 lib/apiaction.php:1325
+#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1204
+#: lib/apiaction.php:1232 lib/apiaction.php:1355
msgid "Not a supported data format."
msgstr "Enginn stuðningur við gagnasnið."
@@ -3542,7 +3559,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:667
+#: actions/repeat.php:114 lib/noticelist.php:675
#, fuzzy
msgid "Repeated"
msgstr "à sviðsljósinu"
@@ -3581,7 +3598,7 @@ msgstr "Bablveita fyrir hópinn %s"
#, php-format
msgid ""
"This is the timeline showing replies to %1$s but %2$s hasn't received a "
-"notice to his attention yet."
+"notice to them yet."
msgstr ""
#: actions/replies.php:204
@@ -3594,8 +3611,8 @@ msgstr ""
#: actions/replies.php:206
#, php-format
msgid ""
-"You can try to [nudge %1$s](../%2$s) or [post something to his or her "
-"attention](%%%%action.newnotice%%%%?status_textarea=%3$s)."
+"You can try to [nudge %1$s](../%2$s) or [post something to them](%%%%action."
+"newnotice%%%%?status_textarea=%3$s)."
msgstr ""
#: actions/repliesrss.php:72
@@ -3693,7 +3710,7 @@ msgstr "Uppröðun"
msgid "Description"
msgstr "Lýsing"
-#: actions/showapplication.php:192 actions/showgroup.php:444
+#: actions/showapplication.php:192 actions/showgroup.php:436
#: lib/profileaction.php:187
msgid "Statistics"
msgstr "Tölfræði"
@@ -3779,16 +3796,16 @@ msgstr ""
#: actions/showfavorites.php:208
#, php-format
msgid ""
-"%s hasn't added any notices to his favorites yet. Post something interesting "
-"they would add to their favorites :)"
+"%s hasn't added any favorite notices yet. Post something interesting they "
+"would add to their favorites :)"
msgstr ""
#: actions/showfavorites.php:212
#, php-format
msgid ""
-"%s hasn't added any notices to his favorites yet. Why not [register an "
-"account](%%%%action.register%%%%) and then post something interesting they "
-"would add to their favorites :)"
+"%s hasn't added any favorite notices yet. Why not [register an account](%%%%"
+"action.register%%%%) and then post something interesting they would add to "
+"their favorites :)"
msgstr ""
#: actions/showfavorites.php:243
@@ -3847,7 +3864,7 @@ msgstr ""
msgid "FOAF for %s group"
msgstr "%s hópurinn"
-#: actions/showgroup.php:393 actions/showgroup.php:453 lib/groupnav.php:91
+#: actions/showgroup.php:393 actions/showgroup.php:445 lib/groupnav.php:91
msgid "Members"
msgstr "Meðlimir"
@@ -3861,11 +3878,11 @@ msgstr "(Ekkert)"
msgid "All members"
msgstr "Allir meðlimir"
-#: actions/showgroup.php:447
+#: actions/showgroup.php:439
msgid "Created"
msgstr ""
-#: actions/showgroup.php:463
+#: actions/showgroup.php:455
#, php-format
msgid ""
"**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3875,7 +3892,7 @@ msgid ""
"of this group and many more! ([Read more](%%%%doc.help%%%%))"
msgstr ""
-#: actions/showgroup.php:469
+#: actions/showgroup.php:461
#, php-format
msgid ""
"**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3884,7 +3901,7 @@ msgid ""
"their life and interests. "
msgstr ""
-#: actions/showgroup.php:497
+#: actions/showgroup.php:489
msgid "Admins"
msgstr ""
@@ -3960,8 +3977,8 @@ msgstr ""
#: 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)."
+"You can try to nudge %1$s or [post something to them](%%%%action.newnotice%%%"
+"%?status_textarea=%2$s)."
msgstr ""
#: actions/showstream.php:243
@@ -4355,7 +4372,8 @@ msgstr "Stillingar fyrir mynd"
msgid "You are not subscribed to that profile."
msgstr "Þú ert ekki áskrifandi."
-#: actions/subedit.php:83 classes/Subscription.php:132
+#. TRANS: Exception thrown when a subscription could not be stored on the server.
+#: actions/subedit.php:83 classes/Subscription.php:136
msgid "Could not save subscription."
msgstr "Gat ekki vistað áskrift."
@@ -4528,10 +4546,6 @@ msgstr ""
msgid "No such tag."
msgstr "Ekkert þannig merki."
-#: actions/twitapitrends.php:85
-msgid "API method under construction."
-msgstr "Aðferð í forritsskilum er í þróun."
-
#: actions/unblock.php:59
#, fuzzy
msgid "You haven't blocked that user."
@@ -4841,159 +4855,256 @@ msgstr "Persónulegt"
msgid "Author(s)"
msgstr ""
-#: classes/File.php:185
+#. TRANS: Server exception thrown when a URL cannot be processed.
+#: classes/File.php:143
+#, php-format
+msgid "Cannot process URL '%s'"
+msgstr ""
+
+#. TRANS: Server exception thrown when... Robin thinks something is impossible!
+#: classes/File.php:175
+msgid "Robin thinks something is impossible."
+msgstr ""
+
+#. TRANS: Message given if an upload is larger than the configured maximum.
+#. TRANS: %1$d is the byte limit for uploads, %2$d is the byte count for the uploaded file.
+#: classes/File.php:190
#, php-format
msgid ""
-"No file may be larger than %d bytes and the file you sent was %d bytes. Try "
-"to upload a smaller version."
+"No file may be larger than %1$d bytes and the file you sent was %2$d bytes. "
+"Try to upload a smaller version."
msgstr ""
-#: classes/File.php:195
+#. TRANS: Message given if an upload would exceed user quota.
+#. TRANS: %d (number) is the user quota in bytes.
+#: classes/File.php:202
#, php-format
msgid "A file this large would exceed your user quota of %d bytes."
msgstr ""
-#: classes/File.php:202
+#. TRANS: Message given id an upload would exceed a user's monthly quota.
+#. TRANS: $d (number) is the monthly user quota in bytes.
+#: classes/File.php:211
#, php-format
msgid "A file this large would exceed your monthly quota of %d bytes."
msgstr ""
-#: classes/Group_member.php:41
+#. TRANS: Client exception thrown if a file upload does not have a valid name.
+#: classes/File.php:248 classes/File.php:263
+#, fuzzy
+msgid "Invalid filename."
+msgstr "Ótæk stærð."
+
+#. TRANS: Exception thrown when joining a group fails.
+#: classes/Group_member.php:42
#, fuzzy
msgid "Group join failed."
msgstr "Hópssíðan"
-#: classes/Group_member.php:53
+#. TRANS: Exception thrown when trying to leave a group the user is not a member of.
+#: classes/Group_member.php:55
#, fuzzy
msgid "Not part of group."
msgstr "Gat ekki uppfært hóp."
-#: classes/Group_member.php:60
+#. TRANS: Exception thrown when trying to leave a group fails.
+#: classes/Group_member.php:63
#, fuzzy
msgid "Group leave failed."
msgstr "Hópssíðan"
-#: classes/Local_group.php:41
+#. TRANS: Server exception thrown when updating a local group fails.
+#: classes/Local_group.php:42
#, fuzzy
msgid "Could not update local group."
msgstr "Gat ekki uppfært hóp."
-#: classes/Login_token.php:76
+#. TRANS: Exception thrown when trying creating a login token failed.
+#. TRANS: %s is the user nickname for which token creation failed.
+#: classes/Login_token.php:78
#, fuzzy, php-format
msgid "Could not create login token for %s"
msgstr "Gat ekki búið til uppáhald."
-#: classes/Message.php:45
+#. TRANS: Exception thrown when database name or Data Source Name could not be found.
+#: classes/Memcached_DataObject.php:533
+msgid "No database name or DSN found anywhere."
+msgstr ""
+
+#. TRANS: Client exception thrown when a user tries to send a direct message while being banned from sending them.
+#: classes/Message.php:46
#, fuzzy
msgid "You are banned from sending direct messages."
msgstr "Villa kom upp við að senda bein skilaboð"
-#: classes/Message.php:61
+#. TRANS: Message given when a message could not be stored on the server.
+#: classes/Message.php:63
msgid "Could not insert message."
msgstr "Gat ekki skeytt skilaboðum inn í."
-#: classes/Message.php:71
+#. TRANS: Message given when a message could not be updated on the server.
+#: classes/Message.php:74
msgid "Could not update message with new URI."
msgstr "Gat ekki uppfært skilaboð með nýju veffangi."
+#. TRANS: Server exception thrown when a user profile for a notice cannot be found.
+#. TRANS: %1$d is a profile ID (number), %2$d is a notice ID (number).
+#: classes/Notice.php:98
+#, php-format
+msgid "No such profile (%1$d) for notice (%2$d)."
+msgstr ""
+
#. TRANS: Server exception. %s are the error details.
-#: classes/Notice.php:182
+#: classes/Notice.php:190
#, fuzzy, php-format
msgid "Database error inserting hashtag: %s"
msgstr "Gagnagrunnsvilla við innsetningu myllumerkis: %s"
-#: classes/Notice.php:251
+#. TRANS: Client exception thrown if a notice contains too many characters.
+#: classes/Notice.php:260
msgid "Problem saving notice. Too long."
msgstr ""
-#: classes/Notice.php:255
+#. TRANS: Client exception thrown when trying to save a notice for an unknown user.
+#: classes/Notice.php:265
msgid "Problem saving notice. Unknown user."
msgstr "Gat ekki vistað babl. Óþekktur notandi."
-#: classes/Notice.php:260
+#. TRANS: Client exception thrown when a user tries to post too many notices in a given time frame.
+#: classes/Notice.php:271
msgid ""
"Too many notices too fast; take a breather and post again in a few minutes."
msgstr ""
"Of mikið babl í einu; slakaðu aðeins á og haltu svo áfram eftir nokkrar "
"mínútur."
-#: classes/Notice.php:266
+#. TRANS: Client exception thrown when a user tries to post too many duplicate notices in a given time frame.
+#: classes/Notice.php:278
msgid ""
"Too many duplicate messages too quickly; take a breather and post again in a "
"few minutes."
msgstr ""
-#: classes/Notice.php:272
+#. TRANS: Client exception thrown when a user tries to post while being banned.
+#: classes/Notice.php:286
msgid "You are banned from posting notices on this site."
msgstr "Það hefur verið lagt bann við babli frá þér á þessari síðu."
-#: classes/Notice.php:338 classes/Notice.php:364
+#. TRANS: Server exception thrown when a notice cannot be saved.
+#. TRANS: Server exception thrown when a notice cannot be updated.
+#: classes/Notice.php:353 classes/Notice.php:380
msgid "Problem saving notice."
msgstr "Vandamál komu upp við að vista babl."
-#: classes/Notice.php:973
+#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups().
+#: classes/Notice.php:892
+msgid "Bad type provided to saveKnownGroups"
+msgstr ""
+
+#. TRANS: Server exception thrown when an update for a group inbox fails.
+#: classes/Notice.php:991
#, fuzzy
msgid "Problem saving group inbox."
msgstr "Vandamál komu upp við að vista babl."
#. TRANS: Message used to repeat a notice. RT is the abbreviation of 'retweet'.
#. TRANS: %1$s is the repeated user's name, %2$s is the repeated notice.
-#: classes/Notice.php:1564
+#: classes/Notice.php:1614
#, fuzzy, php-format
msgid "RT @%1$s %2$s"
msgstr "%1$s (%2$s)"
-#: classes/Subscription.php:74 lib/oauthstore.php:465
+#. TRANS: Exception thrown when trying to revoke an existing role for a user that does not exist.
+#. TRANS: %1$s is the role name, %2$s is the user ID (number).
+#: classes/Profile.php:740
+#, php-format
+msgid "Cannot revoke role \"%1$s\" for user #%2$d; does not exist."
+msgstr ""
+
+#. TRANS: Exception thrown when trying to revoke a role for a user with a failing database query.
+#. TRANS: %1$s is the role name, %2$s is the user ID (number).
+#: classes/Profile.php:749
+#, php-format
+msgid "Cannot revoke role \"%1$s\" for user #%2$d; database error."
+msgstr ""
+
+#. TRANS: Exception thrown when a right for a non-existing user profile is checked.
+#: classes/Remote_profile.php:54
+#, fuzzy
+msgid "Missing profile."
+msgstr "Notandi hefur enga persónulega síðu."
+
+#. TRANS: Exception thrown when a tag cannot be saved.
+#: classes/Status_network.php:346
+#, fuzzy
+msgid "Unable to save tag."
+msgstr "Vandamál komu upp við að vista babl."
+
+#. TRANS: Exception thrown when trying to subscribe while being banned from subscribing.
+#: classes/Subscription.php:75 lib/oauthstore.php:465
#, fuzzy
msgid "You have been banned from subscribing."
msgstr "Þessi notandi hefur bannað þér að gerast áskrifandi"
-#: classes/Subscription.php:78
+#. TRANS: Exception thrown when trying to subscribe while already subscribed.
+#: classes/Subscription.php:80
msgid "Already subscribed!"
msgstr ""
-#: classes/Subscription.php:82
+#. TRANS: Exception thrown when trying to subscribe to a user who has blocked the subscribing user.
+#: classes/Subscription.php:85
msgid "User has blocked you."
msgstr "Notandinn hefur lokað á þig."
-#: classes/Subscription.php:167
+#. TRANS: Exception thrown when trying to unsibscribe without a subscription.
+#: classes/Subscription.php:171
#, fuzzy
msgid "Not subscribed!"
msgstr "Ekki í áskrift!"
-#: classes/Subscription.php:173
+#. TRANS: Exception thrown when trying to unsubscribe a user from themselves.
+#: classes/Subscription.php:178
#, fuzzy
-msgid "Couldn't delete self-subscription."
+msgid "Could not delete self-subscription."
msgstr "Gat ekki eytt áskrift."
-#: classes/Subscription.php:200
+#. TRANS: Exception thrown when the OMB token for a subscription could not deleted on the server.
+#: classes/Subscription.php:206
#, fuzzy
-msgid "Couldn't delete subscription OMB token."
+msgid "Could not delete subscription OMB token."
msgstr "Gat ekki eytt áskrift."
-#: classes/Subscription.php:211
-msgid "Couldn't delete subscription."
+#. TRANS: Exception thrown when a subscription could not be deleted on the server.
+#: classes/Subscription.php:218
+#, fuzzy
+msgid "Could not delete subscription."
msgstr "Gat ekki eytt áskrift."
-#: classes/User.php:363
+#. TRANS: Notice given on user registration.
+#. TRANS: %1$s is the sitename, $2$s is the registering user's nickname.
+#: classes/User.php:365
#, php-format
msgid "Welcome to %1$s, @%2$s!"
msgstr ""
-#: classes/User_group.php:480
+#. TRANS: Server exception thrown when creating a group failed.
+#: classes/User_group.php:496
msgid "Could not create group."
msgstr "Gat ekki búið til hóp."
-#: classes/User_group.php:489
+#. TRANS: Server exception thrown when updating a group URI failed.
+#: classes/User_group.php:506
#, fuzzy
msgid "Could not set group URI."
msgstr "Gat ekki skráð hópmeðlimi."
-#: classes/User_group.php:510
+#. TRANS: Server exception thrown when setting group membership failed.
+#: classes/User_group.php:529
msgid "Could not set group membership."
msgstr "Gat ekki skráð hópmeðlimi."
-#: classes/User_group.php:524
+#. TRANS: Server exception thrown when saving local group information failed.
+#: classes/User_group.php:544
#, fuzzy
msgid "Could not save local group info."
msgstr "Gat ekki vistað áskrift."
@@ -6371,7 +6482,7 @@ msgid ""
"users in conversation. People can send you messages for your eyes only."
msgstr ""
-#: lib/mailbox.php:227 lib/noticelist.php:497
+#: lib/mailbox.php:227 lib/noticelist.php:505
#, fuzzy
msgid "from"
msgstr "frá"
@@ -6427,25 +6538,25 @@ msgstr ""
msgid "File upload stopped by extension."
msgstr ""
-#: lib/mediafile.php:179 lib/mediafile.php:216
+#: lib/mediafile.php:179 lib/mediafile.php:217
msgid "File exceeds user's quota."
msgstr ""
-#: lib/mediafile.php:196 lib/mediafile.php:233
+#: lib/mediafile.php:197 lib/mediafile.php:234
msgid "File could not be moved to destination directory."
msgstr ""
-#: lib/mediafile.php:201 lib/mediafile.php:237
+#: lib/mediafile.php:202 lib/mediafile.php:238
#, fuzzy
msgid "Could not determine file's MIME type."
msgstr "Gat ekki eytt uppáhaldi."
-#: lib/mediafile.php:270
+#: lib/mediafile.php:318
#, php-format
msgid " Try using another %s format."
msgstr ""
-#: lib/mediafile.php:275
+#: lib/mediafile.php:323
#, php-format
msgid "%s is not a supported file type on this server."
msgstr ""
@@ -6502,53 +6613,53 @@ msgid ""
msgstr ""
#. TRANS: Used in coordinates as abbreviation of north
-#: lib/noticelist.php:430
+#: lib/noticelist.php:436
#, fuzzy
msgid "N"
msgstr "Nei"
#. TRANS: Used in coordinates as abbreviation of south
-#: lib/noticelist.php:432
+#: lib/noticelist.php:438
msgid "S"
msgstr ""
#. TRANS: Used in coordinates as abbreviation of east
-#: lib/noticelist.php:434
+#: lib/noticelist.php:440
msgid "E"
msgstr ""
#. TRANS: Used in coordinates as abbreviation of west
-#: lib/noticelist.php:436
+#: lib/noticelist.php:442
msgid "W"
msgstr ""
-#: lib/noticelist.php:438
+#: lib/noticelist.php:444
#, php-format
msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
msgstr ""
-#: lib/noticelist.php:447
+#: lib/noticelist.php:453
msgid "at"
msgstr ""
-#: lib/noticelist.php:559
+#: lib/noticelist.php:567
msgid "in context"
msgstr ""
-#: lib/noticelist.php:594
+#: lib/noticelist.php:602
#, fuzzy
msgid "Repeated by"
msgstr "à sviðsljósinu"
-#: lib/noticelist.php:621
+#: lib/noticelist.php:629
msgid "Reply to this notice"
msgstr "Svara þessu babli"
-#: lib/noticelist.php:622
+#: lib/noticelist.php:630
msgid "Reply"
msgstr "Svara"
-#: lib/noticelist.php:666
+#: lib/noticelist.php:674
#, fuzzy
msgid "Notice repeated"
msgstr "Babl sent inn"
@@ -6816,9 +6927,8 @@ msgid "This server cannot handle theme uploads without ZIP support."
msgstr ""
#: lib/themeuploader.php:58 lib/themeuploader.php:61
-#, fuzzy
-msgid "Theme upload missing or failed."
-msgstr "Kerfisvilla kom upp við upphal skráar."
+msgid "The theme file is missing or the upload failed."
+msgstr ""
#: lib/themeuploader.php:91 lib/themeuploader.php:102
#: lib/themeuploader.php:253 lib/themeuploader.php:257
diff --git a/locale/it/LC_MESSAGES/statusnet.po b/locale/it/LC_MESSAGES/statusnet.po
index 1b6b39f03..401889a5c 100644
--- a/locale/it/LC_MESSAGES/statusnet.po
+++ b/locale/it/LC_MESSAGES/statusnet.po
@@ -10,12 +10,12 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-06-16 22:18+0000\n"
-"PO-Revision-Date: 2010-06-21 18:04:12+0000\n"
+"POT-Creation-Date: 2010-08-03 13:21+0000\n"
+"PO-Revision-Date: 2010-08-03 13:22:10+0000\n"
"Language-Team: Italian\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.17alpha (r68367); Translate extension (2010-06-12)\n"
+"X-Generator: MediaWiki 1.17alpha (r70381); Translate extension (2010-07-21)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: it\n"
"X-Message-Group: out-statusnet\n"
@@ -101,7 +101,7 @@ msgstr "Pagina inesistente."
#: actions/apidirectmessagenew.php:74 actions/apigroupcreate.php:113
#: actions/apigroupismember.php:91 actions/apigroupjoin.php:100
#: actions/apigroupleave.php:100 actions/apigrouplist.php:73
-#: actions/apistatusesupdate.php:228 actions/apisubscriptions.php:87
+#: actions/apistatusesupdate.php:229 actions/apisubscriptions.php:87
#: actions/apitimelinefavorites.php:72 actions/apitimelinefriends.php:174
#: actions/apitimelinehome.php:80 actions/apitimelinementions.php:80
#: actions/apitimelineuser.php:82 actions/avatarbynickname.php:75
@@ -170,20 +170,20 @@ msgstr ""
#. TRANS: %1$s is user nickname, %2$s is user nickname, %2$s is user nickname prefixed with "@"
#: actions/all.php:146
-#, php-format
+#, fuzzy, 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)."
+"You can try to [nudge %1$s](../%2$s) from their profile or [post something "
+"to them](%%%%action.newnotice%%%%?status_textarea=%3$s)."
msgstr ""
"Puoi provare a [richiamare %1$s](../%2$s) dal suo profilo o [scrivere "
"qualche cosa alla sua attenzione](%%%%action.newnotice%%%%?status_textarea=%3"
"$s)."
#: actions/all.php:149 actions/replies.php:210 actions/showstream.php:211
-#, php-format
+#, fuzzy, php-format
msgid ""
"Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
-"post a notice to his or her attention."
+"post a notice to them."
msgstr ""
"Perché non [crei un account](%%%%action.register%%%%) e richiami %s o scrivi "
"un messaggio alla sua attenzione."
@@ -218,7 +218,7 @@ msgstr "Messaggi da %1$s e amici su %2$s!"
#: actions/apistatusesshow.php:109 actions/apistatusnetconfig.php:141
#: actions/apistatusnetversion.php:93 actions/apisubscriptions.php:111
#: actions/apitimelinefavorites.php:174 actions/apitimelinefriends.php:271
-#: actions/apitimelinegroup.php:152 actions/apitimelinehome.php:175
+#: actions/apitimelinegroup.php:154 actions/apitimelinehome.php:175
#: actions/apitimelinementions.php:174 actions/apitimelinepublic.php:241
#: actions/apitimelineretweetedtome.php:121
#: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161
@@ -268,7 +268,7 @@ msgstr "Impossibile salvare il profilo."
#: actions/apiaccountupdateprofilebackgroundimage.php:108
#: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80
-#: actions/apistatusesupdate.php:211 actions/avatarsettings.php:257
+#: actions/apistatusesupdate.php:212 actions/avatarsettings.php:257
#: actions/designadminpanel.php:123 actions/editapplication.php:118
#: actions/newapplication.php:101 actions/newnotice.php:94
#: lib/designsettings.php:283
@@ -366,7 +366,8 @@ msgid "Could not delete favorite."
msgstr "Impossibile eliminare un preferito."
#: actions/apifriendshipscreate.php:109
-msgid "Could not follow user: User not found."
+#, fuzzy
+msgid "Could not follow user: profile not found."
msgstr "Impossibile seguire l'utente: utente non trovato."
#: actions/apifriendshipscreate.php:118
@@ -382,8 +383,9 @@ msgstr "Impossibile non seguire l'utente: utente non trovato."
msgid "You cannot unfollow yourself."
msgstr "Non puoi non seguirti."
-#: actions/apifriendshipsexists.php:94
-msgid "Two user ids or screen_names must be supplied."
+#: actions/apifriendshipsexists.php:91
+#, fuzzy
+msgid "Two valid IDs or screen_names must be supplied."
msgstr "Devono essere forniti due ID utente o nominativi."
#: actions/apifriendshipsshow.php:134
@@ -513,6 +515,11 @@ msgstr "Gruppi di %s"
msgid "groups on %s"
msgstr "Gruppi su %s"
+#: actions/apimediaupload.php:99
+#, fuzzy
+msgid "Upload failed."
+msgstr "Carica file"
+
#: actions/apioauthauthorize.php:101
msgid "No oauth_token parameter provided."
msgstr "Nessun parametro oauth_token fornito."
@@ -657,23 +664,27 @@ msgstr "Messaggio eliminato."
msgid "No status with that ID found."
msgstr "Nessuno stato trovato con quel ID."
-#: actions/apistatusesupdate.php:241 actions/newnotice.php:155
+#: actions/apistatusesupdate.php:221
+msgid "Client must provide a 'status' parameter with a value."
+msgstr ""
+
+#: actions/apistatusesupdate.php:242 actions/newnotice.php:155
#: lib/mailhandler.php:60
#, php-format
msgid "That's too long. Max notice size is %d chars."
msgstr "Troppo lungo. Lunghezza massima %d caratteri."
-#: actions/apistatusesupdate.php:282 actions/apiusershow.php:96
+#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96
msgid "Not found."
msgstr "Non trovato."
-#: actions/apistatusesupdate.php:305 actions/newnotice.php:178
+#: actions/apistatusesupdate.php:306 actions/newnotice.php:178
#, php-format
msgid "Max notice size is %d chars, including attachment URL."
msgstr ""
"La dimensione massima di un messaggio è di %d caratteri, compreso l'URL."
-#: actions/apisubscriptions.php:231 actions/apisubscriptions.php:261
+#: actions/apisubscriptions.php:232 actions/apisubscriptions.php:262
msgid "Unsupported format."
msgstr "Formato non supportato."
@@ -727,6 +738,10 @@ msgstr "Messaggi etichettati con %s"
msgid "Updates tagged with %1$s on %2$s!"
msgstr "Messaggi etichettati con %1$s su %2$s!"
+#: actions/apitrends.php:87
+msgid "API method under construction."
+msgstr "Metodo delle API in lavorazione."
+
#: actions/attachment.php:73
msgid "No such attachment."
msgstr "Nessun allegato."
@@ -780,7 +795,7 @@ msgid "Preview"
msgstr "Anteprima"
#: actions/avatarsettings.php:149 actions/showapplication.php:252
-#: lib/deleteuserform.php:66 lib/noticelist.php:648
+#: lib/deleteuserform.php:66 lib/noticelist.php:656
msgid "Delete"
msgstr "Elimina"
@@ -1060,7 +1075,7 @@ msgid "Do not delete this notice"
msgstr "Non eliminare il messaggio"
#. TRANS: Submit button title for 'Yes' when deleting a notice.
-#: actions/deletenotice.php:158 lib/noticelist.php:648
+#: actions/deletenotice.php:158 lib/noticelist.php:656
msgid "Delete this notice"
msgstr "Elimina questo messaggio"
@@ -1338,7 +1353,8 @@ msgstr "Alias non valido: \"%s\""
msgid "Could not update group."
msgstr "Impossibile aggiornare il gruppo."
-#: actions/editgroup.php:264 classes/User_group.php:496
+#. TRANS: Server exception thrown when creating group aliases failed.
+#: actions/editgroup.php:264 classes/User_group.php:514
msgid "Could not create aliases."
msgstr "Impossibile creare gli alias."
@@ -2492,8 +2508,9 @@ msgid "Updates matching search term \"%1$s\" on %2$s!"
msgstr "Messaggi che corrispondono al termine \"%1$s\" su %2$s!"
#: actions/nudge.php:85
+#, fuzzy
msgid ""
-"This user doesn't allow nudges or hasn't confirmed or set his email yet."
+"This user doesn't allow nudges or hasn't confirmed or set their email yet."
msgstr ""
"Questo utente non consente i richiami oppure non ha confermato o impostato "
"ancora il suo indirizzo email."
@@ -2572,8 +2589,8 @@ msgid "Only %s URLs over plain HTTP please."
msgstr "Solo URL %s attraverso HTTP semplice."
#. TRANS: Client error on an API request with an unsupported data format.
-#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1179
-#: lib/apiaction.php:1208 lib/apiaction.php:1325
+#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1204
+#: lib/apiaction.php:1232 lib/apiaction.php:1355
msgid "Not a supported data format."
msgstr "Non è un formato di dati supportato."
@@ -3485,7 +3502,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:667
+#: actions/repeat.php:114 lib/noticelist.php:675
msgid "Repeated"
msgstr "Ripetuti"
@@ -3520,10 +3537,10 @@ msgid "Replies feed for %s (Atom)"
msgstr "Feed delle risposte di %s (Atom)"
#: actions/replies.php:199
-#, php-format
+#, fuzzy, php-format
msgid ""
"This is the timeline showing replies to %1$s but %2$s hasn't received a "
-"notice to his attention yet."
+"notice to them yet."
msgstr ""
"Questa è l'attività delle risposte a %1$s, ma %2$s non ha ricevuto ancora "
"alcun messaggio."
@@ -3538,10 +3555,10 @@ msgstr ""
"[entrare in qualche gruppo](%%action.groups%%)."
#: actions/replies.php:206
-#, php-format
+#, fuzzy, php-format
msgid ""
-"You can try to [nudge %1$s](../%2$s) or [post something to his or her "
-"attention](%%%%action.newnotice%%%%?status_textarea=%3$s)."
+"You can try to [nudge %1$s](../%2$s) or [post something to them](%%%%action."
+"newnotice%%%%?status_textarea=%3$s)."
msgstr ""
"Puoi provare a [richiamare %1$s](../%2$s) o [scrivere qualche cosa alla sua "
"attenzione](%%%%action.newnotice%%%%?status_textarea=%s)."
@@ -3632,7 +3649,7 @@ msgstr "Organizzazione"
msgid "Description"
msgstr "Descrizione"
-#: actions/showapplication.php:192 actions/showgroup.php:444
+#: actions/showapplication.php:192 actions/showgroup.php:436
#: lib/profileaction.php:187
msgid "Statistics"
msgstr "Statistiche"
@@ -3719,20 +3736,20 @@ msgstr ""
"forma di cuore per salvare i messaggi e rileggerli in un altro momento."
#: actions/showfavorites.php:208
-#, php-format
+#, fuzzy, php-format
msgid ""
-"%s hasn't added any notices to his favorites yet. Post something interesting "
-"they would add to their favorites :)"
+"%s hasn't added any favorite notices yet. Post something interesting they "
+"would add to their favorites :)"
msgstr ""
"%s non ha aggiunto alcun messaggio tra i suoi preferiti. Scrivi qualche cosa "
"di interessante in modo che lo inserisca tra i suoi preferiti. :)"
#: actions/showfavorites.php:212
-#, php-format
+#, fuzzy, php-format
msgid ""
-"%s hasn't added any notices to his favorites yet. Why not [register an "
-"account](%%%%action.register%%%%) and then post something interesting they "
-"would add to their favorites :)"
+"%s hasn't added any favorite notices yet. Why not [register an account](%%%%"
+"action.register%%%%) and then post something interesting they would add to "
+"their favorites :)"
msgstr ""
"%s non ha aggiunto alcun messaggio tra i suoi preferiti. Perché non [crei un "
"account](%%%%action.register%%%%) e quindi scrivi qualche cosa di "
@@ -3794,7 +3811,7 @@ msgstr "Feed dei messaggi per il gruppo %s (Atom)"
msgid "FOAF for %s group"
msgstr "FOAF per il gruppo %s"
-#: actions/showgroup.php:393 actions/showgroup.php:453 lib/groupnav.php:91
+#: actions/showgroup.php:393 actions/showgroup.php:445 lib/groupnav.php:91
msgid "Members"
msgstr "Membri"
@@ -3808,11 +3825,11 @@ msgstr "(nessuno)"
msgid "All members"
msgstr "Tutti i membri"
-#: actions/showgroup.php:447
+#: actions/showgroup.php:439
msgid "Created"
msgstr "Creato"
-#: actions/showgroup.php:463
+#: actions/showgroup.php:455
#, php-format
msgid ""
"**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3828,7 +3845,7 @@ msgstr ""
"stesso](%%%%action.register%%%%) per far parte di questo gruppo e di molti "
"altri! ([Maggiori informazioni](%%%%doc.help%%%%))"
-#: actions/showgroup.php:469
+#: actions/showgroup.php:461
#, php-format
msgid ""
"**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3840,7 +3857,7 @@ msgstr ""
"(http://it.wikipedia.org/wiki/Microblogging) basato sul software libero "
"[StatusNet](http://status.net/)."
-#: actions/showgroup.php:497
+#: actions/showgroup.php:489
msgid "Admins"
msgstr "Amministratori"
@@ -3915,10 +3932,10 @@ msgstr ""
"potrebbe essere un buon momento per iniziare! :)"
#: actions/showstream.php:207
-#, php-format
+#, fuzzy, php-format
msgid ""
-"You can try to nudge %1$s or [post something to his or her attention](%%%%"
-"action.newnotice%%%%?status_textarea=%2$s)."
+"You can try to nudge %1$s or [post something to them](%%%%action.newnotice%%%"
+"%?status_textarea=%2$s)."
msgstr ""
"Puoi provare a richiamare %1$s o [scrivere qualche cosa che attiri la sua "
"attenzione](%%%%action.newnotice%%%%?status_textarea=%2$s)."
@@ -4306,7 +4323,8 @@ msgstr "Salva impostazioni snapshot"
msgid "You are not subscribed to that profile."
msgstr "Non hai una abbonamento a quel profilo."
-#: actions/subedit.php:83 classes/Subscription.php:132
+#. TRANS: Exception thrown when a subscription could not be stored on the server.
+#: actions/subedit.php:83 classes/Subscription.php:136
msgid "Could not save subscription."
msgstr "Impossibile salvare l'abbonamento."
@@ -4486,10 +4504,6 @@ msgstr ""
msgid "No such tag."
msgstr "Nessuna etichetta."
-#: actions/twitapitrends.php:85
-msgid "API method under construction."
-msgstr "Metodo delle API in lavorazione."
-
#: actions/unblock.php:59
msgid "You haven't blocked that user."
msgstr "Non hai bloccato quell'utente."
@@ -4800,82 +4814,130 @@ msgstr "Versione"
msgid "Author(s)"
msgstr "Autori"
-#: classes/File.php:185
+#. TRANS: Server exception thrown when a URL cannot be processed.
+#: classes/File.php:143
#, php-format
+msgid "Cannot process URL '%s'"
+msgstr ""
+
+#. TRANS: Server exception thrown when... Robin thinks something is impossible!
+#: classes/File.php:175
+msgid "Robin thinks something is impossible."
+msgstr ""
+
+#. TRANS: Message given if an upload is larger than the configured maximum.
+#. TRANS: %1$d is the byte limit for uploads, %2$d is the byte count for the uploaded file.
+#: classes/File.php:190
+#, fuzzy, php-format
msgid ""
-"No file may be larger than %d bytes and the file you sent was %d bytes. Try "
-"to upload a smaller version."
+"No file may be larger than %1$d bytes and the file you sent was %2$d bytes. "
+"Try to upload a smaller version."
msgstr ""
"Nessun file può superare %d byte e il file inviato era di %d byte. Prova a "
"caricarne una versione più piccola."
-#: classes/File.php:195
+#. TRANS: Message given if an upload would exceed user quota.
+#. TRANS: %d (number) is the user quota in bytes.
+#: classes/File.php:202
#, php-format
msgid "A file this large would exceed your user quota of %d bytes."
msgstr ""
"Un file di questa dimensione supererebbe la tua quota utente di %d byte."
-#: classes/File.php:202
+#. TRANS: Message given id an upload would exceed a user's monthly quota.
+#. TRANS: $d (number) is the monthly user quota in bytes.
+#: classes/File.php:211
#, php-format
msgid "A file this large would exceed your monthly quota of %d bytes."
msgstr ""
"Un file di questa dimensione supererebbe la tua quota mensile di %d byte."
-#: classes/Group_member.php:41
+#. TRANS: Client exception thrown if a file upload does not have a valid name.
+#: classes/File.php:248 classes/File.php:263
+#, fuzzy
+msgid "Invalid filename."
+msgstr "Dimensione non valida."
+
+#. TRANS: Exception thrown when joining a group fails.
+#: classes/Group_member.php:42
msgid "Group join failed."
msgstr "Ingresso nel gruppo non riuscito."
-#: classes/Group_member.php:53
+#. TRANS: Exception thrown when trying to leave a group the user is not a member of.
+#: classes/Group_member.php:55
msgid "Not part of group."
msgstr "Non si fa parte del gruppo."
-#: classes/Group_member.php:60
+#. TRANS: Exception thrown when trying to leave a group fails.
+#: classes/Group_member.php:63
msgid "Group leave failed."
msgstr "Uscita dal gruppo non riuscita."
-#: classes/Local_group.php:41
+#. TRANS: Server exception thrown when updating a local group fails.
+#: classes/Local_group.php:42
msgid "Could not update local group."
msgstr "Impossibile aggiornare il gruppo locale."
-#: classes/Login_token.php:76
+#. TRANS: Exception thrown when trying creating a login token failed.
+#. TRANS: %s is the user nickname for which token creation failed.
+#: classes/Login_token.php:78
#, php-format
msgid "Could not create login token for %s"
msgstr "Impossibile creare il token di accesso per %s"
-#: classes/Message.php:45
+#. TRANS: Exception thrown when database name or Data Source Name could not be found.
+#: classes/Memcached_DataObject.php:533
+msgid "No database name or DSN found anywhere."
+msgstr ""
+
+#. TRANS: Client exception thrown when a user tries to send a direct message while being banned from sending them.
+#: classes/Message.php:46
msgid "You are banned from sending direct messages."
msgstr "Ti è proibito inviare messaggi diretti."
-#: classes/Message.php:61
+#. TRANS: Message given when a message could not be stored on the server.
+#: classes/Message.php:63
msgid "Could not insert message."
msgstr "Impossibile inserire il messaggio."
-#: classes/Message.php:71
+#. TRANS: Message given when a message could not be updated on the server.
+#: classes/Message.php:74
msgid "Could not update message with new URI."
msgstr "Impossibile aggiornare il messaggio con il nuovo URI."
+#. TRANS: Server exception thrown when a user profile for a notice cannot be found.
+#. TRANS: %1$d is a profile ID (number), %2$d is a notice ID (number).
+#: classes/Notice.php:98
+#, php-format
+msgid "No such profile (%1$d) for notice (%2$d)."
+msgstr ""
+
#. TRANS: Server exception. %s are the error details.
-#: classes/Notice.php:182
+#: classes/Notice.php:190
#, php-format
msgid "Database error inserting hashtag: %s"
msgstr "Errore del database nell'inserire un hashtag: %s"
-#: classes/Notice.php:251
+#. TRANS: Client exception thrown if a notice contains too many characters.
+#: classes/Notice.php:260
msgid "Problem saving notice. Too long."
msgstr "Problema nel salvare il messaggio. Troppo lungo."
-#: classes/Notice.php:255
+#. TRANS: Client exception thrown when trying to save a notice for an unknown user.
+#: classes/Notice.php:265
msgid "Problem saving notice. Unknown user."
msgstr "Problema nel salvare il messaggio. Utente sconosciuto."
-#: classes/Notice.php:260
+#. TRANS: Client exception thrown when a user tries to post too many notices in a given time frame.
+#: classes/Notice.php:271
msgid ""
"Too many notices too fast; take a breather and post again in a few minutes."
msgstr ""
"Troppi messaggi troppo velocemente; fai una pausa e scrivi di nuovo tra "
"qualche minuto."
-#: classes/Notice.php:266
+#. TRANS: Client exception thrown when a user tries to post too many duplicate notices in a given time frame.
+#: classes/Notice.php:278
msgid ""
"Too many duplicate messages too quickly; take a breather and post again in a "
"few minutes."
@@ -4883,71 +4945,122 @@ msgstr ""
"Troppi messaggi duplicati troppo velocemente; fai una pausa e scrivi di "
"nuovo tra qualche minuto."
-#: classes/Notice.php:272
+#. TRANS: Client exception thrown when a user tries to post while being banned.
+#: classes/Notice.php:286
msgid "You are banned from posting notices on this site."
msgstr "Ti è proibito inviare messaggi su questo sito."
-#: classes/Notice.php:338 classes/Notice.php:364
+#. TRANS: Server exception thrown when a notice cannot be saved.
+#. TRANS: Server exception thrown when a notice cannot be updated.
+#: classes/Notice.php:353 classes/Notice.php:380
msgid "Problem saving notice."
msgstr "Problema nel salvare il messaggio."
-#: classes/Notice.php:973
+#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups().
+#: classes/Notice.php:892
+msgid "Bad type provided to saveKnownGroups"
+msgstr ""
+
+#. TRANS: Server exception thrown when an update for a group inbox fails.
+#: classes/Notice.php:991
msgid "Problem saving group inbox."
msgstr "Problema nel salvare la casella della posta del gruppo."
#. TRANS: Message used to repeat a notice. RT is the abbreviation of 'retweet'.
#. TRANS: %1$s is the repeated user's name, %2$s is the repeated notice.
-#: classes/Notice.php:1564
+#: classes/Notice.php:1614
#, php-format
msgid "RT @%1$s %2$s"
msgstr "RT @%1$s %2$s"
-#: classes/Subscription.php:74 lib/oauthstore.php:465
+#. TRANS: Exception thrown when trying to revoke an existing role for a user that does not exist.
+#. TRANS: %1$s is the role name, %2$s is the user ID (number).
+#: classes/Profile.php:740
+#, php-format
+msgid "Cannot revoke role \"%1$s\" for user #%2$d; does not exist."
+msgstr ""
+
+#. TRANS: Exception thrown when trying to revoke a role for a user with a failing database query.
+#. TRANS: %1$s is the role name, %2$s is the user ID (number).
+#: classes/Profile.php:749
+#, php-format
+msgid "Cannot revoke role \"%1$s\" for user #%2$d; database error."
+msgstr ""
+
+#. TRANS: Exception thrown when a right for a non-existing user profile is checked.
+#: classes/Remote_profile.php:54
+#, fuzzy
+msgid "Missing profile."
+msgstr "L'utente non ha un profilo."
+
+#. TRANS: Exception thrown when a tag cannot be saved.
+#: classes/Status_network.php:346
+#, fuzzy
+msgid "Unable to save tag."
+msgstr "Impossibile salvare il messaggio del sito."
+
+#. TRANS: Exception thrown when trying to subscribe while being banned from subscribing.
+#: classes/Subscription.php:75 lib/oauthstore.php:465
msgid "You have been banned from subscribing."
msgstr "Non ti è possibile abbonarti."
-#: classes/Subscription.php:78
+#. TRANS: Exception thrown when trying to subscribe while already subscribed.
+#: classes/Subscription.php:80
msgid "Already subscribed!"
msgstr "Hai già l'abbonamento!"
-#: classes/Subscription.php:82
+#. TRANS: Exception thrown when trying to subscribe to a user who has blocked the subscribing user.
+#: classes/Subscription.php:85
msgid "User has blocked you."
msgstr "L'utente non ti consente di seguirlo."
-#: classes/Subscription.php:167
+#. TRANS: Exception thrown when trying to unsibscribe without a subscription.
+#: classes/Subscription.php:171
msgid "Not subscribed!"
msgstr "Non hai l'abbonamento!"
-#: classes/Subscription.php:173
-msgid "Couldn't delete self-subscription."
+#. TRANS: Exception thrown when trying to unsubscribe a user from themselves.
+#: classes/Subscription.php:178
+#, fuzzy
+msgid "Could not delete self-subscription."
msgstr "Impossibile eliminare l'auto-abbonamento."
-#: classes/Subscription.php:200
-msgid "Couldn't delete subscription OMB token."
+#. TRANS: Exception thrown when the OMB token for a subscription could not deleted on the server.
+#: classes/Subscription.php:206
+#, fuzzy
+msgid "Could not delete subscription OMB token."
msgstr "Impossibile eliminare il token di abbonamento OMB."
-#: classes/Subscription.php:211
-msgid "Couldn't delete subscription."
+#. TRANS: Exception thrown when a subscription could not be deleted on the server.
+#: classes/Subscription.php:218
+#, fuzzy
+msgid "Could not delete subscription."
msgstr "Impossibile eliminare l'abbonamento."
-#: classes/User.php:363
+#. TRANS: Notice given on user registration.
+#. TRANS: %1$s is the sitename, $2$s is the registering user's nickname.
+#: classes/User.php:365
#, php-format
msgid "Welcome to %1$s, @%2$s!"
msgstr "Benvenuti su %1$s, @%2$s!"
-#: classes/User_group.php:480
+#. TRANS: Server exception thrown when creating a group failed.
+#: classes/User_group.php:496
msgid "Could not create group."
msgstr "Impossibile creare il gruppo."
-#: classes/User_group.php:489
+#. TRANS: Server exception thrown when updating a group URI failed.
+#: classes/User_group.php:506
msgid "Could not set group URI."
msgstr "Impossibile impostare l'URI del gruppo."
-#: classes/User_group.php:510
+#. TRANS: Server exception thrown when setting group membership failed.
+#: classes/User_group.php:529
msgid "Could not set group membership."
msgstr "Impossibile impostare la membership al gruppo."
-#: classes/User_group.php:524
+#. TRANS: Server exception thrown when saving local group information failed.
+#: classes/User_group.php:544
msgid "Could not save local group info."
msgstr "Impossibile salvare le informazioni del gruppo locale."
@@ -6423,7 +6536,7 @@ msgstr ""
"iniziare una conversazione con altri utenti. Altre persone possono mandare "
"messaggi riservati solamente a te."
-#: lib/mailbox.php:227 lib/noticelist.php:497
+#: lib/mailbox.php:227 lib/noticelist.php:505
msgid "from"
msgstr "via"
@@ -6481,24 +6594,24 @@ msgstr "Scrittura del file su disco non riuscita."
msgid "File upload stopped by extension."
msgstr "Caricamento del file bloccato dall'estensione."
-#: lib/mediafile.php:179 lib/mediafile.php:216
+#: lib/mediafile.php:179 lib/mediafile.php:217
msgid "File exceeds user's quota."
msgstr "Il file supera la quota dell'utente."
-#: lib/mediafile.php:196 lib/mediafile.php:233
+#: lib/mediafile.php:197 lib/mediafile.php:234
msgid "File could not be moved to destination directory."
msgstr "Impossibile spostare il file nella directory di destinazione."
-#: lib/mediafile.php:201 lib/mediafile.php:237
+#: lib/mediafile.php:202 lib/mediafile.php:238
msgid "Could not determine file's MIME type."
msgstr "Impossibile determinare il tipo MIME del file."
-#: lib/mediafile.php:270
+#: lib/mediafile.php:318
#, php-format
msgid " Try using another %s format."
msgstr "Prova a usare un altro formato per %s."
-#: lib/mediafile.php:275
+#: lib/mediafile.php:323
#, php-format
msgid "%s is not a supported file type on this server."
msgstr "%s non è un tipo di file supportato su server."
@@ -6554,51 +6667,51 @@ msgstr ""
"previsto. Riprova più tardi."
#. TRANS: Used in coordinates as abbreviation of north
-#: lib/noticelist.php:430
+#: lib/noticelist.php:436
msgid "N"
msgstr "N"
#. TRANS: Used in coordinates as abbreviation of south
-#: lib/noticelist.php:432
+#: lib/noticelist.php:438
msgid "S"
msgstr "S"
#. TRANS: Used in coordinates as abbreviation of east
-#: lib/noticelist.php:434
+#: lib/noticelist.php:440
msgid "E"
msgstr "E"
#. TRANS: Used in coordinates as abbreviation of west
-#: lib/noticelist.php:436
+#: lib/noticelist.php:442
msgid "W"
msgstr "O"
-#: lib/noticelist.php:438
+#: lib/noticelist.php:444
#, php-format
msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
msgstr "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
-#: lib/noticelist.php:447
+#: lib/noticelist.php:453
msgid "at"
msgstr "presso"
-#: lib/noticelist.php:559
+#: lib/noticelist.php:567
msgid "in context"
msgstr "in una discussione"
-#: lib/noticelist.php:594
+#: lib/noticelist.php:602
msgid "Repeated by"
msgstr "Ripetuto da"
-#: lib/noticelist.php:621
+#: lib/noticelist.php:629
msgid "Reply to this notice"
msgstr "Rispondi a questo messaggio"
-#: lib/noticelist.php:622
+#: lib/noticelist.php:630
msgid "Reply"
msgstr "Rispondi"
-#: lib/noticelist.php:666
+#: lib/noticelist.php:674
msgid "Notice repeated"
msgstr "Messaggio ripetuto"
@@ -6857,8 +6970,8 @@ msgstr ""
"Questo server non è in grado di gestire caricamenti senza il supporto ZIP."
#: lib/themeuploader.php:58 lib/themeuploader.php:61
-msgid "Theme upload missing or failed."
-msgstr "Tema caricato mancante o caricamento non riuscito."
+msgid "The theme file is missing or the upload failed."
+msgstr "Manca il file del tema o il caricamento non è riuscito."
#: lib/themeuploader.php:91 lib/themeuploader.php:102
#: lib/themeuploader.php:253 lib/themeuploader.php:257
diff --git a/locale/ja/LC_MESSAGES/statusnet.po b/locale/ja/LC_MESSAGES/statusnet.po
index e0e1ef021..1141b3427 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-06-16 22:18+0000\n"
-"PO-Revision-Date: 2010-06-21 18:04:16+0000\n"
+"POT-Creation-Date: 2010-08-03 13:21+0000\n"
+"PO-Revision-Date: 2010-08-03 13:22:11+0000\n"
"Language-Team: Japanese\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.17alpha (r68367); Translate extension (2010-06-12)\n"
+"X-Generator: MediaWiki 1.17alpha (r70381); Translate extension (2010-07-21)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: ja\n"
"X-Message-Group: out-statusnet\n"
@@ -103,7 +103,7 @@ msgstr "ãã®ã‚ˆã†ãªãƒšãƒ¼ã‚¸ã¯ã‚ã‚Šã¾ã›ã‚“。"
#: actions/apidirectmessagenew.php:74 actions/apigroupcreate.php:113
#: actions/apigroupismember.php:91 actions/apigroupjoin.php:100
#: actions/apigroupleave.php:100 actions/apigrouplist.php:73
-#: actions/apistatusesupdate.php:228 actions/apisubscriptions.php:87
+#: actions/apistatusesupdate.php:229 actions/apisubscriptions.php:87
#: actions/apitimelinefavorites.php:72 actions/apitimelinefriends.php:174
#: actions/apitimelinehome.php:80 actions/apitimelinementions.php:80
#: actions/apitimelineuser.php:82 actions/avatarbynickname.php:75
@@ -170,19 +170,19 @@ msgstr ""
#. TRANS: %1$s is user nickname, %2$s is user nickname, %2$s is user nickname prefixed with "@"
#: actions/all.php:146
-#, php-format
+#, fuzzy, 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)."
+"You can try to [nudge %1$s](../%2$s) from their profile or [post something "
+"to them](%%%%action.newnotice%%%%?status_textarea=%3$s)."
msgstr ""
"プロフィールã‹ã‚‰ [%1$s ã•ã‚“ã«åˆå›³](../%2$s) ã—ãŸã‚Šã€[知らã›ãŸã„ã“ã¨ã«ã¤ã„ã¦æŠ•"
"稿](%%%%action.newnotice%%%%?status_textarea=%3$s) ã—ãŸã‚Šã§ãã¾ã™ã€‚"
#: actions/all.php:149 actions/replies.php:210 actions/showstream.php:211
-#, php-format
+#, fuzzy, php-format
msgid ""
"Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
-"post a notice to his or her attention."
+"post a notice to them."
msgstr ""
"[アカウントを登録](%%%%action.register%%%%) ã—㦠%s ã•ã‚“ã«åˆå›³ã—ãŸã‚Šã€ãŠçŸ¥ã‚‰"
"ã›ã‚’é€ã£ã¦ã¿ã¾ã›ã‚“ã‹ã€‚"
@@ -217,7 +217,7 @@ msgstr "%2$s ã« %1$s ã¨å‹äººã‹ã‚‰ã®æ›´æ–°ãŒã‚ã‚Šã¾ã™ï¼"
#: actions/apistatusesshow.php:109 actions/apistatusnetconfig.php:141
#: actions/apistatusnetversion.php:93 actions/apisubscriptions.php:111
#: actions/apitimelinefavorites.php:174 actions/apitimelinefriends.php:271
-#: actions/apitimelinegroup.php:152 actions/apitimelinehome.php:175
+#: actions/apitimelinegroup.php:154 actions/apitimelinehome.php:175
#: actions/apitimelinementions.php:174 actions/apitimelinepublic.php:241
#: actions/apitimelineretweetedtome.php:121
#: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161
@@ -268,7 +268,7 @@ msgstr "プロフィールをä¿å­˜ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚"
#: actions/apiaccountupdateprofilebackgroundimage.php:108
#: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80
-#: actions/apistatusesupdate.php:211 actions/avatarsettings.php:257
+#: actions/apistatusesupdate.php:212 actions/avatarsettings.php:257
#: actions/designadminpanel.php:123 actions/editapplication.php:118
#: actions/newapplication.php:101 actions/newnotice.php:94
#: lib/designsettings.php:283
@@ -366,7 +366,8 @@ msgid "Could not delete favorite."
msgstr "ãŠæ°—ã«å…¥ã‚Šã‚’å–り消ã™ã“ã¨ãŒã§ãã¾ã›ã‚“。"
#: actions/apifriendshipscreate.php:109
-msgid "Could not follow user: User not found."
+#, fuzzy
+msgid "Could not follow user: profile not found."
msgstr "ユーザをフォローã§ãã¾ã›ã‚“ã§ã—ãŸ: ユーザãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。"
#: actions/apifriendshipscreate.php:118
@@ -383,8 +384,9 @@ msgstr "ユーザã®ãƒ•ã‚©ãƒ­ãƒ¼ã‚’åœæ­¢ã§ãã¾ã›ã‚“ã§ã—ãŸ: ユーザãŒè
msgid "You cannot unfollow yourself."
msgstr "自分自身をフォローåœæ­¢ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。"
-#: actions/apifriendshipsexists.php:94
-msgid "Two user ids or screen_names must be supplied."
+#: actions/apifriendshipsexists.php:91
+#, fuzzy
+msgid "Two valid IDs or screen_names must be supplied."
msgstr "ãµãŸã¤ã®ï¼©ï¼¤ã‹ã‚¹ã‚¯ãƒªãƒ¼ãƒ³ãƒãƒ¼ãƒ ãŒå¿…è¦ã§ã™ã€‚"
#: actions/apifriendshipsshow.php:134
@@ -515,6 +517,11 @@ msgstr "%s グループ"
msgid "groups on %s"
msgstr "%s 上ã®ã‚°ãƒ«ãƒ¼ãƒ—"
+#: actions/apimediaupload.php:99
+#, fuzzy
+msgid "Upload failed."
+msgstr "ファイルアップロード"
+
#: actions/apioauthauthorize.php:101
msgid "No oauth_token parameter provided."
msgstr "oauth_token パラメータã¯æä¾›ã•ã‚Œã¾ã›ã‚“ã§ã—ãŸã€‚"
@@ -655,22 +662,26 @@ msgstr "ステータスを削除ã—ã¾ã—ãŸã€‚"
msgid "No status with that ID found."
msgstr "ãã®ï¼©ï¼¤ã§ã®ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ã¯ã‚ã‚Šã¾ã›ã‚“。"
-#: actions/apistatusesupdate.php:241 actions/newnotice.php:155
+#: actions/apistatusesupdate.php:221
+msgid "Client must provide a 'status' parameter with a value."
+msgstr ""
+
+#: actions/apistatusesupdate.php:242 actions/newnotice.php:155
#: lib/mailhandler.php:60
#, php-format
msgid "That's too long. Max notice size is %d chars."
msgstr "é•·ã™ãŽã¾ã™ã€‚ã¤ã¶ã‚„ãã¯æœ€å¤§ 140 å­—ã¾ã§ã§ã™ã€‚"
-#: actions/apistatusesupdate.php:282 actions/apiusershow.php:96
+#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96
msgid "Not found."
msgstr "見ã¤ã‹ã‚Šã¾ã›ã‚“。"
-#: actions/apistatusesupdate.php:305 actions/newnotice.php:178
+#: actions/apistatusesupdate.php:306 actions/newnotice.php:178
#, php-format
msgid "Max notice size is %d chars, including attachment URL."
msgstr "ã¤ã¶ã‚„ã㯠URL ã‚’å«ã‚ã¦æœ€å¤§ %d å­—ã¾ã§ã§ã™ã€‚"
-#: actions/apisubscriptions.php:231 actions/apisubscriptions.php:261
+#: actions/apisubscriptions.php:232 actions/apisubscriptions.php:262
msgid "Unsupported format."
msgstr "サãƒãƒ¼ãƒˆå¤–ã®å½¢å¼ã§ã™ã€‚"
@@ -724,6 +735,10 @@ msgstr "%s ã¨ã‚¿ã‚°ä»˜ã‘ã•ã‚ŒãŸã¤ã¶ã‚„ã"
msgid "Updates tagged with %1$s on %2$s!"
msgstr "%2$s ã« %1$s ã«ã‚ˆã‚‹æ›´æ–°ãŒã‚ã‚Šã¾ã™ï¼"
+#: actions/apitrends.php:87
+msgid "API method under construction."
+msgstr "API メソッドãŒå·¥äº‹ä¸­ã§ã™ã€‚"
+
#: actions/attachment.php:73
msgid "No such attachment."
msgstr "ãã®ã‚ˆã†ãªæ·»ä»˜ã¯ã‚ã‚Šã¾ã›ã‚“。"
@@ -776,7 +791,7 @@ msgid "Preview"
msgstr "プレビュー"
#: actions/avatarsettings.php:149 actions/showapplication.php:252
-#: lib/deleteuserform.php:66 lib/noticelist.php:648
+#: lib/deleteuserform.php:66 lib/noticelist.php:656
msgid "Delete"
msgstr "削除"
@@ -1061,7 +1076,7 @@ msgid "Do not delete this notice"
msgstr "ã“ã®ã¤ã¶ã‚„ãを削除ã§ãã¾ã›ã‚“。"
#. TRANS: Submit button title for 'Yes' when deleting a notice.
-#: actions/deletenotice.php:158 lib/noticelist.php:648
+#: actions/deletenotice.php:158 lib/noticelist.php:656
msgid "Delete this notice"
msgstr "ã“ã®ã¤ã¶ã‚„ãを削除"
@@ -1340,7 +1355,8 @@ msgstr "ä¸æ­£ãªåˆ¥å: \"%s\""
msgid "Could not update group."
msgstr "グループを更新ã§ãã¾ã›ã‚“。"
-#: actions/editgroup.php:264 classes/User_group.php:496
+#. TRANS: Server exception thrown when creating group aliases failed.
+#: actions/editgroup.php:264 classes/User_group.php:514
msgid "Could not create aliases."
msgstr "別åを作æˆã§ãã¾ã›ã‚“。"
@@ -2513,8 +2529,9 @@ msgid "Updates matching search term \"%1$s\" on %2$s!"
msgstr "\"%2$s\" 上ã®æ¤œç´¢èªž \"$1$s\" ã«ä¸€è‡´ã™ã‚‹ã™ã¹ã¦ã®æ›´æ–°"
#: actions/nudge.php:85
+#, fuzzy
msgid ""
-"This user doesn't allow nudges or hasn't confirmed or set his email yet."
+"This user doesn't allow nudges or hasn't confirmed or set their email yet."
msgstr ""
"ã“ã®ãƒ¦ãƒ¼ã‚¶ã¯ã€åˆå›³ã‚’許å¯ã—ã¦ã„ãªã„ã‹ã€ç¢ºèªã•ã‚Œã¦ã„ãŸçŠ¶æ…‹ã§ãªã„ã‹ã€ãƒ¡ãƒ¼ãƒ«è¨­å®š"
"ã‚’ã—ã¦ã„ã¾ã›ã‚“。"
@@ -2594,8 +2611,8 @@ msgid "Only %s URLs over plain HTTP please."
msgstr ""
#. TRANS: Client error on an API request with an unsupported data format.
-#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1179
-#: lib/apiaction.php:1208 lib/apiaction.php:1325
+#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1204
+#: lib/apiaction.php:1232 lib/apiaction.php:1355
msgid "Not a supported data format."
msgstr "サãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ãªã„データ形å¼ã€‚"
@@ -3503,7 +3520,7 @@ msgstr "自分ã®ã¤ã¶ã‚„ãã¯ç¹°ã‚Šè¿”ã›ã¾ã›ã‚“。"
msgid "You already repeated that notice."
msgstr "ã™ã§ã«ãã®ã¤ã¶ã‚„ãã‚’ç¹°ã‚Šè¿”ã—ã¦ã„ã¾ã™ã€‚"
-#: actions/repeat.php:114 lib/noticelist.php:667
+#: actions/repeat.php:114 lib/noticelist.php:675
msgid "Repeated"
msgstr "ç¹°ã‚Šè¿”ã•ã‚ŒãŸ"
@@ -3538,10 +3555,10 @@ msgid "Replies feed for %s (Atom)"
msgstr "%s ã®è¿”信フィード (Atom)"
#: actions/replies.php:199
-#, php-format
+#, fuzzy, php-format
msgid ""
"This is the timeline showing replies to %1$s but %2$s hasn't received a "
-"notice to his attention yet."
+"notice to them yet."
msgstr ""
"ã“れ㯠%1$s ã¸ã®è¿”信を表示ã—ãŸã‚¿ã‚¤ãƒ ãƒ©ã‚¤ãƒ³ã§ã™ã€ã—ã‹ã— %2$s ã¯ã¾ã ã¤ã¶ã‚„ãã‚’"
"å—ã‘å–ã£ã¦ã„ã¾ã›ã‚“。"
@@ -3556,10 +3573,10 @@ msgstr ""
"ループã«åŠ ã‚ã‚‹](%%action.groups%%)ã“ã¨ãŒã§ãã¾ã™ã€‚"
#: actions/replies.php:206
-#, php-format
+#, fuzzy, php-format
msgid ""
-"You can try to [nudge %1$s](../%2$s) or [post something to his or her "
-"attention](%%%%action.newnotice%%%%?status_textarea=%3$s)."
+"You can try to [nudge %1$s](../%2$s) or [post something to them](%%%%action."
+"newnotice%%%%?status_textarea=%3$s)."
msgstr ""
"ã‚ãªãŸã¯ [%1$s ã«åˆå›³](../%2$s) ã™ã‚‹ã‹ã€[ãã®äººå®›ã¦ã«ä½•ã‹ã‚’投稿](%%%%action."
"newnotice%%%%?status_textarea=%3$s)ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚"
@@ -3652,7 +3669,7 @@ msgstr "組織"
msgid "Description"
msgstr "概è¦"
-#: actions/showapplication.php:192 actions/showgroup.php:444
+#: actions/showapplication.php:192 actions/showgroup.php:436
#: lib/profileaction.php:187
msgid "Statistics"
msgstr "統計データ"
@@ -3741,20 +3758,20 @@ msgstr ""
"ã™ã‚‹ã‹ã€ã¾ãŸã¯ãれらã®ä¸Šã§ã‚¹ãƒãƒƒãƒˆãƒ©ã‚¤ãƒˆã‚’ã¯ã˜ã„ã¦ãã ã•ã„。"
#: actions/showfavorites.php:208
-#, php-format
+#, fuzzy, php-format
msgid ""
-"%s hasn't added any notices to his favorites yet. Post something interesting "
-"they would add to their favorites :)"
+"%s hasn't added any favorite notices yet. Post something interesting they "
+"would add to their favorites :)"
msgstr ""
"%s ã¯ã¾ã å½¼ã®ãŠæ°—ã«å…¥ã‚Šã«å°‘ã—ã®ã¤ã¶ã‚„ãも加ãˆã¦ã„ã¾ã›ã‚“。 彼らãŒãŠæ°—ã«å…¥ã‚Šã«"
"加ãˆã‚‹ã“ã¨ãŠã‚‚ã—ã‚ã„ã‚‚ã®ã‚’投稿ã—ã¦ãã ã•ã„:)"
#: actions/showfavorites.php:212
-#, php-format
+#, fuzzy, php-format
msgid ""
-"%s hasn't added any notices to his favorites yet. Why not [register an "
-"account](%%%%action.register%%%%) and then post something interesting they "
-"would add to their favorites :)"
+"%s hasn't added any favorite notices yet. Why not [register an account](%%%%"
+"action.register%%%%) and then post something interesting they would add to "
+"their favorites :)"
msgstr ""
"%s ã¯ã¾ã ãŠæ°—ã«å…¥ã‚Šã«å°‘ã—ã®ã¤ã¶ã‚„ãも加ãˆã¦ã„ã¾ã›ã‚“。 ãªãœ [アカウント登録](%"
"%%%action.register%%%%) ã—ãªã„ã®ã§ã™ã‹ã€‚ãã—ã¦ã€å½¼ã‚‰ãŒãŠæ°—ã«å…¥ã‚Šã«åŠ ãˆã‚‹ãŠã‚‚"
@@ -3816,7 +3833,7 @@ msgstr "%s グループã®ã¤ã¶ã‚„ãフィード (Atom)"
msgid "FOAF for %s group"
msgstr "%s グループ㮠FOAF"
-#: actions/showgroup.php:393 actions/showgroup.php:453 lib/groupnav.php:91
+#: actions/showgroup.php:393 actions/showgroup.php:445 lib/groupnav.php:91
msgid "Members"
msgstr "メンãƒãƒ¼"
@@ -3830,11 +3847,11 @@ msgstr "(ãªã—)"
msgid "All members"
msgstr "å…¨ã¦ã®ãƒ¡ãƒ³ãƒãƒ¼"
-#: actions/showgroup.php:447
+#: actions/showgroup.php:439
msgid "Created"
msgstr "作æˆæ—¥"
-#: actions/showgroup.php:463
+#: actions/showgroup.php:455
#, php-format
msgid ""
"**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3849,7 +3866,7 @@ msgstr ""
"ã™ã‚‹çŸ­ã„メッセージを共有ã—ã¾ã™ã€‚[今ã™ãå‚加](%%%%action.register%%%%) ã—ã¦ã“"
"ã®ã‚°ãƒ«ãƒ¼ãƒ—ã®ä¸€å“¡ã«ãªã‚Šã¾ã—ょã†! ([ã‚‚ã£ã¨èª­ã‚€](%%%%doc.help%%%%))"
-#: actions/showgroup.php:469
+#: actions/showgroup.php:461
#, php-format
msgid ""
"**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3862,7 +3879,7 @@ msgstr ""
"wikipedia.org/wiki/Micro-blogging) サービス。メンãƒãƒ¼ã¯å½¼ã‚‰ã®æš®ã‚‰ã—ã¨èˆˆå‘³ã«é–¢"
"ã™ã‚‹çŸ­ã„メッセージを共有ã—ã¾ã™ã€‚"
-#: actions/showgroup.php:497
+#: actions/showgroup.php:489
msgid "Admins"
msgstr "管ç†è€…"
@@ -3937,10 +3954,10 @@ msgstr ""
"ã„ã¾ã¯å§‹ã‚る良ã„時ã§ã—ょã†:)"
#: actions/showstream.php:207
-#, php-format
+#, fuzzy, php-format
msgid ""
-"You can try to nudge %1$s or [post something to his or her attention](%%%%"
-"action.newnotice%%%%?status_textarea=%2$s)."
+"You can try to nudge %1$s or [post something to them](%%%%action.newnotice%%%"
+"%?status_textarea=%2$s)."
msgstr ""
"ã‚ãªãŸã¯ã€%1$s ã«åˆå›³ã™ã‚‹ã‹ã€[ã¾ãŸã¯ãã®äººå®›ã«ä½•ã‹ã‚’投稿](%%%%action."
"newnotice%%%%?status_textarea=%2$s) ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚"
@@ -4347,7 +4364,8 @@ msgstr "サイト設定ã®ä¿å­˜"
msgid "You are not subscribed to that profile."
msgstr "ã‚ãªãŸã¯ãã®ãƒ—ロファイルã«ãƒ•ã‚©ãƒ­ãƒ¼ã•ã‚Œã¦ã„ã¾ã›ã‚“。"
-#: actions/subedit.php:83 classes/Subscription.php:132
+#. TRANS: Exception thrown when a subscription could not be stored on the server.
+#: actions/subedit.php:83 classes/Subscription.php:136
msgid "Could not save subscription."
msgstr "フォローをä¿å­˜ã§ãã¾ã›ã‚“。"
@@ -4526,10 +4544,6 @@ msgstr "ã“ã®ãƒ•ã‚©ãƒ¼ãƒ ã‚’使用ã—ã¦ã€ãƒ•ã‚©ãƒ­ãƒ¼è€…ã‹ãƒ•ã‚©ãƒ­ãƒ¼ã«ã‚¿
msgid "No such tag."
msgstr "ãã®ã‚ˆã†ãªã‚¿ã‚°ã¯ã‚ã‚Šã¾ã›ã‚“。"
-#: actions/twitapitrends.php:85
-msgid "API method under construction."
-msgstr "API メソッドãŒå·¥äº‹ä¸­ã§ã™ã€‚"
-
#: actions/unblock.php:59
msgid "You haven't blocked that user."
msgstr "ã‚ãªãŸã¯ãã®ãƒ¦ãƒ¼ã‚¶ã‚’ブロックã—ã¦ã„ã¾ã›ã‚“。"
@@ -4832,83 +4846,131 @@ msgstr "ãƒãƒ¼ã‚¸ãƒ§ãƒ³"
msgid "Author(s)"
msgstr "作者"
-#: classes/File.php:185
+#. TRANS: Server exception thrown when a URL cannot be processed.
+#: classes/File.php:143
#, php-format
+msgid "Cannot process URL '%s'"
+msgstr ""
+
+#. TRANS: Server exception thrown when... Robin thinks something is impossible!
+#: classes/File.php:175
+msgid "Robin thinks something is impossible."
+msgstr ""
+
+#. TRANS: Message given if an upload is larger than the configured maximum.
+#. TRANS: %1$d is the byte limit for uploads, %2$d is the byte count for the uploaded file.
+#: classes/File.php:190
+#, fuzzy, php-format
msgid ""
-"No file may be larger than %d bytes and the file you sent was %d bytes. Try "
-"to upload a smaller version."
+"No file may be larger than %1$d bytes and the file you sent was %2$d bytes. "
+"Try to upload a smaller version."
msgstr ""
"ã©ã‚“ãªãƒ•ã‚¡ã‚¤ãƒ«ã‚‚ %d ãƒã‚¤ãƒˆã‚ˆã‚Šå¤§ããã¦ã¯ã„ã‘ã¾ã›ã‚“ã€ãã—ã¦ã€ã‚ãªãŸãŒé€ã£ãŸ"
"ファイル㯠%d ãƒã‚¤ãƒˆã§ã—ãŸã€‚よりå°ã•ã„ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’アップロードã™ã‚‹ã‚ˆã†ã«ã—ã¦"
"ãã ã•ã„。"
-#: classes/File.php:195
+#. TRANS: Message given if an upload would exceed user quota.
+#. TRANS: %d (number) is the user quota in bytes.
+#: classes/File.php:202
#, php-format
msgid "A file this large would exceed your user quota of %d bytes."
msgstr ""
"ã“ã‚Œã»ã©å¤§ãã„ファイルã¯ã‚ãªãŸã®%dãƒã‚¤ãƒˆã®ãƒ¦ãƒ¼ã‚¶å‰²å½“ã¦ã‚’超ãˆã¦ã„ã‚‹ã§ã—ょã†ã€‚"
-#: classes/File.php:202
+#. TRANS: Message given id an upload would exceed a user's monthly quota.
+#. TRANS: $d (number) is the monthly user quota in bytes.
+#: classes/File.php:211
#, php-format
msgid "A file this large would exceed your monthly quota of %d bytes."
msgstr ""
"ã“ã‚Œã»ã©å¤§ãã„ファイルã¯ã‚ãªãŸã®%dãƒã‚¤ãƒˆã®æ¯Žæœˆã®å‰²å½“ã¦ã‚’超ãˆã¦ã„ã‚‹ã§ã—ょã†ã€‚"
-#: classes/Group_member.php:41
+#. TRANS: Client exception thrown if a file upload does not have a valid name.
+#: classes/File.php:248 classes/File.php:263
+#, fuzzy
+msgid "Invalid filename."
+msgstr "ä¸æ­£ãªã‚µã‚¤ã‚ºã€‚"
+
+#. TRANS: Exception thrown when joining a group fails.
+#: classes/Group_member.php:42
msgid "Group join failed."
msgstr "グループå‚加ã«å¤±æ•—ã—ã¾ã—ãŸã€‚"
-#: classes/Group_member.php:53
+#. TRANS: Exception thrown when trying to leave a group the user is not a member of.
+#: classes/Group_member.php:55
msgid "Not part of group."
msgstr "グループã®ä¸€éƒ¨ã§ã¯ã‚ã‚Šã¾ã›ã‚“。"
-#: classes/Group_member.php:60
+#. TRANS: Exception thrown when trying to leave a group fails.
+#: classes/Group_member.php:63
msgid "Group leave failed."
msgstr "グループ脱退ã«å¤±æ•—ã—ã¾ã—ãŸã€‚"
-#: classes/Local_group.php:41
+#. TRANS: Server exception thrown when updating a local group fails.
+#: classes/Local_group.php:42
#, fuzzy
msgid "Could not update local group."
msgstr "グループを更新ã§ãã¾ã›ã‚“。"
-#: classes/Login_token.php:76
+#. TRANS: Exception thrown when trying creating a login token failed.
+#. TRANS: %s is the user nickname for which token creation failed.
+#: classes/Login_token.php:78
#, php-format
msgid "Could not create login token for %s"
msgstr "%s 用ã®ãƒ­ã‚°ã‚¤ãƒ³ãƒ»ãƒˆãƒ¼ã‚¯ãƒ³ã‚’作æˆã§ãã¾ã›ã‚“ã§ã—ãŸ"
-#: classes/Message.php:45
+#. TRANS: Exception thrown when database name or Data Source Name could not be found.
+#: classes/Memcached_DataObject.php:533
+msgid "No database name or DSN found anywhere."
+msgstr ""
+
+#. TRANS: Client exception thrown when a user tries to send a direct message while being banned from sending them.
+#: classes/Message.php:46
msgid "You are banned from sending direct messages."
msgstr "ã‚ãªãŸã¯ãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’é€ã‚‹ã®ãŒç¦æ­¢ã•ã‚Œã¦ã„ã¾ã™ã€‚"
-#: classes/Message.php:61
+#. TRANS: Message given when a message could not be stored on the server.
+#: classes/Message.php:63
msgid "Could not insert message."
msgstr "メッセージを追加ã§ãã¾ã›ã‚“。"
-#: classes/Message.php:71
+#. TRANS: Message given when a message could not be updated on the server.
+#: classes/Message.php:74
msgid "Could not update message with new URI."
msgstr "æ–°ã—ã„URIã§ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’アップデートã§ãã¾ã›ã‚“ã§ã—ãŸã€‚"
+#. TRANS: Server exception thrown when a user profile for a notice cannot be found.
+#. TRANS: %1$d is a profile ID (number), %2$d is a notice ID (number).
+#: classes/Notice.php:98
+#, php-format
+msgid "No such profile (%1$d) for notice (%2$d)."
+msgstr ""
+
#. TRANS: Server exception. %s are the error details.
-#: classes/Notice.php:182
+#: classes/Notice.php:190
#, fuzzy, php-format
msgid "Database error inserting hashtag: %s"
msgstr "ãƒãƒƒã‚·ãƒ¥ã‚¿ã‚°è¿½åŠ  DB エラー: %s"
-#: classes/Notice.php:251
+#. TRANS: Client exception thrown if a notice contains too many characters.
+#: classes/Notice.php:260
msgid "Problem saving notice. Too long."
msgstr "ã¤ã¶ã‚„ãã‚’ä¿å­˜ã™ã‚‹éš›ã«å•é¡ŒãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚é•·ã™ãŽã§ã™ã€‚"
-#: classes/Notice.php:255
+#. TRANS: Client exception thrown when trying to save a notice for an unknown user.
+#: classes/Notice.php:265
msgid "Problem saving notice. Unknown user."
msgstr "ã¤ã¶ã‚„ãã‚’ä¿å­˜ã™ã‚‹éš›ã«å•é¡ŒãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚ä¸æ˜Žãªãƒ¦ãƒ¼ã‚¶ã§ã™ã€‚"
-#: classes/Notice.php:260
+#. TRANS: Client exception thrown when a user tries to post too many notices in a given time frame.
+#: classes/Notice.php:271
msgid ""
"Too many notices too fast; take a breather and post again in a few minutes."
msgstr ""
"多ã™ãŽã‚‹ã¤ã¶ã‚„ããŒé€Ÿã™ãŽã¾ã™; 数分間ã®ä¼‘ã¿ã‚’å–ã£ã¦ã‹ã‚‰å†æŠ•ç¨¿ã—ã¦ãã ã•ã„。"
-#: classes/Notice.php:266
+#. TRANS: Client exception thrown when a user tries to post too many duplicate notices in a given time frame.
+#: classes/Notice.php:278
msgid ""
"Too many duplicate messages too quickly; take a breather and post again in a "
"few minutes."
@@ -4916,73 +4978,123 @@ msgstr ""
"多ã™ãŽã‚‹é‡è¤‡ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ãŒé€Ÿã™ãŽã¾ã™; 数分間休ã¿ã‚’å–ã£ã¦ã‹ã‚‰å†åº¦æŠ•ç¨¿ã—ã¦ãã ã•"
"ã„。"
-#: classes/Notice.php:272
+#. TRANS: Client exception thrown when a user tries to post while being banned.
+#: classes/Notice.php:286
msgid "You are banned from posting notices on this site."
msgstr "ã‚ãªãŸã¯ã“ã®ã‚µã‚¤ãƒˆã§ã¤ã¶ã‚„ãを投稿ã™ã‚‹ã®ãŒç¦æ­¢ã•ã‚Œã¦ã„ã¾ã™ã€‚"
-#: classes/Notice.php:338 classes/Notice.php:364
+#. TRANS: Server exception thrown when a notice cannot be saved.
+#. TRANS: Server exception thrown when a notice cannot be updated.
+#: classes/Notice.php:353 classes/Notice.php:380
msgid "Problem saving notice."
msgstr "ã¤ã¶ã‚„ãã‚’ä¿å­˜ã™ã‚‹éš›ã«å•é¡ŒãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚"
-#: classes/Notice.php:973
+#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups().
+#: classes/Notice.php:892
+msgid "Bad type provided to saveKnownGroups"
+msgstr ""
+
+#. TRANS: Server exception thrown when an update for a group inbox fails.
+#: classes/Notice.php:991
msgid "Problem saving group inbox."
msgstr "グループå—信箱をä¿å­˜ã™ã‚‹éš›ã«å•é¡ŒãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚"
#. TRANS: Message used to repeat a notice. RT is the abbreviation of 'retweet'.
#. TRANS: %1$s is the repeated user's name, %2$s is the repeated notice.
-#: classes/Notice.php:1564
+#: classes/Notice.php:1614
#, php-format
msgid "RT @%1$s %2$s"
msgstr ""
-#: classes/Subscription.php:74 lib/oauthstore.php:465
+#. TRANS: Exception thrown when trying to revoke an existing role for a user that does not exist.
+#. TRANS: %1$s is the role name, %2$s is the user ID (number).
+#: classes/Profile.php:740
+#, php-format
+msgid "Cannot revoke role \"%1$s\" for user #%2$d; does not exist."
+msgstr ""
+
+#. TRANS: Exception thrown when trying to revoke a role for a user with a failing database query.
+#. TRANS: %1$s is the role name, %2$s is the user ID (number).
+#: classes/Profile.php:749
+#, php-format
+msgid "Cannot revoke role \"%1$s\" for user #%2$d; database error."
+msgstr ""
+
+#. TRANS: Exception thrown when a right for a non-existing user profile is checked.
+#: classes/Remote_profile.php:54
+#, fuzzy
+msgid "Missing profile."
+msgstr "ユーザã¯ãƒ—ロフィールをもã£ã¦ã„ã¾ã›ã‚“。"
+
+#. TRANS: Exception thrown when a tag cannot be saved.
+#: classes/Status_network.php:346
+#, fuzzy
+msgid "Unable to save tag."
+msgstr "ã‚ãªãŸã®ãƒ‡ã‚¶ã‚¤ãƒ³è¨­å®šã‚’ä¿å­˜ã§ãã¾ã›ã‚“。"
+
+#. TRANS: Exception thrown when trying to subscribe while being banned from subscribing.
+#: classes/Subscription.php:75 lib/oauthstore.php:465
msgid "You have been banned from subscribing."
msgstr "ã‚ãªãŸã¯ãƒ•ã‚©ãƒ­ãƒ¼ãŒç¦æ­¢ã•ã‚Œã¾ã—ãŸã€‚"
-#: classes/Subscription.php:78
+#. TRANS: Exception thrown when trying to subscribe while already subscribed.
+#: classes/Subscription.php:80
msgid "Already subscribed!"
msgstr "ã™ã§ã«ãƒ•ã‚©ãƒ­ãƒ¼ã—ã¦ã„ã¾ã™!"
-#: classes/Subscription.php:82
+#. TRANS: Exception thrown when trying to subscribe to a user who has blocked the subscribing user.
+#: classes/Subscription.php:85
msgid "User has blocked you."
msgstr "ユーザã¯ã‚ãªãŸã‚’ブロックã—ã¾ã—ãŸã€‚"
-#: classes/Subscription.php:167
+#. TRANS: Exception thrown when trying to unsibscribe without a subscription.
+#: classes/Subscription.php:171
msgid "Not subscribed!"
msgstr "フォローã—ã¦ã„ã¾ã›ã‚“ï¼"
-#: classes/Subscription.php:173
-msgid "Couldn't delete self-subscription."
+#. TRANS: Exception thrown when trying to unsubscribe a user from themselves.
+#: classes/Subscription.php:178
+#, fuzzy
+msgid "Could not delete self-subscription."
msgstr "自己フォローを削除ã§ãã¾ã›ã‚“。"
-#: classes/Subscription.php:200
+#. TRANS: Exception thrown when the OMB token for a subscription could not deleted on the server.
+#: classes/Subscription.php:206
#, fuzzy
-msgid "Couldn't delete subscription OMB token."
+msgid "Could not delete subscription OMB token."
msgstr "フォローを削除ã§ãã¾ã›ã‚“"
-#: classes/Subscription.php:211
-msgid "Couldn't delete subscription."
+#. TRANS: Exception thrown when a subscription could not be deleted on the server.
+#: classes/Subscription.php:218
+#, fuzzy
+msgid "Could not delete subscription."
msgstr "フォローを削除ã§ãã¾ã›ã‚“"
-#: classes/User.php:363
+#. TRANS: Notice given on user registration.
+#. TRANS: %1$s is the sitename, $2$s is the registering user's nickname.
+#: classes/User.php:365
#, php-format
msgid "Welcome to %1$s, @%2$s!"
msgstr "よã†ã“ã %1$sã€@%2$s!"
-#: classes/User_group.php:480
+#. TRANS: Server exception thrown when creating a group failed.
+#: classes/User_group.php:496
msgid "Could not create group."
msgstr "グループを作æˆã§ãã¾ã›ã‚“。"
-#: classes/User_group.php:489
+#. TRANS: Server exception thrown when updating a group URI failed.
+#: classes/User_group.php:506
#, fuzzy
msgid "Could not set group URI."
msgstr "グループメンãƒãƒ¼ã‚·ãƒƒãƒ—をセットã§ãã¾ã›ã‚“。"
-#: classes/User_group.php:510
+#. TRANS: Server exception thrown when setting group membership failed.
+#: classes/User_group.php:529
msgid "Could not set group membership."
msgstr "グループメンãƒãƒ¼ã‚·ãƒƒãƒ—をセットã§ãã¾ã›ã‚“。"
-#: classes/User_group.php:524
+#. TRANS: Server exception thrown when saving local group information failed.
+#: classes/User_group.php:544
#, fuzzy
msgid "Could not save local group info."
msgstr "フォローをä¿å­˜ã§ãã¾ã›ã‚“。"
@@ -6401,7 +6513,7 @@ msgstr ""
"ã«å¼•ã込むプライベートメッセージをé€ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚人々ã¯ã‚ãªãŸã ã‘ã¸ã®"
"メッセージをé€ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚"
-#: lib/mailbox.php:227 lib/noticelist.php:497
+#: lib/mailbox.php:227 lib/noticelist.php:505
msgid "from"
msgstr "from"
@@ -6462,24 +6574,24 @@ msgstr "ディスクã¸ã®ãƒ•ã‚¡ã‚¤ãƒ«æ›¸ãè¾¼ã¿ã«å¤±æ•—ã—ã¾ã—ãŸã€‚"
msgid "File upload stopped by extension."
msgstr "エクステンションã«ã‚ˆã£ã¦ãƒ•ã‚¡ã‚¤ãƒ«ã‚¢ãƒƒãƒ—ロードを中止ã—ã¾ã—ãŸã€‚"
-#: lib/mediafile.php:179 lib/mediafile.php:216
+#: lib/mediafile.php:179 lib/mediafile.php:217
msgid "File exceeds user's quota."
msgstr "ファイルã¯ãƒ¦ãƒ¼ã‚¶ã®å‰²å½“ã¦ã‚’超ãˆã¦ã„ã¾ã™ã€‚"
-#: lib/mediafile.php:196 lib/mediafile.php:233
+#: lib/mediafile.php:197 lib/mediafile.php:234
msgid "File could not be moved to destination directory."
msgstr "ファイルを目的ディレクトリã«å‹•ã‹ã™ã“ã¨ãŒã§ãã¾ã›ã‚“ã§ã—ãŸã€‚"
-#: lib/mediafile.php:201 lib/mediafile.php:237
+#: lib/mediafile.php:202 lib/mediafile.php:238
msgid "Could not determine file's MIME type."
msgstr "ファイルã®MIMEタイプを決定ã§ãã¾ã›ã‚“。"
-#: lib/mediafile.php:270
+#: lib/mediafile.php:318
#, php-format
msgid " Try using another %s format."
msgstr "別㮠%s フォーマットを試ã—ã¦ãã ã•ã„。"
-#: lib/mediafile.php:275
+#: lib/mediafile.php:323
#, php-format
msgid "%s is not a supported file type on this server."
msgstr "%s ã¯ã“ã®ã‚µãƒ¼ãƒã®ã‚µãƒãƒ¼ãƒˆã—ã¦ã„るファイルタイプã§ã¯ã‚ã‚Šã¾ã›ã‚“。"
@@ -6536,55 +6648,55 @@ msgstr ""
"度試ã¿ã¦ãã ã•ã„"
#. TRANS: Used in coordinates as abbreviation of north
-#: lib/noticelist.php:430
+#: lib/noticelist.php:436
#, fuzzy
msgid "N"
msgstr "北"
#. TRANS: Used in coordinates as abbreviation of south
-#: lib/noticelist.php:432
+#: lib/noticelist.php:438
#, fuzzy
msgid "S"
msgstr "å—"
#. TRANS: Used in coordinates as abbreviation of east
-#: lib/noticelist.php:434
+#: lib/noticelist.php:440
#, fuzzy
msgid "E"
msgstr "æ±"
#. TRANS: Used in coordinates as abbreviation of west
-#: lib/noticelist.php:436
+#: lib/noticelist.php:442
#, fuzzy
msgid "W"
msgstr "西"
-#: lib/noticelist.php:438
+#: lib/noticelist.php:444
#, php-format
msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
msgstr ""
-#: lib/noticelist.php:447
+#: lib/noticelist.php:453
msgid "at"
msgstr "at"
-#: lib/noticelist.php:559
+#: lib/noticelist.php:567
msgid "in context"
msgstr ""
-#: lib/noticelist.php:594
+#: lib/noticelist.php:602
msgid "Repeated by"
msgstr ""
-#: lib/noticelist.php:621
+#: lib/noticelist.php:629
msgid "Reply to this notice"
msgstr "ã“ã®ã¤ã¶ã‚„ãã¸è¿”ä¿¡"
-#: lib/noticelist.php:622
+#: lib/noticelist.php:630
msgid "Reply"
msgstr "返信"
-#: lib/noticelist.php:666
+#: lib/noticelist.php:674
msgid "Notice repeated"
msgstr "ã¤ã¶ã‚„ãã‚’ç¹°ã‚Šè¿”ã—ã¾ã—ãŸ"
@@ -6842,9 +6954,8 @@ msgid "This server cannot handle theme uploads without ZIP support."
msgstr ""
#: lib/themeuploader.php:58 lib/themeuploader.php:61
-#, fuzzy
-msgid "Theme upload missing or failed."
-msgstr "ファイルã®ã‚¢ãƒƒãƒ—ロードã§ã‚·ã‚¹ãƒ†ãƒ ã‚¨ãƒ©ãƒ¼"
+msgid "The theme file is missing or the upload failed."
+msgstr ""
#: lib/themeuploader.php:91 lib/themeuploader.php:102
#: lib/themeuploader.php:253 lib/themeuploader.php:257
diff --git a/locale/ko/LC_MESSAGES/statusnet.po b/locale/ko/LC_MESSAGES/statusnet.po
index ce2db363a..c40002fc5 100644
--- a/locale/ko/LC_MESSAGES/statusnet.po
+++ b/locale/ko/LC_MESSAGES/statusnet.po
@@ -1,5 +1,6 @@
# Translation of StatusNet to Korean
#
+# Author@translatewiki.net: Brion
# Author@translatewiki.net: Twkang
# --
# This file is distributed under the same license as the StatusNet package.
@@ -8,12 +9,12 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-06-16 22:18+0000\n"
-"PO-Revision-Date: 2010-06-21 18:04:21+0000\n"
+"POT-Creation-Date: 2010-08-03 13:21+0000\n"
+"PO-Revision-Date: 2010-08-03 13:22:13+0000\n"
"Language-Team: Korean\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.17alpha (r68367); Translate extension (2010-06-12)\n"
+"X-Generator: MediaWiki 1.17alpha (r70381); Translate extension (2010-07-21)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: ko\n"
"X-Message-Group: out-statusnet\n"
@@ -97,7 +98,7 @@ msgstr "해당하는 페ì´ì§€ ì—†ìŒ"
#: actions/apidirectmessagenew.php:74 actions/apigroupcreate.php:113
#: actions/apigroupismember.php:91 actions/apigroupjoin.php:100
#: actions/apigroupleave.php:100 actions/apigrouplist.php:73
-#: actions/apistatusesupdate.php:228 actions/apisubscriptions.php:87
+#: actions/apistatusesupdate.php:229 actions/apisubscriptions.php:87
#: actions/apitimelinefavorites.php:72 actions/apitimelinefriends.php:174
#: actions/apitimelinehome.php:80 actions/apitimelinementions.php:80
#: actions/apitimelineuser.php:82 actions/avatarbynickname.php:75
@@ -166,15 +167,15 @@ msgstr ""
#: actions/all.php:146
#, 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)."
+"You can try to [nudge %1$s](../%2$s) from their profile or [post something "
+"to them](%%%%action.newnotice%%%%?status_textarea=%3$s)."
msgstr ""
#: actions/all.php:149 actions/replies.php:210 actions/showstream.php:211
#, php-format
msgid ""
"Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
-"post a notice to his or her attention."
+"post a notice to them."
msgstr ""
#. TRANS: H1 text
@@ -207,7 +208,7 @@ msgstr "%2$sì— ìžˆëŠ” %1$s ë° ì¹œêµ¬ë“¤ì˜ ì—…ë°ì´íŠ¸!"
#: actions/apistatusesshow.php:109 actions/apistatusnetconfig.php:141
#: actions/apistatusnetversion.php:93 actions/apisubscriptions.php:111
#: actions/apitimelinefavorites.php:174 actions/apitimelinefriends.php:271
-#: actions/apitimelinegroup.php:152 actions/apitimelinehome.php:175
+#: actions/apitimelinegroup.php:154 actions/apitimelinehome.php:175
#: actions/apitimelinementions.php:174 actions/apitimelinepublic.php:241
#: actions/apitimelineretweetedtome.php:121
#: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161
@@ -255,7 +256,7 @@ msgstr "í”„ë¡œí•„ì„ ì €ìž¥ í•  수 없습니다."
#: actions/apiaccountupdateprofilebackgroundimage.php:108
#: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80
-#: actions/apistatusesupdate.php:211 actions/avatarsettings.php:257
+#: actions/apistatusesupdate.php:212 actions/avatarsettings.php:257
#: actions/designadminpanel.php:123 actions/editapplication.php:118
#: actions/newapplication.php:101 actions/newnotice.php:94
#: lib/designsettings.php:283
@@ -353,7 +354,8 @@ msgid "Could not delete favorite."
msgstr "관심소ì‹ì„ 삭제할 수 없습니다."
#: actions/apifriendshipscreate.php:109
-msgid "Could not follow user: User not found."
+#, fuzzy
+msgid "Could not follow user: profile not found."
msgstr "팔로우할 수 없습니다: ì´ìš©ìž ì—†ìŒ."
#: actions/apifriendshipscreate.php:118
@@ -369,8 +371,9 @@ msgstr "언팔로우할 수 없습니다: ì´ìš©ìž ì—†ìŒ."
msgid "You cannot unfollow yourself."
msgstr "ìžê¸° ìžì‹ ì„ 언팔로우할 수 없습니다."
-#: actions/apifriendshipsexists.php:94
-msgid "Two user ids or screen_names must be supplied."
+#: actions/apifriendshipsexists.php:91
+#, fuzzy
+msgid "Two valid IDs or screen_names must be supplied."
msgstr "ë‘ ê°œì˜ ì‚¬ìš©ìž ID나 ëŒ€í™”ëª…ì„ ìž…ë ¥í•´ì•¼ 합니다."
#: actions/apifriendshipsshow.php:134
@@ -501,6 +504,11 @@ msgstr "%s 그룹"
msgid "groups on %s"
msgstr "%s ìƒì˜ 그룹들"
+#: actions/apimediaupload.php:99
+#, fuzzy
+msgid "Upload failed."
+msgstr "올리기"
+
#: actions/apioauthauthorize.php:101
msgid "No oauth_token parameter provided."
msgstr ""
@@ -644,22 +652,26 @@ msgstr "ì‚­ì œëœ ì†Œì‹ìž…니다."
msgid "No status with that ID found."
msgstr "ë°œê²¬ëœ IDì˜ ìƒíƒœê°€ 없습니다."
-#: actions/apistatusesupdate.php:241 actions/newnotice.php:155
+#: actions/apistatusesupdate.php:221
+msgid "Client must provide a 'status' parameter with a value."
+msgstr ""
+
+#: actions/apistatusesupdate.php:242 actions/newnotice.php:155
#: lib/mailhandler.php:60
#, php-format
msgid "That's too long. Max notice size is %d chars."
msgstr "너무 ê¹ë‹ˆë‹¤. í†µì§€ì˜ ìµœëŒ€ 길ì´ëŠ” %d ê¸€ìž ìž…ë‹ˆë‹¤."
-#: actions/apistatusesupdate.php:282 actions/apiusershow.php:96
+#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96
msgid "Not found."
msgstr "ì°¾ì„ ìˆ˜ê°€ 없습니다."
-#: actions/apistatusesupdate.php:305 actions/newnotice.php:178
+#: actions/apistatusesupdate.php:306 actions/newnotice.php:178
#, php-format
msgid "Max notice size is %d chars, including attachment URL."
msgstr "소ì‹ì˜ 최대 길ì´ëŠ” 첨부 URLì„ í¬í•¨í•˜ì—¬ %d 글ìžìž…니다."
-#: actions/apisubscriptions.php:231 actions/apisubscriptions.php:261
+#: actions/apisubscriptions.php:232 actions/apisubscriptions.php:262
msgid "Unsupported format."
msgstr "지ì›í•˜ì§€ 않는 형ì‹ìž…니다."
@@ -713,6 +725,10 @@ msgstr "%s íƒœê·¸ëœ í†µì§€"
msgid "Updates tagged with %1$s on %2$s!"
msgstr "%2$sì— ìžˆëŠ” %1$sì˜ ì—…ë°ì´íŠ¸!"
+#: actions/apitrends.php:87
+msgid "API method under construction."
+msgstr "API 메서드를 구성중 입니다."
+
#: actions/attachment.php:73
msgid "No such attachment."
msgstr "해당하는 첨부파ì¼ì´ 없습니다."
@@ -766,7 +782,7 @@ msgid "Preview"
msgstr "미리보기"
#: actions/avatarsettings.php:149 actions/showapplication.php:252
-#: lib/deleteuserform.php:66 lib/noticelist.php:648
+#: lib/deleteuserform.php:66 lib/noticelist.php:656
msgid "Delete"
msgstr "삭제"
@@ -1054,7 +1070,7 @@ msgid "Do not delete this notice"
msgstr "ì´ í†µì§€ë¥¼ 지울 수 없습니다."
#. TRANS: Submit button title for 'Yes' when deleting a notice.
-#: actions/deletenotice.php:158 lib/noticelist.php:648
+#: actions/deletenotice.php:158 lib/noticelist.php:656
msgid "Delete this notice"
msgstr "ì´ ê²Œì‹œê¸€ 삭제하기"
@@ -1344,7 +1360,8 @@ msgstr "사용할 수 없는 별명 : \"%s\""
msgid "Could not update group."
msgstr "ê·¸ë£¹ì„ ì—…ë°ì´íŠ¸ í•  수 없습니다."
-#: actions/editgroup.php:264 classes/User_group.php:496
+#. TRANS: Server exception thrown when creating group aliases failed.
+#: actions/editgroup.php:264 classes/User_group.php:514
#, fuzzy
msgid "Could not create aliases."
msgstr "좋아하는 ê²Œì‹œê¸€ì„ ìƒì„±í•  수 없습니다."
@@ -2508,8 +2525,9 @@ msgid "Updates matching search term \"%1$s\" on %2$s!"
msgstr "\"%s\" ì— ì¼ì¹˜í•˜ëŠ” 모든 ì—…ë°ì´íŠ¸"
#: actions/nudge.php:85
+#, fuzzy
msgid ""
-"This user doesn't allow nudges or hasn't confirmed or set his email yet."
+"This user doesn't allow nudges or hasn't confirmed or set their email yet."
msgstr ""
"ì´ ì‚¬ìš©ìžëŠ” nudge를 허용하지 않았고, ì•„ì§ ê·¸ì˜ ì´ë©”ì¼ì„ ì¸ì¦í•˜ì§€ 않았습니다."
@@ -2589,8 +2607,8 @@ msgid "Only %s URLs over plain HTTP please."
msgstr ""
#. TRANS: Client error on an API request with an unsupported data format.
-#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1179
-#: lib/apiaction.php:1208 lib/apiaction.php:1325
+#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1204
+#: lib/apiaction.php:1232 lib/apiaction.php:1355
msgid "Not a supported data format."
msgstr "지ì›í•˜ëŠ” 형ì‹ì˜ ë°ì´í„°ê°€ 아닙니다."
@@ -3506,7 +3524,7 @@ msgstr "ìžì‹ ì˜ ê¸€ì€ ìž¬ì „ì†¡í•  수 없습니다."
msgid "You already repeated that notice."
msgstr "ë‹¹ì‹ ì€ ì´ë¯¸ ì´ ì‚¬ìš©ìžë¥¼ 차단하고 있습니다."
-#: actions/repeat.php:114 lib/noticelist.php:667
+#: actions/repeat.php:114 lib/noticelist.php:675
msgid "Repeated"
msgstr "재전송ë¨"
@@ -3541,11 +3559,11 @@ msgid "Replies feed for %s (Atom)"
msgstr "%sì˜ í†µì§€ 피드"
#: actions/replies.php:199
-#, php-format
+#, fuzzy, php-format
msgid ""
"This is the timeline showing replies to %1$s but %2$s hasn't received a "
-"notice to his attention yet."
-msgstr ""
+"notice to them yet."
+msgstr "%s ë° ì¹œêµ¬ë“¤ì˜ íƒ€ìž„ë¼ì¸ì´ì§€ë§Œ, ì•„ì§ ì•„ë¬´ë„ ê¸€ì„ ìž‘ì„±í•˜ì§€ 않았습니다."
#: actions/replies.php:204
#, php-format
@@ -3557,8 +3575,8 @@ msgstr ""
#: actions/replies.php:206
#, php-format
msgid ""
-"You can try to [nudge %1$s](../%2$s) or [post something to his or her "
-"attention](%%%%action.newnotice%%%%?status_textarea=%3$s)."
+"You can try to [nudge %1$s](../%2$s) or [post something to them](%%%%action."
+"newnotice%%%%?status_textarea=%3$s)."
msgstr ""
#: actions/repliesrss.php:72
@@ -3656,7 +3674,7 @@ msgstr "페ì´ì§€ìˆ˜"
msgid "Description"
msgstr "설명"
-#: actions/showapplication.php:192 actions/showgroup.php:444
+#: actions/showapplication.php:192 actions/showgroup.php:436
#: lib/profileaction.php:187
msgid "Statistics"
msgstr "통계"
@@ -3742,16 +3760,16 @@ msgstr ""
#: actions/showfavorites.php:208
#, php-format
msgid ""
-"%s hasn't added any notices to his favorites yet. Post something interesting "
-"they would add to their favorites :)"
+"%s hasn't added any favorite notices yet. Post something interesting they "
+"would add to their favorites :)"
msgstr ""
#: actions/showfavorites.php:212
#, php-format
msgid ""
-"%s hasn't added any notices to his favorites yet. Why not [register an "
-"account](%%%%action.register%%%%) and then post something interesting they "
-"would add to their favorites :)"
+"%s hasn't added any favorite notices yet. Why not [register an account](%%%%"
+"action.register%%%%) and then post something interesting they would add to "
+"their favorites :)"
msgstr ""
#: actions/showfavorites.php:243
@@ -3810,7 +3828,7 @@ msgstr "%s ê·¸ë£¹ì„ ìœ„í•œ 공지피드 (Atom)"
msgid "FOAF for %s group"
msgstr "%sì˜ ë³´ë‚¸ìª½ì§€í•¨"
-#: actions/showgroup.php:393 actions/showgroup.php:453 lib/groupnav.php:91
+#: actions/showgroup.php:393 actions/showgroup.php:445 lib/groupnav.php:91
msgid "Members"
msgstr "회ì›"
@@ -3824,12 +3842,12 @@ msgstr "(없습니다.)"
msgid "All members"
msgstr "모든 회ì›"
-#: actions/showgroup.php:447
+#: actions/showgroup.php:439
#, fuzzy
msgid "Created"
msgstr "ìƒì„±"
-#: actions/showgroup.php:463
+#: actions/showgroup.php:455
#, php-format
msgid ""
"**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3839,7 +3857,7 @@ msgid ""
"of this group and many more! ([Read more](%%%%doc.help%%%%))"
msgstr ""
-#: actions/showgroup.php:469
+#: actions/showgroup.php:461
#, fuzzy, php-format
msgid ""
"**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3850,7 +3868,7 @@ msgstr ""
"**%s** 는 %%%%site.name%%%% [마ì´í¬ë¡œë¸”로깅)(http://en.wikipedia.org/wiki/"
"Micro-blogging)ì˜ ì‚¬ìš©ìž ê·¸ë£¹ìž…ë‹ˆë‹¤. "
-#: actions/showgroup.php:497
+#: actions/showgroup.php:489
#, fuzzy
msgid "Admins"
msgstr "관리ìž"
@@ -3929,8 +3947,8 @@ msgstr ""
#: 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)."
+"You can try to nudge %1$s or [post something to them](%%%%action.newnotice%%%"
+"%?status_textarea=%2$s)."
msgstr ""
#: actions/showstream.php:243
@@ -4328,7 +4346,8 @@ msgstr "아바타 설정"
msgid "You are not subscribed to that profile."
msgstr "ë‹¹ì‹ ì€ ì´ í”„ë¡œí•„ì— êµ¬ë…ë˜ì§€ 않고있습니다."
-#: actions/subedit.php:83 classes/Subscription.php:132
+#. TRANS: Exception thrown when a subscription could not be stored on the server.
+#: actions/subedit.php:83 classes/Subscription.php:136
msgid "Could not save subscription."
msgstr "구ë…ì„ ì €ìž¥í•  수 없습니다."
@@ -4498,10 +4517,6 @@ msgstr "ë‹¹ì‹ ì˜ êµ¬ë…ìžë‚˜ 구ë…하는 ì‚¬ëžŒì— íƒœê¹…ì„ ìœ„í•´ ì´ ì–‘ì‹
msgid "No such tag."
msgstr "그러한 태그가 없습니다."
-#: actions/twitapitrends.php:85
-msgid "API method under construction."
-msgstr "API 메서드를 구성중 입니다."
-
#: actions/unblock.php:59
#, fuzzy
msgid "You haven't blocked that user."
@@ -4810,83 +4825,131 @@ msgstr "버젼"
msgid "Author(s)"
msgstr ""
-#: classes/File.php:185
+#. TRANS: Server exception thrown when a URL cannot be processed.
+#: classes/File.php:143
+#, php-format
+msgid "Cannot process URL '%s'"
+msgstr ""
+
+#. TRANS: Server exception thrown when... Robin thinks something is impossible!
+#: classes/File.php:175
+msgid "Robin thinks something is impossible."
+msgstr ""
+
+#. TRANS: Message given if an upload is larger than the configured maximum.
+#. TRANS: %1$d is the byte limit for uploads, %2$d is the byte count for the uploaded file.
+#: classes/File.php:190
#, php-format
msgid ""
-"No file may be larger than %d bytes and the file you sent was %d bytes. Try "
-"to upload a smaller version."
+"No file may be larger than %1$d bytes and the file you sent was %2$d bytes. "
+"Try to upload a smaller version."
msgstr ""
-#: classes/File.php:195
+#. TRANS: Message given if an upload would exceed user quota.
+#. TRANS: %d (number) is the user quota in bytes.
+#: classes/File.php:202
#, php-format
msgid "A file this large would exceed your user quota of %d bytes."
msgstr ""
-#: classes/File.php:202
+#. TRANS: Message given id an upload would exceed a user's monthly quota.
+#. TRANS: $d (number) is the monthly user quota in bytes.
+#: classes/File.php:211
#, php-format
msgid "A file this large would exceed your monthly quota of %d bytes."
msgstr ""
-#: classes/Group_member.php:41
+#. TRANS: Client exception thrown if a file upload does not have a valid name.
+#: classes/File.php:248 classes/File.php:263
+#, fuzzy
+msgid "Invalid filename."
+msgstr "옳지 ì•Šì€ í¬ê¸°"
+
+#. TRANS: Exception thrown when joining a group fails.
+#: classes/Group_member.php:42
msgid "Group join failed."
msgstr "ê·¸ë£¹ì— ê°€ìž…í•˜ì§€ 못했습니다."
-#: classes/Group_member.php:53
+#. TRANS: Exception thrown when trying to leave a group the user is not a member of.
+#: classes/Group_member.php:55
#, fuzzy
msgid "Not part of group."
msgstr "ê·¸ë£¹ì„ ì—…ë°ì´íŠ¸ í•  수 없습니다."
-#: classes/Group_member.php:60
+#. TRANS: Exception thrown when trying to leave a group fails.
+#: classes/Group_member.php:63
#, fuzzy
msgid "Group leave failed."
msgstr "그룹 프로필"
-#: classes/Local_group.php:41
+#. TRANS: Server exception thrown when updating a local group fails.
+#: classes/Local_group.php:42
#, fuzzy
msgid "Could not update local group."
msgstr "ê·¸ë£¹ì„ ì—…ë°ì´íŠ¸ í•  수 없습니다."
-#: classes/Login_token.php:76
+#. TRANS: Exception thrown when trying creating a login token failed.
+#. TRANS: %s is the user nickname for which token creation failed.
+#: classes/Login_token.php:78
#, php-format
msgid "Could not create login token for %s"
msgstr "%s ì— ëŒ€í•œ ë¡œê·¸ì¸ í† í°ì„ 만들 수 없습니다."
-#: classes/Message.php:45
+#. TRANS: Exception thrown when database name or Data Source Name could not be found.
+#: classes/Memcached_DataObject.php:533
+msgid "No database name or DSN found anywhere."
+msgstr ""
+
+#. TRANS: Client exception thrown when a user tries to send a direct message while being banned from sending them.
+#: classes/Message.php:46
#, fuzzy
msgid "You are banned from sending direct messages."
msgstr "ì§ì ‘ 메시지 보내기 오류."
-#: classes/Message.php:61
+#. TRANS: Message given when a message could not be stored on the server.
+#: classes/Message.php:63
msgid "Could not insert message."
msgstr "메시지를 삽입할 수 없습니다."
-#: classes/Message.php:71
+#. TRANS: Message given when a message could not be updated on the server.
+#: classes/Message.php:74
msgid "Could not update message with new URI."
msgstr "새 URI와 함께 메시지를 ì—…ë°ì´íŠ¸í•  수 없습니다."
+#. TRANS: Server exception thrown when a user profile for a notice cannot be found.
+#. TRANS: %1$d is a profile ID (number), %2$d is a notice ID (number).
+#: classes/Notice.php:98
+#, php-format
+msgid "No such profile (%1$d) for notice (%2$d)."
+msgstr ""
+
#. TRANS: Server exception. %s are the error details.
-#: classes/Notice.php:182
+#: classes/Notice.php:190
#, fuzzy, php-format
msgid "Database error inserting hashtag: %s"
msgstr "해쉬테그를 추가 í•  ë•Œì— ë°ì´íƒ€ë² ì´ìŠ¤ ì—러 : %s"
-#: classes/Notice.php:251
+#. TRANS: Client exception thrown if a notice contains too many characters.
+#: classes/Notice.php:260
#, fuzzy
msgid "Problem saving notice. Too long."
msgstr "통지를 ì €ìž¥í•˜ëŠ”ë° ë¬¸ì œê°€ ë°œìƒí–ˆìŠµë‹ˆë‹¤."
-#: classes/Notice.php:255
+#. TRANS: Client exception thrown when trying to save a notice for an unknown user.
+#: classes/Notice.php:265
msgid "Problem saving notice. Unknown user."
msgstr "게시글 저장문제. ì•Œë ¤ì§€ì§€ì•Šì€ íšŒì›"
-#: classes/Notice.php:260
+#. TRANS: Client exception thrown when a user tries to post too many notices in a given time frame.
+#: classes/Notice.php:271
msgid ""
"Too many notices too fast; take a breather and post again in a few minutes."
msgstr ""
"너무 ë§Žì€ ê²Œì‹œê¸€ì´ ë„ˆë¬´ 빠르게 올ë¼ì˜µë‹ˆë‹¤. 한숨고르고 ëª‡ë¶„í›„ì— ë‹¤ì‹œ í¬ìŠ¤íŠ¸ë¥¼ "
"해보세요."
-#: classes/Notice.php:266
+#. TRANS: Client exception thrown when a user tries to post too many duplicate notices in a given time frame.
+#: classes/Notice.php:278
#, fuzzy
msgid ""
"Too many duplicate messages too quickly; take a breather and post again in a "
@@ -4895,77 +4958,126 @@ msgstr ""
"너무 ë§Žì€ ê²Œì‹œê¸€ì´ ë„ˆë¬´ 빠르게 올ë¼ì˜µë‹ˆë‹¤. 한숨고르고 ëª‡ë¶„í›„ì— ë‹¤ì‹œ í¬ìŠ¤íŠ¸ë¥¼ "
"해보세요."
-#: classes/Notice.php:272
+#. TRANS: Client exception thrown when a user tries to post while being banned.
+#: classes/Notice.php:286
msgid "You are banned from posting notices on this site."
msgstr "ì´ ì‚¬ì´íŠ¸ì— 게시글 í¬ìŠ¤íŒ…으로부터 ë‹¹ì‹ ì€ ê¸ˆì§€ë˜ì—ˆìŠµë‹ˆë‹¤."
-#: classes/Notice.php:338 classes/Notice.php:364
+#. TRANS: Server exception thrown when a notice cannot be saved.
+#. TRANS: Server exception thrown when a notice cannot be updated.
+#: classes/Notice.php:353 classes/Notice.php:380
msgid "Problem saving notice."
msgstr "통지를 ì €ìž¥í•˜ëŠ”ë° ë¬¸ì œê°€ ë°œìƒí–ˆìŠµë‹ˆë‹¤."
-#: classes/Notice.php:973
+#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups().
+#: classes/Notice.php:892
+msgid "Bad type provided to saveKnownGroups"
+msgstr ""
+
+#. TRANS: Server exception thrown when an update for a group inbox fails.
+#: classes/Notice.php:991
#, fuzzy
msgid "Problem saving group inbox."
msgstr "통지를 ì €ìž¥í•˜ëŠ”ë° ë¬¸ì œê°€ ë°œìƒí–ˆìŠµë‹ˆë‹¤."
#. TRANS: Message used to repeat a notice. RT is the abbreviation of 'retweet'.
#. TRANS: %1$s is the repeated user's name, %2$s is the repeated notice.
-#: classes/Notice.php:1564
+#: classes/Notice.php:1614
#, fuzzy, php-format
msgid "RT @%1$s %2$s"
msgstr "%1$s (%2$s)"
-#: classes/Subscription.php:74 lib/oauthstore.php:465
+#. TRANS: Exception thrown when trying to revoke an existing role for a user that does not exist.
+#. TRANS: %1$s is the role name, %2$s is the user ID (number).
+#: classes/Profile.php:740
+#, php-format
+msgid "Cannot revoke role \"%1$s\" for user #%2$d; does not exist."
+msgstr ""
+
+#. TRANS: Exception thrown when trying to revoke a role for a user with a failing database query.
+#. TRANS: %1$s is the role name, %2$s is the user ID (number).
+#: classes/Profile.php:749
+#, php-format
+msgid "Cannot revoke role \"%1$s\" for user #%2$d; database error."
+msgstr ""
+
+#. TRANS: Exception thrown when a right for a non-existing user profile is checked.
+#: classes/Remote_profile.php:54
+#, fuzzy
+msgid "Missing profile."
+msgstr "ì´ìš©ìžê°€ í”„ë¡œí•„ì„ ê°€ì§€ê³  있지 않습니다."
+
+#. TRANS: Exception thrown when a tag cannot be saved.
+#: classes/Status_network.php:346
+#, fuzzy
+msgid "Unable to save tag."
+msgstr "트위터 í™˜ê²½ì„¤ì •ì„ ì €ìž¥í•  수 없습니다."
+
+#. TRANS: Exception thrown when trying to subscribe while being banned from subscribing.
+#: classes/Subscription.php:75 lib/oauthstore.php:465
#, fuzzy
msgid "You have been banned from subscribing."
msgstr "ì´ íšŒì›ì€ 구ë…으로부터 ë‹¹ì‹ ì„ ì°¨ë‹¨í•´ì™”ë‹¤."
-#: classes/Subscription.php:78
+#. TRANS: Exception thrown when trying to subscribe while already subscribed.
+#: classes/Subscription.php:80
msgid "Already subscribed!"
msgstr ""
-#: classes/Subscription.php:82
+#. TRANS: Exception thrown when trying to subscribe to a user who has blocked the subscribing user.
+#: classes/Subscription.php:85
msgid "User has blocked you."
msgstr "회ì›ì´ ë‹¹ì‹ ì„ ì°¨ë‹¨í•´ì™”ìŠµë‹ˆë‹¤."
-#: classes/Subscription.php:167
+#. TRANS: Exception thrown when trying to unsibscribe without a subscription.
+#: classes/Subscription.php:171
#, fuzzy
msgid "Not subscribed!"
msgstr "구ë…하고 있지 않습니다!"
-#: classes/Subscription.php:173
+#. TRANS: Exception thrown when trying to unsubscribe a user from themselves.
+#: classes/Subscription.php:178
#, fuzzy
-msgid "Couldn't delete self-subscription."
+msgid "Could not delete self-subscription."
msgstr "예약 구ë…ì„ ì‚­ì œ í•  수 없습니다."
-#: classes/Subscription.php:200
+#. TRANS: Exception thrown when the OMB token for a subscription could not deleted on the server.
+#: classes/Subscription.php:206
#, fuzzy
-msgid "Couldn't delete subscription OMB token."
+msgid "Could not delete subscription OMB token."
msgstr "예약 구ë…ì„ ì‚­ì œ í•  수 없습니다."
-#: classes/Subscription.php:211
-msgid "Couldn't delete subscription."
+#. TRANS: Exception thrown when a subscription could not be deleted on the server.
+#: classes/Subscription.php:218
+#, fuzzy
+msgid "Could not delete subscription."
msgstr "예약 구ë…ì„ ì‚­ì œ í•  수 없습니다."
-#: classes/User.php:363
+#. TRANS: Notice given on user registration.
+#. TRANS: %1$s is the sitename, $2$s is the registering user's nickname.
+#: classes/User.php:365
#, fuzzy, php-format
msgid "Welcome to %1$s, @%2$s!"
msgstr "%2$sì—ì„œ %1$s까지 메시지"
-#: classes/User_group.php:480
+#. TRANS: Server exception thrown when creating a group failed.
+#: classes/User_group.php:496
msgid "Could not create group."
msgstr "새 ê·¸ë£¹ì„ ë§Œë“¤ 수 없습니다."
-#: classes/User_group.php:489
+#. TRANS: Server exception thrown when updating a group URI failed.
+#: classes/User_group.php:506
#, fuzzy
msgid "Could not set group URI."
msgstr "그룹 ë§´ë²„ì‹­ì„ ì„¸íŒ…í•  수 없습니다."
-#: classes/User_group.php:510
+#. TRANS: Server exception thrown when setting group membership failed.
+#: classes/User_group.php:529
msgid "Could not set group membership."
msgstr "그룹 ë§´ë²„ì‹­ì„ ì„¸íŒ…í•  수 없습니다."
-#: classes/User_group.php:524
+#. TRANS: Server exception thrown when saving local group information failed.
+#: classes/User_group.php:544
#, fuzzy
msgid "Could not save local group info."
msgstr "구ë…ì„ ì €ìž¥í•  수 없습니다."
@@ -6190,7 +6302,7 @@ msgid ""
"Faithfully yours,\n"
"%4$s"
msgstr ""
-"í¬ìŠ¤íŒ… 주소는 %1$s입니다.새 메시지를 등ë¡í•˜ë ¤ë©´ %2$ 주소로 ì´ë©”ì¼ì„ ë³´ë‚´ì‹­ì‹œ"
+"í¬ìŠ¤íŒ… 주소는 %1$s입니다.새 메시지를 등ë¡í•˜ë ¤ë©´ %2$s 주소로 ì´ë©”ì¼ì„ ë³´ë‚´ì‹­ì‹œ"
"오.ì´ë©”ì¼ ì‚¬ìš©ë²•ì€ %3$s 페ì´ì§€ë¥¼ 보십시오.안녕히,%4$s"
#. TRANS: Subject line for SMS-by-email notification messages
@@ -6339,7 +6451,7 @@ msgid ""
"users in conversation. People can send you messages for your eyes only."
msgstr ""
-#: lib/mailbox.php:227 lib/noticelist.php:497
+#: lib/mailbox.php:227 lib/noticelist.php:505
#, fuzzy
msgid "from"
msgstr "다ìŒì—ì„œ:"
@@ -6395,25 +6507,25 @@ msgstr ""
msgid "File upload stopped by extension."
msgstr ""
-#: lib/mediafile.php:179 lib/mediafile.php:216
+#: lib/mediafile.php:179 lib/mediafile.php:217
msgid "File exceeds user's quota."
msgstr ""
-#: lib/mediafile.php:196 lib/mediafile.php:233
+#: lib/mediafile.php:197 lib/mediafile.php:234
msgid "File could not be moved to destination directory."
msgstr ""
-#: lib/mediafile.php:201 lib/mediafile.php:237
+#: lib/mediafile.php:202 lib/mediafile.php:238
#, fuzzy
msgid "Could not determine file's MIME type."
msgstr "공개 streamì„ ë¶ˆëŸ¬ì˜¬ 수 없습니다."
-#: lib/mediafile.php:270
+#: lib/mediafile.php:318
#, php-format
msgid " Try using another %s format."
msgstr ""
-#: lib/mediafile.php:275
+#: lib/mediafile.php:323
#, php-format
msgid "%s is not a supported file type on this server."
msgstr ""
@@ -6470,54 +6582,54 @@ msgid ""
msgstr ""
#. TRANS: Used in coordinates as abbreviation of north
-#: lib/noticelist.php:430
+#: lib/noticelist.php:436
#, fuzzy
msgid "N"
msgstr "아니오"
#. TRANS: Used in coordinates as abbreviation of south
-#: lib/noticelist.php:432
+#: lib/noticelist.php:438
msgid "S"
msgstr ""
#. TRANS: Used in coordinates as abbreviation of east
-#: lib/noticelist.php:434
+#: lib/noticelist.php:440
msgid "E"
msgstr ""
#. TRANS: Used in coordinates as abbreviation of west
-#: lib/noticelist.php:436
+#: lib/noticelist.php:442
msgid "W"
msgstr ""
-#: lib/noticelist.php:438
+#: lib/noticelist.php:444
#, php-format
msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
msgstr ""
-#: lib/noticelist.php:447
+#: lib/noticelist.php:453
msgid "at"
msgstr ""
-#: lib/noticelist.php:559
+#: lib/noticelist.php:567
#, fuzzy
msgid "in context"
msgstr "ë‚´ìš©ì´ ì—†ìŠµë‹ˆë‹¤!"
-#: lib/noticelist.php:594
+#: lib/noticelist.php:602
#, fuzzy
msgid "Repeated by"
msgstr "ìƒì„±"
-#: lib/noticelist.php:621
+#: lib/noticelist.php:629
msgid "Reply to this notice"
msgstr "ì´ ê²Œì‹œê¸€ì— ëŒ€í•´ 답장하기"
-#: lib/noticelist.php:622
+#: lib/noticelist.php:630
msgid "Reply"
msgstr "답장하기"
-#: lib/noticelist.php:666
+#: lib/noticelist.php:674
#, fuzzy
msgid "Notice repeated"
msgstr "ê²Œì‹œê¸€ì´ ë“±ë¡ë˜ì—ˆìŠµë‹ˆë‹¤."
@@ -6788,9 +6900,8 @@ msgid "This server cannot handle theme uploads without ZIP support."
msgstr ""
#: lib/themeuploader.php:58 lib/themeuploader.php:61
-#, fuzzy
-msgid "Theme upload missing or failed."
-msgstr "파ì¼ì„ ì˜¬ë¦¬ëŠ”ë° ì‹œìŠ¤í…œ 오류 ë°œìƒ"
+msgid "The theme file is missing or the upload failed."
+msgstr ""
#: lib/themeuploader.php:91 lib/themeuploader.php:102
#: lib/themeuploader.php:253 lib/themeuploader.php:257
diff --git a/locale/mk/LC_MESSAGES/statusnet.po b/locale/mk/LC_MESSAGES/statusnet.po
index 09836ffa5..383d7a91a 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-06-16 22:18+0000\n"
-"PO-Revision-Date: 2010-06-21 18:04:26+0000\n"
+"POT-Creation-Date: 2010-08-03 13:21+0000\n"
+"PO-Revision-Date: 2010-08-03 13:22:14+0000\n"
"Language-Team: Macedonian\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.17alpha (r68367); Translate extension (2010-06-12)\n"
+"X-Generator: MediaWiki 1.17alpha (r70381); Translate extension (2010-07-21)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: mk\n"
"X-Message-Group: out-statusnet\n"
@@ -100,7 +100,7 @@ msgstr "Ðема таква Ñтраница."
#: actions/apidirectmessagenew.php:74 actions/apigroupcreate.php:113
#: actions/apigroupismember.php:91 actions/apigroupjoin.php:100
#: actions/apigroupleave.php:100 actions/apigrouplist.php:73
-#: actions/apistatusesupdate.php:228 actions/apisubscriptions.php:87
+#: actions/apistatusesupdate.php:229 actions/apisubscriptions.php:87
#: actions/apitimelinefavorites.php:72 actions/apitimelinefriends.php:174
#: actions/apitimelinehome.php:80 actions/apitimelinementions.php:80
#: actions/apitimelineuser.php:82 actions/avatarbynickname.php:75
@@ -170,22 +170,20 @@ msgstr ""
#: actions/all.php:146
#, 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)."
+"You can try to [nudge %1$s](../%2$s) from their profile or [post something "
+"to them](%%%%action.newnotice%%%%?status_textarea=%3$s)."
msgstr ""
-"Можете да Ñе обидете да го [подбуцнете кориÑникот %1$s](../%2$s) од профилот "
-"на кориÑникот или да [објавите нешто што Ñакате тој да го прочита](%%%%"
-"action.newnotice%%%%?status_textarea=%3$s)."
+"Можете да го [подбуцнете кориÑникот %1$s](../%2$s) од неговиот профил или да "
+"[му иÑпратите нешто](%%%%action.newnotice%%%%?status_textarea=%3$s)."
#: actions/all.php:149 actions/replies.php:210 actions/showstream.php:211
#, php-format
msgid ""
"Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
-"post a notice to his or her attention."
+"post a notice to them."
msgstr ""
-"Рзошто не [региÑтрирате Ñметка](%%%%action.register%%%%), за да можете да "
-"го подбуцнете кориÑникот %s или да објавите забелешка што Ñакате тој да ја "
-"прочита."
+"Рзошто не Ñе [региÑтрирате](%%%%action.register%%%%), и потоа да го "
+"подбуцнете кориÑникот %s или да му иÑпратите забелешка."
#. TRANS: H1 text
#: actions/all.php:182
@@ -217,7 +215,7 @@ msgstr "Подновувања од %1$s и пријатели на %2$s!"
#: actions/apistatusesshow.php:109 actions/apistatusnetconfig.php:141
#: actions/apistatusnetversion.php:93 actions/apisubscriptions.php:111
#: actions/apitimelinefavorites.php:174 actions/apitimelinefriends.php:271
-#: actions/apitimelinegroup.php:152 actions/apitimelinehome.php:175
+#: actions/apitimelinegroup.php:154 actions/apitimelinehome.php:175
#: actions/apitimelinementions.php:174 actions/apitimelinepublic.php:241
#: actions/apitimelineretweetedtome.php:121
#: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161
@@ -267,7 +265,7 @@ msgstr "Ðе може да Ñе зачува профил."
#: actions/apiaccountupdateprofilebackgroundimage.php:108
#: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80
-#: actions/apistatusesupdate.php:211 actions/avatarsettings.php:257
+#: actions/apistatusesupdate.php:212 actions/avatarsettings.php:257
#: actions/designadminpanel.php:123 actions/editapplication.php:118
#: actions/newapplication.php:101 actions/newnotice.php:94
#: lib/designsettings.php:283
@@ -366,8 +364,8 @@ msgid "Could not delete favorite."
msgstr "Ðе можам да ја избришам омилената забелешка."
#: actions/apifriendshipscreate.php:109
-msgid "Could not follow user: User not found."
-msgstr "Ðе можам да го Ñледам кориÑникот: КориÑникот не е пронајден."
+msgid "Could not follow user: profile not found."
+msgstr "Ðе можам да го Ñледам кориÑникот: профилот не е пронајден."
#: actions/apifriendshipscreate.php:118
#, php-format
@@ -383,10 +381,11 @@ msgstr ""
msgid "You cannot unfollow yourself."
msgstr "Ðе можете да преÑтанете да Ñе Ñледите Ñамите ÑебеÑи."
-#: actions/apifriendshipsexists.php:94
-msgid "Two user ids or screen_names must be supplied."
+#: actions/apifriendshipsexists.php:91
+msgid "Two valid IDs or screen_names must be supplied."
msgstr ""
-"Мора да бидат наведени два кориÑнички идентификатора (ID) или две имиња."
+"Мора да Ñе наведат две кориÑнички назнаки (ID) или screen_names (имиња за "
+"приказ)."
#: actions/apifriendshipsshow.php:134
msgid "Could not determine source user."
@@ -513,6 +512,10 @@ msgstr "%s групи"
msgid "groups on %s"
msgstr "групи на %s"
+#: actions/apimediaupload.php:99
+msgid "Upload failed."
+msgstr "Подигањето не уÑпеа."
+
#: actions/apioauthauthorize.php:101
msgid "No oauth_token parameter provided."
msgstr "Ðема наведено oauth_token параметар."
@@ -656,24 +659,28 @@ msgstr "СтатуÑот е избришан."
msgid "No status with that ID found."
msgstr "Ðема пронајдено ÑÑ‚Ð°Ñ‚ÑƒÑ Ñо тој ID."
-#: actions/apistatusesupdate.php:241 actions/newnotice.php:155
+#: actions/apistatusesupdate.php:221
+msgid "Client must provide a 'status' parameter with a value."
+msgstr "Клиентот мора да укаже вредноÑÑ‚ за параметарот „ÑтатуÑ“"
+
+#: actions/apistatusesupdate.php:242 actions/newnotice.php:155
#: lib/mailhandler.php:60
#, php-format
msgid "That's too long. Max notice size is %d chars."
msgstr "Ова е предолго. МакÑималната дозволена должина изнеÑува %d знаци."
-#: actions/apistatusesupdate.php:282 actions/apiusershow.php:96
+#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96
msgid "Not found."
msgstr "Ðе е пронајдено."
-#: actions/apistatusesupdate.php:305 actions/newnotice.php:178
+#: actions/apistatusesupdate.php:306 actions/newnotice.php:178
#, php-format
msgid "Max notice size is %d chars, including attachment URL."
msgstr ""
"МакÑималната големина на забелешката е %d знаци, вклучувајќи ја URL-адреÑата "
"на прилогот."
-#: actions/apisubscriptions.php:231 actions/apisubscriptions.php:261
+#: actions/apisubscriptions.php:232 actions/apisubscriptions.php:262
msgid "Unsupported format."
msgstr "Ðеподдржан формат."
@@ -727,6 +734,10 @@ msgstr "Забелешки означени Ñо %s"
msgid "Updates tagged with %1$s on %2$s!"
msgstr "Подновувањата Ñе означени Ñо %1$s на %2$s!"
+#: actions/apitrends.php:87
+msgid "API method under construction."
+msgstr "API-методот е во изработка."
+
#: actions/attachment.php:73
msgid "No such attachment."
msgstr "Ðема таков прилог."
@@ -781,7 +792,7 @@ msgid "Preview"
msgstr "Преглед"
#: actions/avatarsettings.php:149 actions/showapplication.php:252
-#: lib/deleteuserform.php:66 lib/noticelist.php:648
+#: lib/deleteuserform.php:66 lib/noticelist.php:656
msgid "Delete"
msgstr "Бриши"
@@ -1063,7 +1074,7 @@ msgid "Do not delete this notice"
msgstr "Ðе ја бриши оваа забелешка"
#. TRANS: Submit button title for 'Yes' when deleting a notice.
-#: actions/deletenotice.php:158 lib/noticelist.php:648
+#: actions/deletenotice.php:158 lib/noticelist.php:656
msgid "Delete this notice"
msgstr "Бриши ја оваа забелешка"
@@ -1341,7 +1352,8 @@ msgstr "Ðеважечки алијаÑ: „%s“"
msgid "Could not update group."
msgstr "Ðе можев да ја подновам групата."
-#: actions/editgroup.php:264 classes/User_group.php:496
+#. TRANS: Server exception thrown when creating group aliases failed.
+#: actions/editgroup.php:264 classes/User_group.php:514
msgid "Could not create aliases."
msgstr "Ðе можеше да Ñе Ñоздадат алијаÑи."
@@ -2332,8 +2344,7 @@ msgstr "Запамети ме"
#: actions/login.php:259 actions/register.php:487
msgid "Automatically login in the future; not for shared computers!"
msgstr ""
-"Следниот пат најавете Ñе автоматÑки; не е за компјутери кои ги делите Ñо "
-"други!"
+"ОтÑега врши автоматÑка најава. Ðе треба да Ñе кориÑти за јавни Ñметачи!"
#: actions/login.php:269
msgid "Lost or forgotten password?"
@@ -2503,7 +2514,7 @@ msgstr "Подновувања кои Ñе Ñовпаѓаат Ñо пребарÐ
#: actions/nudge.php:85
msgid ""
-"This user doesn't allow nudges or hasn't confirmed or set his email yet."
+"This user doesn't allow nudges or hasn't confirmed or set their email yet."
msgstr ""
"Овој кориÑник не дозволува подбуцнувања или Ñè уште нема потврдено или "
"поÑтавено Ñвоја е-пошта."
@@ -2581,8 +2592,8 @@ msgid "Only %s URLs over plain HTTP please."
msgstr "Ве молиме кориÑтете Ñамо %s URL-адреÑи врз проÑÑ‚ HTTP-код."
#. TRANS: Client error on an API request with an unsupported data format.
-#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1179
-#: lib/apiaction.php:1208 lib/apiaction.php:1325
+#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1204
+#: lib/apiaction.php:1232 lib/apiaction.php:1355
msgid "Not a supported data format."
msgstr "Ова не е поддржан формат на податотека."
@@ -3499,7 +3510,7 @@ msgstr "Ðе можете да повторувате ÑопÑтвена забÐ
msgid "You already repeated that notice."
msgstr "Веќе ја имате повторено таа забелешка."
-#: actions/repeat.php:114 lib/noticelist.php:667
+#: actions/repeat.php:114 lib/noticelist.php:675
msgid "Repeated"
msgstr "Повторено"
@@ -3537,10 +3548,10 @@ msgstr "Канал Ñо одговори за %s (Atom)"
#, php-format
msgid ""
"This is the timeline showing replies to %1$s but %2$s hasn't received a "
-"notice to his attention yet."
+"notice to them yet."
msgstr ""
"Ова е иÑторијата на која Ñе прикажани одговорите на %1$s, но %2$s Ñè уште "
-"нема добиено порака од некој што Ñака да ја прочита."
+"нема добиено забелешка за нив."
#: actions/replies.php:204
#, php-format
@@ -3554,11 +3565,11 @@ msgstr ""
#: actions/replies.php:206
#, php-format
msgid ""
-"You can try to [nudge %1$s](../%2$s) or [post something to his or her "
-"attention](%%%%action.newnotice%%%%?status_textarea=%3$s)."
+"You can try to [nudge %1$s](../%2$s) or [post something to them](%%%%action."
+"newnotice%%%%?status_textarea=%3$s)."
msgstr ""
-"Можете да го [подбуцнете кориÑникот 1$s](../%2$s) или да [објавите нешто што "
-"Ñакате тој да го прочита](%%%%action.newnotice%%%%?status_textarea=%3$s)."
+"Можете да го [подбуцнете кориÑникот 1$s](../%2$s) или да [му иÑпратите нешто]"
+"(%%%%action.newnotice%%%%?status_textarea=%3$s)."
#: actions/repliesrss.php:72
#, php-format
@@ -3646,7 +3657,7 @@ msgstr "Организација"
msgid "Description"
msgstr "ОпиÑ"
-#: actions/showapplication.php:192 actions/showgroup.php:444
+#: actions/showapplication.php:192 actions/showgroup.php:436
#: lib/profileaction.php:187
msgid "Statistics"
msgstr "СтатиÑтики"
@@ -3738,21 +3749,21 @@ msgstr ""
#: actions/showfavorites.php:208
#, php-format
msgid ""
-"%s hasn't added any notices to his favorites yet. Post something interesting "
-"they would add to their favorites :)"
+"%s hasn't added any favorite notices yet. Post something interesting they "
+"would add to their favorites :)"
msgstr ""
-"%s Ñè уште нема додадено забелешки како омилени. Објавете нешто интереÑно, "
-"што кориÑникот би го обележал како омилено :)"
+"%s Ñè уште нема додадено омилени забелешки. Објавете нешто интереÑно, што "
+"кориÑникот би го обележал како омилено :)"
#: actions/showfavorites.php:212
#, php-format
msgid ""
-"%s hasn't added any notices to his favorites yet. Why not [register an "
-"account](%%%%action.register%%%%) and then post something interesting they "
-"would add to their favorites :)"
+"%s hasn't added any favorite notices yet. Why not [register an account](%%%%"
+"action.register%%%%) and then post something interesting they would add to "
+"their favorites :)"
msgstr ""
-"%s Ñè уште нема додадено омилени забелешки. Зошто не [региÑтрирате Ñметка](%%"
-"%%action.register%%%%) и потоа објавите нешто интереÑно што кориÑникот би го "
+"%s Ñè уште нема додадено омилени забелешки. Зошто не Ñе [региÑтрирате](%%%%"
+"action.register%%%%) и потоа објавите нешто интереÑно што кориÑникот би го "
"додал како омилено :)"
#: actions/showfavorites.php:243
@@ -3811,7 +3822,7 @@ msgstr "Канал Ñо забелешки за групата%s (Atom)"
msgid "FOAF for %s group"
msgstr "FOAF за групата %s"
-#: actions/showgroup.php:393 actions/showgroup.php:453 lib/groupnav.php:91
+#: actions/showgroup.php:393 actions/showgroup.php:445 lib/groupnav.php:91
msgid "Members"
msgstr "Членови"
@@ -3825,11 +3836,11 @@ msgstr "(Ðема)"
msgid "All members"
msgstr "Сите членови"
-#: actions/showgroup.php:447
+#: actions/showgroup.php:439
msgid "Created"
msgstr "Создадено"
-#: actions/showgroup.php:463
+#: actions/showgroup.php:455
#, php-format
msgid ""
"**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3845,7 +3856,7 @@ msgstr ""
"Ñе](%%%%action.register%%%%) за да Ñтанете дел од оваа група и многу повеќе! "
"([Прочитајте повеќе](%%%%doc.help%%%%))"
-#: actions/showgroup.php:469
+#: actions/showgroup.php:461
#, php-format
msgid ""
"**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3858,7 +3869,7 @@ msgstr ""
"Ñлободната програмÑка алатка [StatusNet](http://status.net/). Ðејзините "
"членови Ñи разменуваат кратки пораки за нивниот живот и интереÑи. "
-#: actions/showgroup.php:497
+#: actions/showgroup.php:489
msgid "Admins"
msgstr "ÐдминиÑтратори"
@@ -3935,11 +3946,11 @@ msgstr ""
#: 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)."
+"You can try to nudge %1$s or [post something to them](%%%%action.newnotice%%%"
+"%?status_textarea=%2$s)."
msgstr ""
-"Можете да го подбуцнете кориÑникот %1$s или [да објавите нешто што Ñакате да "
-"го прочита](%%%%action.newnotice%%%%?status_textarea=%2$s)."
+"Можете да го подбуцнете кориÑникот %1$s или [му иÑпратите нешто](%%%%action."
+"newnotice%%%%?status_textarea=%2$s)."
#: actions/showstream.php:243
#, php-format
@@ -4329,7 +4340,8 @@ msgstr "Зачувај поÑтавки за Ñнимки"
msgid "You are not subscribed to that profile."
msgstr "Ðе Ñте претплатени на тој профил."
-#: actions/subedit.php:83 classes/Subscription.php:132
+#. TRANS: Exception thrown when a subscription could not be stored on the server.
+#: actions/subedit.php:83 classes/Subscription.php:136
msgid "Could not save subscription."
msgstr "Ðе можев да ја зачувам претплатата."
@@ -4507,10 +4519,6 @@ msgstr "Со овој образец додавајте ознаки во Ваш
msgid "No such tag."
msgstr "Ðема таква ознака."
-#: actions/twitapitrends.php:85
-msgid "API method under construction."
-msgstr "API-методот е во изработка."
-
#: actions/unblock.php:59
msgid "You haven't blocked that user."
msgstr "Го немате блокирано тој кориÑник."
@@ -4823,81 +4831,128 @@ msgstr "Верзија"
msgid "Author(s)"
msgstr "Ðвтор(и)"
-#: classes/File.php:185
+#. TRANS: Server exception thrown when a URL cannot be processed.
+#: classes/File.php:143
+#, php-format
+msgid "Cannot process URL '%s'"
+msgstr "Ðе можам да ја обработам URL-адреÑата „%s“"
+
+#. TRANS: Server exception thrown when... Robin thinks something is impossible!
+#: classes/File.php:175
+msgid "Robin thinks something is impossible."
+msgstr "Робин миÑли дека нешто е невозможно."
+
+#. TRANS: Message given if an upload is larger than the configured maximum.
+#. TRANS: %1$d is the byte limit for uploads, %2$d is the byte count for the uploaded file.
+#: classes/File.php:190
#, php-format
msgid ""
-"No file may be larger than %d bytes and the file you sent was %d bytes. Try "
-"to upload a smaller version."
+"No file may be larger than %1$d bytes and the file you sent was %2$d bytes. "
+"Try to upload a smaller version."
msgstr ""
-"Ðиедна податотека не Ñмее да биде поголема од %d бајти, а подаотеката што ја "
+"Податотеките не Ñмеат да бидат поголеми од %d бајти, а податотеката што ја "
"иÑпративте Ñодржи %d бајти. Подигнете помала верзија."
-#: classes/File.php:195
+#. TRANS: Message given if an upload would exceed user quota.
+#. TRANS: %d (number) is the user quota in bytes.
+#: classes/File.php:202
#, php-format
msgid "A file this large would exceed your user quota of %d bytes."
msgstr ""
"Волку голема податотека ќе ја надмине Вашата кориÑничка квота од %d бајти."
-#: classes/File.php:202
+#. TRANS: Message given id an upload would exceed a user's monthly quota.
+#. TRANS: $d (number) is the monthly user quota in bytes.
+#: classes/File.php:211
#, php-format
msgid "A file this large would exceed your monthly quota of %d bytes."
msgstr "ВОлку голема податотека ќе ја надмине Вашата меÑечна квота од %d бајти"
-#: classes/Group_member.php:41
+#. TRANS: Client exception thrown if a file upload does not have a valid name.
+#: classes/File.php:248 classes/File.php:263
+msgid "Invalid filename."
+msgstr "Погрешно податотечно име."
+
+#. TRANS: Exception thrown when joining a group fails.
+#: classes/Group_member.php:42
msgid "Group join failed."
msgstr "Зачленувањето во групата не уÑпеа."
-#: classes/Group_member.php:53
+#. TRANS: Exception thrown when trying to leave a group the user is not a member of.
+#: classes/Group_member.php:55
msgid "Not part of group."
msgstr "Ðе е дел од групата."
-#: classes/Group_member.php:60
+#. TRANS: Exception thrown when trying to leave a group fails.
+#: classes/Group_member.php:63
msgid "Group leave failed."
msgstr "Ðапуштањето на групата не уÑпеа."
-#: classes/Local_group.php:41
+#. TRANS: Server exception thrown when updating a local group fails.
+#: classes/Local_group.php:42
msgid "Could not update local group."
msgstr "Ðе можев да ја подновам локалната група."
-#: classes/Login_token.php:76
+#. TRANS: Exception thrown when trying creating a login token failed.
+#. TRANS: %s is the user nickname for which token creation failed.
+#: classes/Login_token.php:78
#, php-format
msgid "Could not create login token for %s"
msgstr "Ðе можам да Ñоздадам најавен жетон за"
-#: classes/Message.php:45
+#. TRANS: Exception thrown when database name or Data Source Name could not be found.
+#: classes/Memcached_DataObject.php:533
+msgid "No database name or DSN found anywhere."
+msgstr "Ðикаде не е пронајдено име на базата или DSN."
+
+#. TRANS: Client exception thrown when a user tries to send a direct message while being banned from sending them.
+#: classes/Message.php:46
msgid "You are banned from sending direct messages."
msgstr "Забрането Ви е иÑпраќање на директни пораки."
-#: classes/Message.php:61
+#. TRANS: Message given when a message could not be stored on the server.
+#: classes/Message.php:63
msgid "Could not insert message."
msgstr "Ðе можев да ја иÑпратам пораката."
-#: classes/Message.php:71
+#. TRANS: Message given when a message could not be updated on the server.
+#: classes/Message.php:74
msgid "Could not update message with new URI."
msgstr "Ðе можев да ја подновам пораката Ñо нов URI."
+#. TRANS: Server exception thrown when a user profile for a notice cannot be found.
+#. TRANS: %1$d is a profile ID (number), %2$d is a notice ID (number).
+#: classes/Notice.php:98
+#, php-format
+msgid "No such profile (%1$d) for notice (%2$d)."
+msgstr "Ðема таков профил (%1$d) за забелешката (%2$d)."
+
#. TRANS: Server exception. %s are the error details.
-#: classes/Notice.php:182
+#: classes/Notice.php:190
#, php-format
msgid "Database error inserting hashtag: %s"
msgstr "Грешка во базата на податоци при вметнувањето на хеш-ознаката: %s"
-#: classes/Notice.php:251
+#. TRANS: Client exception thrown if a notice contains too many characters.
+#: classes/Notice.php:260
msgid "Problem saving notice. Too long."
msgstr "Проблем Ñо зачувувањето на белешката. Премногу долго."
-#: classes/Notice.php:255
+#. TRANS: Client exception thrown when trying to save a notice for an unknown user.
+#: classes/Notice.php:265
msgid "Problem saving notice. Unknown user."
msgstr "Проблем Ñо зачувувањето на белешката. Ðепознат кориÑник."
-#: classes/Notice.php:260
+#. TRANS: Client exception thrown when a user tries to post too many notices in a given time frame.
+#: classes/Notice.php:271
msgid ""
"Too many notices too fast; take a breather and post again in a few minutes."
msgstr ""
"Премногу забелњшки за прекратко време; здивнете малку и продолжете за "
"неколку минути."
-#: classes/Notice.php:266
+#. TRANS: Client exception thrown when a user tries to post too many duplicate notices in a given time frame.
+#: classes/Notice.php:278
msgid ""
"Too many duplicate messages too quickly; take a breather and post again in a "
"few minutes."
@@ -4905,72 +4960,122 @@ msgstr ""
"Премногу дуплирани пораки во прекратко време; здивнете малку и продолжете за "
"неколку минути."
-#: classes/Notice.php:272
+#. TRANS: Client exception thrown when a user tries to post while being banned.
+#: classes/Notice.php:286
msgid "You are banned from posting notices on this site."
msgstr "Забрането Ви е да објавувате забелешки на ова мрежно меÑто."
-#: classes/Notice.php:338 classes/Notice.php:364
+#. TRANS: Server exception thrown when a notice cannot be saved.
+#. TRANS: Server exception thrown when a notice cannot be updated.
+#: classes/Notice.php:353 classes/Notice.php:380
msgid "Problem saving notice."
msgstr "Проблем во зачувувањето на белешката."
-#: classes/Notice.php:973
+#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups().
+#: classes/Notice.php:892
+msgid "Bad type provided to saveKnownGroups"
+msgstr "Ðа saveKnownGroups му е уакажан грешен тип"
+
+#. TRANS: Server exception thrown when an update for a group inbox fails.
+#: classes/Notice.php:991
msgid "Problem saving group inbox."
msgstr "Проблем при зачувувањето на групното приемно Ñандаче."
#. TRANS: Message used to repeat a notice. RT is the abbreviation of 'retweet'.
#. TRANS: %1$s is the repeated user's name, %2$s is the repeated notice.
-#: classes/Notice.php:1564
+#: classes/Notice.php:1614
#, php-format
msgid "RT @%1$s %2$s"
msgstr "RT @%1$s %2$s"
-#: classes/Subscription.php:74 lib/oauthstore.php:465
+#. TRANS: Exception thrown when trying to revoke an existing role for a user that does not exist.
+#. TRANS: %1$s is the role name, %2$s is the user ID (number).
+#: classes/Profile.php:740
+#, php-format
+msgid "Cannot revoke role \"%1$s\" for user #%2$d; does not exist."
+msgstr ""
+"Ðе можам да му ја одземам улогата „%1$s“ на кориÑникот #%2$s. Таква улога не "
+"поÑтои."
+
+#. TRANS: Exception thrown when trying to revoke a role for a user with a failing database query.
+#. TRANS: %1$s is the role name, %2$s is the user ID (number).
+#: classes/Profile.php:749
+#, php-format
+msgid "Cannot revoke role \"%1$s\" for user #%2$d; database error."
+msgstr ""
+"Ðе можам да му ја одземам улогата „%1$s“ на кориÑникот #%2$d. Има грешка во "
+"базата на податоци."
+
+#. TRANS: Exception thrown when a right for a non-existing user profile is checked.
+#: classes/Remote_profile.php:54
+msgid "Missing profile."
+msgstr "ÐедоÑтаÑува профил."
+
+#. TRANS: Exception thrown when a tag cannot be saved.
+#: classes/Status_network.php:346
+msgid "Unable to save tag."
+msgstr "Ðе можам да ја зачувам ознаката."
+
+#. TRANS: Exception thrown when trying to subscribe while being banned from subscribing.
+#: classes/Subscription.php:75 lib/oauthstore.php:465
msgid "You have been banned from subscribing."
msgstr "Блокирани Ñте од претплаќање."
-#: classes/Subscription.php:78
+#. TRANS: Exception thrown when trying to subscribe while already subscribed.
+#: classes/Subscription.php:80
msgid "Already subscribed!"
msgstr "Веќе претплатено!"
-#: classes/Subscription.php:82
+#. TRANS: Exception thrown when trying to subscribe to a user who has blocked the subscribing user.
+#: classes/Subscription.php:85
msgid "User has blocked you."
msgstr "КориÑникот Ве има блокирано."
-#: classes/Subscription.php:167
+#. TRANS: Exception thrown when trying to unsibscribe without a subscription.
+#: classes/Subscription.php:171
#, fuzzy
msgid "Not subscribed!"
msgstr "Ðе Ñте претплатени!"
-#: classes/Subscription.php:173
-msgid "Couldn't delete self-subscription."
+#. TRANS: Exception thrown when trying to unsubscribe a user from themselves.
+#: classes/Subscription.php:178
+msgid "Could not delete self-subscription."
msgstr "Ðе можам да ја избришам Ñамопретплатата."
-#: classes/Subscription.php:200
-msgid "Couldn't delete subscription OMB token."
-msgstr "Ðе можете да го избришете OMB-жетонот за претплата."
+#. TRANS: Exception thrown when the OMB token for a subscription could not deleted on the server.
+#: classes/Subscription.php:206
+msgid "Could not delete subscription OMB token."
+msgstr "Ðе можам да го избришам OMB-жетонот за претплата."
-#: classes/Subscription.php:211
-msgid "Couldn't delete subscription."
-msgstr "Претплата не може да Ñе избрише."
+#. TRANS: Exception thrown when a subscription could not be deleted on the server.
+#: classes/Subscription.php:218
+msgid "Could not delete subscription."
+msgstr "Ðе можам да ја избришам претплатата."
-#: classes/User.php:363
+#. TRANS: Notice given on user registration.
+#. TRANS: %1$s is the sitename, $2$s is the registering user's nickname.
+#: classes/User.php:365
#, php-format
msgid "Welcome to %1$s, @%2$s!"
msgstr "Добредојдовте на %1$s, @%2$s!"
-#: classes/User_group.php:480
+#. TRANS: Server exception thrown when creating a group failed.
+#: classes/User_group.php:496
msgid "Could not create group."
msgstr "Ðе можев да ја Ñоздадам групата."
-#: classes/User_group.php:489
+#. TRANS: Server exception thrown when updating a group URI failed.
+#: classes/User_group.php:506
msgid "Could not set group URI."
msgstr "Ðе можев да поÑтавам URI на групата."
-#: classes/User_group.php:510
+#. TRANS: Server exception thrown when setting group membership failed.
+#: classes/User_group.php:529
msgid "Could not set group membership."
msgstr "Ðе можев да назначам членÑтво во групата."
-#: classes/User_group.php:524
+#. TRANS: Server exception thrown when saving local group information failed.
+#: classes/User_group.php:544
msgid "Could not save local group info."
msgstr "Ðе можев да ги зачувам информациите за локалните групи."
@@ -6442,7 +6547,7 @@ msgstr ""
"впуштите во разговор Ñо други кориÑници. Луѓето можат да ви иÑпраќаат пораки "
"што ќе можете да ги видите Ñамо Вие."
-#: lib/mailbox.php:227 lib/noticelist.php:497
+#: lib/mailbox.php:227 lib/noticelist.php:505
msgid "from"
msgstr "од"
@@ -6503,24 +6608,24 @@ msgstr "Податотеката не може да Ñе запише на диÑ
msgid "File upload stopped by extension."
msgstr "Подигањето на податотеката е запрено од проширувањето."
-#: lib/mediafile.php:179 lib/mediafile.php:216
+#: lib/mediafile.php:179 lib/mediafile.php:217
msgid "File exceeds user's quota."
msgstr "Податотеката ја надминува квотата на кориÑникот."
-#: lib/mediafile.php:196 lib/mediafile.php:233
+#: lib/mediafile.php:197 lib/mediafile.php:234
msgid "File could not be moved to destination directory."
msgstr "Податотеката не може да Ñе премеÑти во целниот директориум."
-#: lib/mediafile.php:201 lib/mediafile.php:237
+#: lib/mediafile.php:202 lib/mediafile.php:238
msgid "Could not determine file's MIME type."
msgstr "Ðе можев да го утврдам mime-типот на податотеката."
-#: lib/mediafile.php:270
+#: lib/mediafile.php:318
#, php-format
msgid " Try using another %s format."
msgstr " Обидете Ñе Ñо друг формат на %s."
-#: lib/mediafile.php:275
+#: lib/mediafile.php:323
#, php-format
msgid "%s is not a supported file type on this server."
msgstr "%s не е поддржан тип на податотека на овој опÑлужувач."
@@ -6576,51 +6681,51 @@ msgstr ""
"Обидете Ñе подоцна."
#. TRANS: Used in coordinates as abbreviation of north
-#: lib/noticelist.php:430
+#: lib/noticelist.php:436
msgid "N"
msgstr "С"
#. TRANS: Used in coordinates as abbreviation of south
-#: lib/noticelist.php:432
+#: lib/noticelist.php:438
msgid "S"
msgstr "Ј"
#. TRANS: Used in coordinates as abbreviation of east
-#: lib/noticelist.php:434
+#: lib/noticelist.php:440
msgid "E"
msgstr "И"
#. TRANS: Used in coordinates as abbreviation of west
-#: lib/noticelist.php:436
+#: lib/noticelist.php:442
msgid "W"
msgstr "З"
-#: lib/noticelist.php:438
+#: lib/noticelist.php:444
#, php-format
msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
msgstr "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
-#: lib/noticelist.php:447
+#: lib/noticelist.php:453
msgid "at"
msgstr "во"
-#: lib/noticelist.php:559
+#: lib/noticelist.php:567
msgid "in context"
msgstr "во контекÑÑ‚"
-#: lib/noticelist.php:594
+#: lib/noticelist.php:602
msgid "Repeated by"
msgstr "Повторено од"
-#: lib/noticelist.php:621
+#: lib/noticelist.php:629
msgid "Reply to this notice"
msgstr "Одговори на забелешкава"
-#: lib/noticelist.php:622
+#: lib/noticelist.php:630
msgid "Reply"
msgstr "Одговор"
-#: lib/noticelist.php:666
+#: lib/noticelist.php:674
msgid "Notice repeated"
msgstr "Забелешката е повторена"
@@ -6879,8 +6984,8 @@ msgstr ""
"ОпÑлужувачот не може да Ñе Ñправи Ñо подигања на изгледи без ZIP-поддршка."
#: lib/themeuploader.php:58 lib/themeuploader.php:61
-msgid "Theme upload missing or failed."
-msgstr "Подигањето на мотивот недоÑтаÑува или не уÑпеа."
+msgid "The theme file is missing or the upload failed."
+msgstr "Податотеката за изгледот недоÑтаÑува или подигањето не уÑпеало."
#: lib/themeuploader.php:91 lib/themeuploader.php:102
#: lib/themeuploader.php:253 lib/themeuploader.php:257
diff --git a/locale/nb/LC_MESSAGES/statusnet.po b/locale/nb/LC_MESSAGES/statusnet.po
index 112ca76c8..6616a6a6b 100644
--- a/locale/nb/LC_MESSAGES/statusnet.po
+++ b/locale/nb/LC_MESSAGES/statusnet.po
@@ -9,12 +9,12 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-06-16 22:18+0000\n"
-"PO-Revision-Date: 2010-06-21 18:04:30+0000\n"
+"POT-Creation-Date: 2010-08-03 13:21+0000\n"
+"PO-Revision-Date: 2010-08-03 13:22:16+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.17alpha (r68367); Translate extension (2010-06-12)\n"
+"X-Generator: MediaWiki 1.17alpha (r70381); Translate extension (2010-07-21)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: no\n"
"X-Message-Group: out-statusnet\n"
@@ -98,7 +98,7 @@ msgstr "Ingen slik side."
#: actions/apidirectmessagenew.php:74 actions/apigroupcreate.php:113
#: actions/apigroupismember.php:91 actions/apigroupjoin.php:100
#: actions/apigroupleave.php:100 actions/apigrouplist.php:73
-#: actions/apistatusesupdate.php:228 actions/apisubscriptions.php:87
+#: actions/apistatusesupdate.php:229 actions/apisubscriptions.php:87
#: actions/apitimelinefavorites.php:72 actions/apitimelinefriends.php:174
#: actions/apitimelinehome.php:80 actions/apitimelinementions.php:80
#: actions/apitimelineuser.php:82 actions/avatarbynickname.php:75
@@ -165,20 +165,20 @@ msgstr ""
#. TRANS: %1$s is user nickname, %2$s is user nickname, %2$s is user nickname prefixed with "@"
#: actions/all.php:146
-#, php-format
+#, fuzzy, 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)."
+"You can try to [nudge %1$s](../%2$s) from their profile or [post something "
+"to them](%%%%action.newnotice%%%%?status_textarea=%3$s)."
msgstr ""
"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:149 actions/replies.php:210 actions/showstream.php:211
-#, php-format
+#, fuzzy, php-format
msgid ""
"Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
-"post a notice to his or her attention."
+"post a notice to them."
msgstr ""
"Hvorfor ikke [opprette en konto](%%%%action.register%%%%) og så knuff %s "
"eller post en notis for å få hans eller hennes oppmerksomhet."
@@ -213,7 +213,7 @@ msgstr "Oppdateringer fra %1$s og venner på %2$s!"
#: actions/apistatusesshow.php:109 actions/apistatusnetconfig.php:141
#: actions/apistatusnetversion.php:93 actions/apisubscriptions.php:111
#: actions/apitimelinefavorites.php:174 actions/apitimelinefriends.php:271
-#: actions/apitimelinegroup.php:152 actions/apitimelinehome.php:175
+#: actions/apitimelinegroup.php:154 actions/apitimelinehome.php:175
#: actions/apitimelinementions.php:174 actions/apitimelinepublic.php:241
#: actions/apitimelineretweetedtome.php:121
#: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161
@@ -264,7 +264,7 @@ msgstr "Klarte ikke å lagre profil."
#: actions/apiaccountupdateprofilebackgroundimage.php:108
#: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80
-#: actions/apistatusesupdate.php:211 actions/avatarsettings.php:257
+#: actions/apistatusesupdate.php:212 actions/avatarsettings.php:257
#: actions/designadminpanel.php:123 actions/editapplication.php:118
#: actions/newapplication.php:101 actions/newnotice.php:94
#: lib/designsettings.php:283
@@ -363,8 +363,8 @@ msgid "Could not delete favorite."
msgstr "Kunne ikke slette favoritt."
#: actions/apifriendshipscreate.php:109
-msgid "Could not follow user: User not found."
-msgstr "Kunne ikke følge brukeren: Fant ikke brukeren."
+msgid "Could not follow user: profile not found."
+msgstr "Kunne ikke følge brukeren: fant ikke profilen."
#: actions/apifriendshipscreate.php:118
#, php-format
@@ -379,9 +379,9 @@ msgstr "Kunne ikke slutte å følge brukeren: Fant ikke brukeren."
msgid "You cannot unfollow yourself."
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/apifriendshipsexists.php:91
+msgid "Two valid IDs or screen_names must be supplied."
+msgstr "To gyldige ID-er eller screen_names må oppgis."
#: actions/apifriendshipsshow.php:134
msgid "Could not determine source user."
@@ -508,6 +508,11 @@ msgstr "%s grupper"
msgid "groups on %s"
msgstr "grupper på %s"
+#: actions/apimediaupload.php:99
+#, fuzzy
+msgid "Upload failed."
+msgstr "Last opp fil"
+
#: actions/apioauthauthorize.php:101
msgid "No oauth_token parameter provided."
msgstr "Ingen verdi for oauth_token er oppgitt."
@@ -649,22 +654,26 @@ msgstr "Status slettet."
msgid "No status with that ID found."
msgstr "Ingen status med den ID-en funnet."
-#: actions/apistatusesupdate.php:241 actions/newnotice.php:155
+#: actions/apistatusesupdate.php:221
+msgid "Client must provide a 'status' parameter with a value."
+msgstr ""
+
+#: actions/apistatusesupdate.php:242 actions/newnotice.php:155
#: lib/mailhandler.php:60
#, php-format
msgid "That's too long. Max notice size is %d chars."
msgstr "Det er for langt. Maks notisstørrelse er %d tegn."
-#: actions/apistatusesupdate.php:282 actions/apiusershow.php:96
+#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96
msgid "Not found."
msgstr "Ikke funnet."
-#: actions/apistatusesupdate.php:305 actions/newnotice.php:178
+#: actions/apistatusesupdate.php:306 actions/newnotice.php:178
#, php-format
msgid "Max notice size is %d chars, including attachment URL."
msgstr "Maks notisstørrelse er %d tegn, inklusive vedleggs-URL."
-#: actions/apisubscriptions.php:231 actions/apisubscriptions.php:261
+#: actions/apisubscriptions.php:232 actions/apisubscriptions.php:262
msgid "Unsupported format."
msgstr "Formatet støttes ikke."
@@ -718,6 +727,10 @@ msgstr "Notiser merket med %s"
msgid "Updates tagged with %1$s on %2$s!"
msgstr "Oppdateringer merket med %1$s på %2$s!"
+#: actions/apitrends.php:87
+msgid "API method under construction."
+msgstr "API-metode under utvikling."
+
#: actions/attachment.php:73
msgid "No such attachment."
msgstr "Ingen slike vedlegg."
@@ -770,7 +783,7 @@ msgid "Preview"
msgstr "Forhåndsvis"
#: actions/avatarsettings.php:149 actions/showapplication.php:252
-#: lib/deleteuserform.php:66 lib/noticelist.php:648
+#: lib/deleteuserform.php:66 lib/noticelist.php:656
msgid "Delete"
msgstr "Slett"
@@ -1051,7 +1064,7 @@ msgid "Do not delete this notice"
msgstr "Ikke slett denne notisen"
#. TRANS: Submit button title for 'Yes' when deleting a notice.
-#: actions/deletenotice.php:158 lib/noticelist.php:648
+#: actions/deletenotice.php:158 lib/noticelist.php:656
msgid "Delete this notice"
msgstr "Slett denne notisen"
@@ -1121,13 +1134,12 @@ msgid "Theme for the site."
msgstr "Tema for nettstedet."
#: actions/designadminpanel.php:467
-#, fuzzy
msgid "Custom theme"
-msgstr "Nettstedstema"
+msgstr "Egendefinert tema"
#: actions/designadminpanel.php:471
msgid "You can upload a custom StatusNet theme as a .ZIP archive."
-msgstr ""
+msgstr "Du kan laste opp et egendefinert StatusNet-tema som et .ZIP-arkiv."
#: actions/designadminpanel.php:486 lib/designsettings.php:101
msgid "Change background image"
@@ -1186,11 +1198,11 @@ msgstr "Lenker"
#: actions/designadminpanel.php:651
msgid "Advanced"
-msgstr ""
+msgstr "Avansert"
#: actions/designadminpanel.php:655
msgid "Custom CSS"
-msgstr ""
+msgstr "Egendefinert CSS"
#: actions/designadminpanel.php:676 lib/designsettings.php:247
msgid "Use defaults"
@@ -1329,7 +1341,8 @@ msgstr "Ugyldig alias: «%s»"
msgid "Could not update group."
msgstr "Kunne ikke oppdatere gruppe."
-#: actions/editgroup.php:264 classes/User_group.php:496
+#. TRANS: Server exception thrown when creating group aliases failed.
+#: actions/editgroup.php:264 classes/User_group.php:514
msgid "Could not create aliases."
msgstr "Kunne ikke opprette alias."
@@ -2471,7 +2484,7 @@ msgstr "Oppdateringer som samsvarer søkestrengen «%1$s» på %2$s."
#: actions/nudge.php:85
msgid ""
-"This user doesn't allow nudges or hasn't confirmed or set his email yet."
+"This user doesn't allow nudges or hasn't confirmed or set their email yet."
msgstr ""
"Denne brukeren tillater ikke knuffing eller har ikke bekreftet eller angitt "
"sin e-post ennå."
@@ -2548,8 +2561,8 @@ msgid "Only %s URLs over plain HTTP please."
msgstr "Bare %s-nettadresser over vanlig HTTP."
#. TRANS: Client error on an API request with an unsupported data format.
-#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1179
-#: lib/apiaction.php:1208 lib/apiaction.php:1325
+#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1204
+#: lib/apiaction.php:1232 lib/apiaction.php:1355
msgid "Not a supported data format."
msgstr "Ikke et støttet dataformat."
@@ -3457,7 +3470,7 @@ msgstr "Du kan ikke gjenta din egen notis."
msgid "You already repeated that notice."
msgstr "Du har allerede gjentatt den notisen."
-#: actions/repeat.php:114 lib/noticelist.php:667
+#: actions/repeat.php:114 lib/noticelist.php:675
msgid "Repeated"
msgstr "Gjentatt"
@@ -3492,10 +3505,10 @@ msgid "Replies feed for %s (Atom)"
msgstr "Svarstrøm for %s (Atom)"
#: actions/replies.php:199
-#, php-format
+#, fuzzy, php-format
msgid ""
"This is the timeline showing replies to %1$s but %2$s hasn't received a "
-"notice to his attention yet."
+"notice to them yet."
msgstr ""
"Dette er tidslinjen som viser svar til %1$s men %2$s har ikke mottat en "
"notis for hans oppmerksomhet ennå."
@@ -3510,10 +3523,10 @@ msgstr ""
"eller [bli med i grupper](%%action.groups%%)."
#: actions/replies.php:206
-#, php-format
+#, fuzzy, php-format
msgid ""
-"You can try to [nudge %1$s](../%2$s) or [post something to his or her "
-"attention](%%%%action.newnotice%%%%?status_textarea=%3$s)."
+"You can try to [nudge %1$s](../%2$s) or [post something to them](%%%%action."
+"newnotice%%%%?status_textarea=%3$s)."
msgstr ""
"Du kan prøve å [knuffe %1$s](../%2$s) eller [post noe for å få hans eller "
"hennes oppmerksomhet](%%%%action.newnotice%%%%?status_textarea=%3$s)."
@@ -3604,7 +3617,7 @@ msgstr "Organisasjon"
msgid "Description"
msgstr "Beskrivelse"
-#: actions/showapplication.php:192 actions/showgroup.php:444
+#: actions/showapplication.php:192 actions/showgroup.php:436
#: lib/profileaction.php:187
msgid "Statistics"
msgstr "Statistikk"
@@ -3694,22 +3707,22 @@ msgstr ""
#: actions/showfavorites.php:208
#, php-format
msgid ""
-"%s hasn't added any notices to his favorites yet. Post something interesting "
-"they would add to their favorites :)"
+"%s hasn't added any favorite notices yet. Post something interesting they "
+"would add to their favorites :)"
msgstr ""
-"%s har ikke lagt til noen notiser til sine favoritter ennå. Post noe "
-"interessant som de vil legge til sine favoritter :)"
+"%s har ikke lagt til noen favorittnotiser ennå. Post noe interessant som de "
+"vil legge til sine favoritter :)"
#: actions/showfavorites.php:212
#, php-format
msgid ""
-"%s hasn't added any notices to his favorites yet. Why not [register an "
-"account](%%%%action.register%%%%) and then post something interesting they "
-"would add to their favorites :)"
+"%s hasn't added any favorite notices yet. Why not [register an account](%%%%"
+"action.register%%%%) and then post something interesting they would add to "
+"their favorites :)"
msgstr ""
-"%s har ikke lagt noen notiser til sine favoritter ennå. Hvorfor ikke "
-"[registrere en konto](%%%%action.register%%%%) og post noe interessant som "
-"de vil legge til sine favoritter :)"
+"%s har ikke lagt til noen favorittnotiser ennå. Hvorfor ikke [registrere en "
+"konto](%%%%action.register%%%%) og post noe interessant som de vil legge til "
+"sine favoritter :)"
#: actions/showfavorites.php:243
msgid "This is a way to share what you like."
@@ -3767,7 +3780,7 @@ msgstr "Notismating for %s gruppe (Atom)"
msgid "FOAF for %s group"
msgstr "FOAF for gruppen %s"
-#: actions/showgroup.php:393 actions/showgroup.php:453 lib/groupnav.php:91
+#: actions/showgroup.php:393 actions/showgroup.php:445 lib/groupnav.php:91
msgid "Members"
msgstr "Medlemmer"
@@ -3781,11 +3794,11 @@ msgstr "(Ingen)"
msgid "All members"
msgstr "Alle medlemmer"
-#: actions/showgroup.php:447
+#: actions/showgroup.php:439
msgid "Created"
msgstr "Opprettet"
-#: actions/showgroup.php:463
+#: actions/showgroup.php:455
#, php-format
msgid ""
"**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3801,7 +3814,7 @@ msgstr ""
"%%%) for å bli medlem av denne gruppen og mange fler. ([Les mer](%%%%doc.help"
"%%%%))"
-#: actions/showgroup.php:469
+#: actions/showgroup.php:461
#, php-format
msgid ""
"**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3814,7 +3827,7 @@ msgstr ""
"programvareverktøyet [StatusNet](http://status.net/). Dets medlemmer deler "
"korte meldinger om deres liv og interesser. "
-#: actions/showgroup.php:497
+#: actions/showgroup.php:489
msgid "Admins"
msgstr "Administratorer"
@@ -3889,10 +3902,10 @@ msgstr ""
"ikke begynne nå? :)"
#: actions/showstream.php:207
-#, php-format
+#, fuzzy, php-format
msgid ""
-"You can try to nudge %1$s or [post something to his or her attention](%%%%"
-"action.newnotice%%%%?status_textarea=%2$s)."
+"You can try to nudge %1$s or [post something to them](%%%%action.newnotice%%%"
+"%?status_textarea=%2$s)."
msgstr ""
"Du kan prøve å knuffe %1$s eller [poste noe for å få hans eller hennes "
"oppmerksomhet](%%%%action.newnotice%%%%?status_textarea=%2$s)."
@@ -4042,9 +4055,8 @@ msgid "Edit site-wide message"
msgstr ""
#: actions/sitenoticeadminpanel.php:103
-#, fuzzy
msgid "Unable to save site notice."
-msgstr "Kunne ikke lagre dine innstillinger for utseende."
+msgstr "Kunne ikke lagre nettstedsnotis."
#: actions/sitenoticeadminpanel.php:113
msgid "Max length for the site-wide notice is 255 chars."
@@ -4118,7 +4130,7 @@ msgstr "Telefonnummer for SMS"
#. TRANS: SMS phone number input field instructions in SMS settings form.
#: actions/smssettings.php:156
msgid "Phone number, no punctuation or spaces, with area code"
-msgstr ""
+msgstr "Telefonnummer, ingen tegnsetting eller mellomrom, med retningsnummer"
#. TRANS: Form legend for SMS preferences form.
#: actions/smssettings.php:195
@@ -4279,7 +4291,8 @@ msgstr "Innstillinger for IM"
msgid "You are not subscribed to that profile."
msgstr ""
-#: actions/subedit.php:83 classes/Subscription.php:132
+#. TRANS: Exception thrown when a subscription could not be stored on the server.
+#: actions/subedit.php:83 classes/Subscription.php:136
#, fuzzy
msgid "Could not save subscription."
msgstr "Klarte ikke å lagre avatar-informasjonen"
@@ -4404,9 +4417,9 @@ msgid "No ID argument."
msgstr ""
#: actions/tagother.php:65
-#, fuzzy, php-format
+#, php-format
msgid "Tag %s"
-msgstr "Tagger"
+msgstr "Merk %s"
#: actions/tagother.php:77 lib/userprofile.php:76
msgid "User profile"
@@ -4418,9 +4431,8 @@ msgid "Photo"
msgstr "Foto"
#: actions/tagother.php:141
-#, fuzzy
msgid "Tag user"
-msgstr "Tagger"
+msgstr "Merk bruker"
#: actions/tagother.php:151
msgid ""
@@ -4445,10 +4457,6 @@ msgstr ""
msgid "No such tag."
msgstr ""
-#: actions/twitapitrends.php:85
-msgid "API method under construction."
-msgstr "API-metode under utvikling."
-
#: actions/unblock.php:59
msgid "You haven't blocked that user."
msgstr "Du har ikke blokkert den brukeren."
@@ -4738,153 +4746,249 @@ msgstr "Versjon"
msgid "Author(s)"
msgstr "Forfatter(e)"
-#: classes/File.php:185
+#. TRANS: Server exception thrown when a URL cannot be processed.
+#: classes/File.php:143
+#, php-format
+msgid "Cannot process URL '%s'"
+msgstr ""
+
+#. TRANS: Server exception thrown when... Robin thinks something is impossible!
+#: classes/File.php:175
+msgid "Robin thinks something is impossible."
+msgstr ""
+
+#. TRANS: Message given if an upload is larger than the configured maximum.
+#. TRANS: %1$d is the byte limit for uploads, %2$d is the byte count for the uploaded file.
+#: classes/File.php:190
#, php-format
msgid ""
-"No file may be larger than %d bytes and the file you sent was %d bytes. Try "
-"to upload a smaller version."
+"No file may be larger than %1$d bytes and the file you sent was %2$d bytes. "
+"Try to upload a smaller version."
msgstr ""
-#: classes/File.php:195
+#. TRANS: Message given if an upload would exceed user quota.
+#. TRANS: %d (number) is the user quota in bytes.
+#: classes/File.php:202
#, php-format
msgid "A file this large would exceed your user quota of %d bytes."
msgstr ""
-#: classes/File.php:202
+#. TRANS: Message given id an upload would exceed a user's monthly quota.
+#. TRANS: $d (number) is the monthly user quota in bytes.
+#: classes/File.php:211
#, php-format
msgid "A file this large would exceed your monthly quota of %d bytes."
msgstr ""
-#: classes/Group_member.php:41
+#. TRANS: Client exception thrown if a file upload does not have a valid name.
+#: classes/File.php:248 classes/File.php:263
+msgid "Invalid filename."
+msgstr "Ugyldig filnavn."
+
+#. TRANS: Exception thrown when joining a group fails.
+#: classes/Group_member.php:42
#, fuzzy
msgid "Group join failed."
msgstr "Klarte ikke å lagre profil."
-#: classes/Group_member.php:53
+#. TRANS: Exception thrown when trying to leave a group the user is not a member of.
+#: classes/Group_member.php:55
#, fuzzy
msgid "Not part of group."
msgstr "Klarte ikke å oppdatere bruker."
-#: classes/Group_member.php:60
+#. TRANS: Exception thrown when trying to leave a group fails.
+#: classes/Group_member.php:63
#, fuzzy
msgid "Group leave failed."
msgstr "Klarte ikke å lagre profil."
-#: classes/Local_group.php:41
+#. TRANS: Server exception thrown when updating a local group fails.
+#: classes/Local_group.php:42
#, fuzzy
msgid "Could not update local group."
msgstr "Kunne ikke oppdatere gruppe."
-#: classes/Login_token.php:76
+#. TRANS: Exception thrown when trying creating a login token failed.
+#. TRANS: %s is the user nickname for which token creation failed.
+#: classes/Login_token.php:78
#, fuzzy, php-format
msgid "Could not create login token for %s"
msgstr "Klarte ikke å lagre avatar-informasjonen"
-#: classes/Message.php:45
+#. TRANS: Exception thrown when database name or Data Source Name could not be found.
+#: classes/Memcached_DataObject.php:533
+msgid "No database name or DSN found anywhere."
+msgstr ""
+
+#. TRANS: Client exception thrown when a user tries to send a direct message while being banned from sending them.
+#: classes/Message.php:46
msgid "You are banned from sending direct messages."
msgstr ""
-#: classes/Message.php:61
+#. TRANS: Message given when a message could not be stored on the server.
+#: classes/Message.php:63
msgid "Could not insert message."
msgstr "Kunne ikke sette inn melding."
-#: classes/Message.php:71
+#. TRANS: Message given when a message could not be updated on the server.
+#: classes/Message.php:74
msgid "Could not update message with new URI."
msgstr "Kunne ikke oppdatere melding med ny nettadresse."
+#. TRANS: Server exception thrown when a user profile for a notice cannot be found.
+#. TRANS: %1$d is a profile ID (number), %2$d is a notice ID (number).
+#: classes/Notice.php:98
+#, php-format
+msgid "No such profile (%1$d) for notice (%2$d)."
+msgstr ""
+
#. TRANS: Server exception. %s are the error details.
-#: classes/Notice.php:182
+#: classes/Notice.php:190
#, fuzzy, php-format
msgid "Database error inserting hashtag: %s"
msgstr "Databasefeil ved innsetting av bruker i programmet OAuth."
-#: classes/Notice.php:251
+#. TRANS: Client exception thrown if a notice contains too many characters.
+#: classes/Notice.php:260
msgid "Problem saving notice. Too long."
msgstr "Problem ved lagring av notis. For lang."
-#: classes/Notice.php:255
+#. TRANS: Client exception thrown when trying to save a notice for an unknown user.
+#: classes/Notice.php:265
msgid "Problem saving notice. Unknown user."
msgstr "Problem ved lagring av notis. Ukjent bruker."
-#: classes/Notice.php:260
+#. TRANS: Client exception thrown when a user tries to post too many notices in a given time frame.
+#: classes/Notice.php:271
msgid ""
"Too many notices too fast; take a breather and post again in a few minutes."
msgstr ""
-#: classes/Notice.php:266
+#. TRANS: Client exception thrown when a user tries to post too many duplicate notices in a given time frame.
+#: classes/Notice.php:278
msgid ""
"Too many duplicate messages too quickly; take a breather and post again in a "
"few minutes."
msgstr ""
-#: classes/Notice.php:272
+#. TRANS: Client exception thrown when a user tries to post while being banned.
+#: classes/Notice.php:286
msgid "You are banned from posting notices on this site."
msgstr ""
-#: classes/Notice.php:338 classes/Notice.php:364
+#. TRANS: Server exception thrown when a notice cannot be saved.
+#. TRANS: Server exception thrown when a notice cannot be updated.
+#: classes/Notice.php:353 classes/Notice.php:380
msgid "Problem saving notice."
msgstr "Problem ved lagring av notis."
-#: classes/Notice.php:973
+#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups().
+#: classes/Notice.php:892
+msgid "Bad type provided to saveKnownGroups"
+msgstr ""
+
+#. TRANS: Server exception thrown when an update for a group inbox fails.
+#: classes/Notice.php:991
msgid "Problem saving group inbox."
msgstr "Problem ved lagring av gruppeinnboks."
#. TRANS: Message used to repeat a notice. RT is the abbreviation of 'retweet'.
#. TRANS: %1$s is the repeated user's name, %2$s is the repeated notice.
-#: classes/Notice.php:1564
+#: classes/Notice.php:1614
#, php-format
msgid "RT @%1$s %2$s"
msgstr "RT @%1$s %2$s"
-#: classes/Subscription.php:74 lib/oauthstore.php:465
+#. TRANS: Exception thrown when trying to revoke an existing role for a user that does not exist.
+#. TRANS: %1$s is the role name, %2$s is the user ID (number).
+#: classes/Profile.php:740
+#, php-format
+msgid "Cannot revoke role \"%1$s\" for user #%2$d; does not exist."
+msgstr ""
+
+#. TRANS: Exception thrown when trying to revoke a role for a user with a failing database query.
+#. TRANS: %1$s is the role name, %2$s is the user ID (number).
+#: classes/Profile.php:749
+#, php-format
+msgid "Cannot revoke role \"%1$s\" for user #%2$d; database error."
+msgstr ""
+
+#. TRANS: Exception thrown when a right for a non-existing user profile is checked.
+#: classes/Remote_profile.php:54
+#, fuzzy
+msgid "Missing profile."
+msgstr "Brukeren har ingen profil."
+
+#. TRANS: Exception thrown when a tag cannot be saved.
+#: classes/Status_network.php:346
+#, fuzzy
+msgid "Unable to save tag."
+msgstr "Kunne ikke lagre nettstedsnotis."
+
+#. TRANS: Exception thrown when trying to subscribe while being banned from subscribing.
+#: classes/Subscription.php:75 lib/oauthstore.php:465
msgid "You have been banned from subscribing."
msgstr ""
-#: classes/Subscription.php:78
+#. TRANS: Exception thrown when trying to subscribe while already subscribed.
+#: classes/Subscription.php:80
msgid "Already subscribed!"
msgstr ""
-#: classes/Subscription.php:82
+#. TRANS: Exception thrown when trying to subscribe to a user who has blocked the subscribing user.
+#: classes/Subscription.php:85
msgid "User has blocked you."
msgstr "Bruker har blokkert deg."
-#: classes/Subscription.php:167
+#. TRANS: Exception thrown when trying to unsibscribe without a subscription.
+#: classes/Subscription.php:171
#, fuzzy
msgid "Not subscribed!"
msgstr "Alle abonnementer"
-#: classes/Subscription.php:173
+#. TRANS: Exception thrown when trying to unsubscribe a user from themselves.
+#: classes/Subscription.php:178
#, fuzzy
-msgid "Couldn't delete self-subscription."
+msgid "Could not delete self-subscription."
msgstr "Klarte ikke å lagre avatar-informasjonen"
-#: classes/Subscription.php:200
+#. TRANS: Exception thrown when the OMB token for a subscription could not deleted on the server.
+#: classes/Subscription.php:206
#, fuzzy
-msgid "Couldn't delete subscription OMB token."
+msgid "Could not delete subscription OMB token."
msgstr "Klarte ikke å lagre avatar-informasjonen"
-#: classes/Subscription.php:211
-msgid "Couldn't delete subscription."
-msgstr ""
+#. TRANS: Exception thrown when a subscription could not be deleted on the server.
+#: classes/Subscription.php:218
+#, fuzzy
+msgid "Could not delete subscription."
+msgstr "Klarte ikke å lagre avatar-informasjonen"
-#: classes/User.php:363
+#. TRANS: Notice given on user registration.
+#. TRANS: %1$s is the sitename, $2$s is the registering user's nickname.
+#: classes/User.php:365
#, php-format
msgid "Welcome to %1$s, @%2$s!"
msgstr "Velkommen til %1$s, @%2$s."
-#: classes/User_group.php:480
+#. TRANS: Server exception thrown when creating a group failed.
+#: classes/User_group.php:496
msgid "Could not create group."
msgstr "Kunne ikke opprette gruppe."
-#: classes/User_group.php:489
+#. TRANS: Server exception thrown when updating a group URI failed.
+#: classes/User_group.php:506
msgid "Could not set group URI."
msgstr "Kunne ikke stille inn gruppe-URI."
-#: classes/User_group.php:510
+#. TRANS: Server exception thrown when setting group membership failed.
+#: classes/User_group.php:529
msgid "Could not set group membership."
msgstr "Kunne ikke stille inn gruppemedlemskap."
-#: classes/User_group.php:524
+#. TRANS: Server exception thrown when saving local group information failed.
+#: classes/User_group.php:544
msgid "Could not save local group info."
msgstr "Kunne ikke lagre lokal gruppeinformasjon."
@@ -6304,7 +6408,7 @@ msgstr ""
"engasjere andre brukere i en samtale. Personer kan sende deg meldinger som "
"bare du kan se."
-#: lib/mailbox.php:227 lib/noticelist.php:497
+#: lib/mailbox.php:227 lib/noticelist.php:505
msgid "from"
msgstr "fra"
@@ -6359,24 +6463,24 @@ msgstr ""
msgid "File upload stopped by extension."
msgstr "Filopplasting stoppet grunnet filendelse."
-#: lib/mediafile.php:179 lib/mediafile.php:216
+#: lib/mediafile.php:179 lib/mediafile.php:217
msgid "File exceeds user's quota."
msgstr "Fil overgår brukers kvote."
-#: lib/mediafile.php:196 lib/mediafile.php:233
+#: lib/mediafile.php:197 lib/mediafile.php:234
msgid "File could not be moved to destination directory."
msgstr "Filen kunne ikke flyttes til målmappen."
-#: lib/mediafile.php:201 lib/mediafile.php:237
+#: lib/mediafile.php:202 lib/mediafile.php:238
msgid "Could not determine file's MIME type."
msgstr "Kunne ikke avgjøre filens MIME-type."
-#: lib/mediafile.php:270
+#: lib/mediafile.php:318
#, php-format
msgid " Try using another %s format."
msgstr " Prøv å bruke et annet %s-format."
-#: lib/mediafile.php:275
+#: lib/mediafile.php:323
#, php-format
msgid "%s is not a supported file type on this server."
msgstr "filtypen %s støttes ikke på denne tjeneren."
@@ -6432,51 +6536,51 @@ msgstr ""
"igjen senere"
#. TRANS: Used in coordinates as abbreviation of north
-#: lib/noticelist.php:430
+#: lib/noticelist.php:436
msgid "N"
msgstr "N"
#. TRANS: Used in coordinates as abbreviation of south
-#: lib/noticelist.php:432
+#: lib/noticelist.php:438
msgid "S"
msgstr "S"
#. TRANS: Used in coordinates as abbreviation of east
-#: lib/noticelist.php:434
+#: lib/noticelist.php:440
msgid "E"
msgstr "Ø"
#. TRANS: Used in coordinates as abbreviation of west
-#: lib/noticelist.php:436
+#: lib/noticelist.php:442
msgid "W"
msgstr "V"
-#: lib/noticelist.php:438
+#: lib/noticelist.php:444
#, php-format
msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
msgstr "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
-#: lib/noticelist.php:447
+#: lib/noticelist.php:453
msgid "at"
msgstr "på"
-#: lib/noticelist.php:559
+#: lib/noticelist.php:567
msgid "in context"
msgstr ""
-#: lib/noticelist.php:594
+#: lib/noticelist.php:602
msgid "Repeated by"
msgstr "Repetert av"
-#: lib/noticelist.php:621
+#: lib/noticelist.php:629
msgid "Reply to this notice"
msgstr "Svar på denne notisen"
-#: lib/noticelist.php:622
+#: lib/noticelist.php:630
msgid "Reply"
msgstr "Svar"
-#: lib/noticelist.php:666
+#: lib/noticelist.php:674
msgid "Notice repeated"
msgstr "Notis repetert"
@@ -6737,9 +6841,8 @@ msgid "This server cannot handle theme uploads without ZIP support."
msgstr ""
#: lib/themeuploader.php:58 lib/themeuploader.php:61
-#, fuzzy
-msgid "Theme upload missing or failed."
-msgstr "Systemfeil ved opplasting av fil."
+msgid "The theme file is missing or the upload failed."
+msgstr ""
#: lib/themeuploader.php:91 lib/themeuploader.php:102
#: lib/themeuploader.php:253 lib/themeuploader.php:257
diff --git a/locale/nl/LC_MESSAGES/statusnet.po b/locale/nl/LC_MESSAGES/statusnet.po
index a69a7c7ea..c98e1d84a 100644
--- a/locale/nl/LC_MESSAGES/statusnet.po
+++ b/locale/nl/LC_MESSAGES/statusnet.po
@@ -1,5 +1,6 @@
# Translation of StatusNet to Dutch
#
+# Author@translatewiki.net: Brion
# Author@translatewiki.net: Itavero
# Author@translatewiki.net: McDutchie
# Author@translatewiki.net: Siebrand
@@ -10,12 +11,12 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-06-16 22:18+0000\n"
-"PO-Revision-Date: 2010-06-21 18:04:39+0000\n"
+"POT-Creation-Date: 2010-08-03 13:21+0000\n"
+"PO-Revision-Date: 2010-08-03 13:22:19+0000\n"
"Language-Team: Dutch\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.17alpha (r68367); Translate extension (2010-06-12)\n"
+"X-Generator: MediaWiki 1.17alpha (r70381); Translate extension (2010-07-21)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: nl\n"
"X-Message-Group: out-statusnet\n"
@@ -99,7 +100,7 @@ msgstr "Deze pagina bestaat niet."
#: actions/apidirectmessagenew.php:74 actions/apigroupcreate.php:113
#: actions/apigroupismember.php:91 actions/apigroupjoin.php:100
#: actions/apigroupleave.php:100 actions/apigrouplist.php:73
-#: actions/apistatusesupdate.php:228 actions/apisubscriptions.php:87
+#: actions/apistatusesupdate.php:229 actions/apisubscriptions.php:87
#: actions/apitimelinefavorites.php:72 actions/apitimelinefriends.php:174
#: actions/apitimelinehome.php:80 actions/apitimelinementions.php:80
#: actions/apitimelineuser.php:82 actions/avatarbynickname.php:75
@@ -170,10 +171,10 @@ msgstr ""
#: actions/all.php:146
#, 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)."
+"You can try to [nudge %1$s](../%2$s) from their profile or [post something "
+"to them](%%%%action.newnotice%%%%?status_textarea=%3$s)."
msgstr ""
-"U kunt proberen [%1$s te porren](../%2$s) op de eigen profielpagina of [een "
+"U kunt proberen [%1$s te porren](../%2$s) op de eigen profielpagina of [een "
"bericht voor die gebruiker plaatsen](%%%%action.newnotice%%%%?"
"status_textarea=%3$s)."
@@ -181,7 +182,7 @@ msgstr ""
#, php-format
msgid ""
"Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
-"post a notice to his or her attention."
+"post a notice to them."
msgstr ""
"U kunt een [gebruiker aanmaken](%%%%action.register%%%%) en %s dan porren of "
"een bericht sturen."
@@ -216,7 +217,7 @@ msgstr "Updates van %1$s en vrienden op %2$s."
#: actions/apistatusesshow.php:109 actions/apistatusnetconfig.php:141
#: actions/apistatusnetversion.php:93 actions/apisubscriptions.php:111
#: actions/apitimelinefavorites.php:174 actions/apitimelinefriends.php:271
-#: actions/apitimelinegroup.php:152 actions/apitimelinehome.php:175
+#: actions/apitimelinegroup.php:154 actions/apitimelinehome.php:175
#: actions/apitimelinementions.php:174 actions/apitimelinepublic.php:241
#: actions/apitimelineretweetedtome.php:121
#: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161
@@ -266,7 +267,7 @@ msgstr "Het was niet mogelijk het profiel op te slaan."
#: actions/apiaccountupdateprofilebackgroundimage.php:108
#: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80
-#: actions/apistatusesupdate.php:211 actions/avatarsettings.php:257
+#: actions/apistatusesupdate.php:212 actions/avatarsettings.php:257
#: actions/designadminpanel.php:123 actions/editapplication.php:118
#: actions/newapplication.php:101 actions/newnotice.php:94
#: lib/designsettings.php:283
@@ -367,7 +368,7 @@ msgstr ""
"Het was niet mogelijk deze mededeling van uw favorietenlijst te verwijderen."
#: actions/apifriendshipscreate.php:109
-msgid "Could not follow user: User not found."
+msgid "Could not follow user: profile not found."
msgstr "U kunt deze gebruiker niet volgen, omdat deze niet bestaat."
#: actions/apifriendshipscreate.php:118
@@ -385,9 +386,10 @@ msgstr ""
msgid "You cannot unfollow yourself."
msgstr "U kunt het abonnement op uzelf niet opzeggen."
-#: actions/apifriendshipsexists.php:94
-msgid "Two user ids or screen_names must be supplied."
-msgstr "Er moeten twee gebruikersnamen of ID's opgegeven worden."
+#: actions/apifriendshipsexists.php:91
+msgid "Two valid IDs or screen_names must be supplied."
+msgstr ""
+"Er moeten twee gebruikersnamen (screen_names) of ID's opgegeven worden."
#: actions/apifriendshipsshow.php:134
msgid "Could not determine source user."
@@ -517,6 +519,10 @@ msgstr "%s groepen"
msgid "groups on %s"
msgstr "groepen op %s"
+#: actions/apimediaupload.php:99
+msgid "Upload failed."
+msgstr "Uploaden is mislukt."
+
#: actions/apioauthauthorize.php:101
msgid "No oauth_token parameter provided."
msgstr "Er is geen oauth_token parameter opgegeven."
@@ -666,24 +672,28 @@ msgstr "De status is verwijderd."
msgid "No status with that ID found."
msgstr "Er is geen status gevonden met dit ID."
-#: actions/apistatusesupdate.php:241 actions/newnotice.php:155
+#: actions/apistatusesupdate.php:221
+msgid "Client must provide a 'status' parameter with a value."
+msgstr "De client moet een parameter \"status\" met een waarde opgeven."
+
+#: actions/apistatusesupdate.php:242 actions/newnotice.php:155
#: lib/mailhandler.php:60
#, php-format
msgid "That's too long. Max notice size is %d chars."
msgstr "De mededeling is te lang. Gebruik maximaal %d tekens."
-#: actions/apistatusesupdate.php:282 actions/apiusershow.php:96
+#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96
msgid "Not found."
msgstr "Niet aangetroffen."
-#: actions/apistatusesupdate.php:305 actions/newnotice.php:178
+#: actions/apistatusesupdate.php:306 actions/newnotice.php:178
#, php-format
msgid "Max notice size is %d chars, including attachment URL."
msgstr ""
"De maximale mededelingenlengte is %d tekens, inclusief de URL voor de "
"bijlage."
-#: actions/apisubscriptions.php:231 actions/apisubscriptions.php:261
+#: actions/apisubscriptions.php:232 actions/apisubscriptions.php:262
msgid "Unsupported format."
msgstr "Niet-ondersteund bestandsformaat."
@@ -737,6 +747,10 @@ msgstr "Mededelingen met het label %s"
msgid "Updates tagged with %1$s on %2$s!"
msgstr "Updates met het label %1$s op %2$s!"
+#: actions/apitrends.php:87
+msgid "API method under construction."
+msgstr "De API-functie is in bewerking."
+
#: actions/attachment.php:73
msgid "No such attachment."
msgstr "Deze bijlage bestaat niet."
@@ -790,7 +804,7 @@ msgid "Preview"
msgstr "Voorvertoning"
#: actions/avatarsettings.php:149 actions/showapplication.php:252
-#: lib/deleteuserform.php:66 lib/noticelist.php:648
+#: lib/deleteuserform.php:66 lib/noticelist.php:656
msgid "Delete"
msgstr "Verwijderen"
@@ -1072,7 +1086,7 @@ msgid "Do not delete this notice"
msgstr "Deze mededeling niet verwijderen"
#. TRANS: Submit button title for 'Yes' when deleting a notice.
-#: actions/deletenotice.php:158 lib/noticelist.php:648
+#: actions/deletenotice.php:158 lib/noticelist.php:656
msgid "Delete this notice"
msgstr "Deze mededeling verwijderen"
@@ -1351,7 +1365,8 @@ msgstr "Ongeldige alias: \"%s\""
msgid "Could not update group."
msgstr "Het was niet mogelijk de groep bij te werken."
-#: actions/editgroup.php:264 classes/User_group.php:496
+#. TRANS: Server exception thrown when creating group aliases failed.
+#: actions/editgroup.php:264 classes/User_group.php:514
msgid "Could not create aliases."
msgstr "Het was niet mogelijk de aliassen aan te maken."
@@ -2519,10 +2534,9 @@ msgstr "Updates die overeenkomen met de zoekterm \"%1$s\" op %2$s."
#: actions/nudge.php:85
msgid ""
-"This user doesn't allow nudges or hasn't confirmed or set his email yet."
+"This user doesn't allow nudges or hasn't confirmed or set their email yet."
msgstr ""
-"Deze gebruiker is niet te porren of heeft zijn e-mailadres nog niet "
-"bevestigd."
+"Deze gebruiker is niet te porren of heeft nog geen bevestigd e-mailadres."
#: actions/nudge.php:94
msgid "Nudge sent"
@@ -2603,8 +2617,8 @@ msgid "Only %s URLs over plain HTTP please."
msgstr "Alleen URL's voor %s via normale HTTP alstublieft."
#. TRANS: Client error on an API request with an unsupported data format.
-#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1179
-#: lib/apiaction.php:1208 lib/apiaction.php:1325
+#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1204
+#: lib/apiaction.php:1232 lib/apiaction.php:1355
msgid "Not a supported data format."
msgstr "Geen ondersteund gegevensformaat."
@@ -3523,7 +3537,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:667
+#: actions/repeat.php:114 lib/noticelist.php:675
msgid "Repeated"
msgstr "Herhaald"
@@ -3561,9 +3575,9 @@ msgstr "Antwoordenfeed voor %s (Atom)"
#, php-format
msgid ""
"This is the timeline showing replies to %1$s but %2$s hasn't received a "
-"notice to his attention yet."
+"notice to them yet."
msgstr ""
-"Dit is de tijdlijn met de antwoorden aan %1$s, maar %2$s heeft nog geen "
+"Dit is de tijdlijn met antwoorden aan %1$s, maar %2$s heeft nog geen "
"antwoorden ontvangen."
#: actions/replies.php:204
@@ -3578,8 +3592,8 @@ msgstr ""
#: actions/replies.php:206
#, php-format
msgid ""
-"You can try to [nudge %1$s](../%2$s) or [post something to his or her "
-"attention](%%%%action.newnotice%%%%?status_textarea=%3$s)."
+"You can try to [nudge %1$s](../%2$s) or [post something to them](%%%%action."
+"newnotice%%%%?status_textarea=%3$s)."
msgstr ""
"U kunt proberen [%1$s te porren](../%2$s) of [een bericht voor die gebruiker "
"plaatsen](%%%%action.newnotice%%%%?status_textarea=%3$s)."
@@ -3670,7 +3684,7 @@ msgstr "Organisatie"
msgid "Description"
msgstr "Beschrijving"
-#: actions/showapplication.php:192 actions/showgroup.php:444
+#: actions/showapplication.php:192 actions/showgroup.php:436
#: lib/profileaction.php:187
msgid "Statistics"
msgstr "Statistieken"
@@ -3761,22 +3775,22 @@ msgstr ""
#: actions/showfavorites.php:208
#, php-format
msgid ""
-"%s hasn't added any notices to his favorites yet. Post something interesting "
-"they would add to their favorites :)"
+"%s hasn't added any favorite notices yet. Post something interesting they "
+"would add to their favorites :)"
msgstr ""
-"%s heeff nog geen mededelingen op de eigen favorietenlijst geplaatst. Plaats "
+"%s heeft nog geen mededelingen op de eigen favorietenlijst geplaatst. Plaats "
"een interessant bericht, en dan komt u misschien wel op de "
"favorietenlijst. :)"
#: actions/showfavorites.php:212
#, php-format
msgid ""
-"%s hasn't added any notices to his favorites yet. Why not [register an "
-"account](%%%%action.register%%%%) and then post something interesting they "
-"would add to their favorites :)"
+"%s hasn't added any favorite notices yet. Why not [register an account](%%%%"
+"action.register%%%%) and then post something interesting they would add to "
+"their favorites :)"
msgstr ""
-"%s heeft nog geen favorietenlijst. U kunt een [gebruiker registeren](%%%%"
-"action.register%%%%) en dan interessante mededelingen plaatsten die "
+"%s heeft nog geen favoriete mededelingen. U kunt een [gebruiker registeren](%"
+"%%%action.register%%%%) en dan interessante mededelingen plaatsten die "
"misschien aan favorietenlijsten zijn toe te voegen. :)"
#: actions/showfavorites.php:243
@@ -3835,7 +3849,7 @@ msgstr "Mededelingenfeed voor groep %s (Atom)"
msgid "FOAF for %s group"
msgstr "Vriend van een vriend voor de groep %s"
-#: actions/showgroup.php:393 actions/showgroup.php:453 lib/groupnav.php:91
+#: actions/showgroup.php:393 actions/showgroup.php:445 lib/groupnav.php:91
msgid "Members"
msgstr "Leden"
@@ -3849,11 +3863,11 @@ msgstr "(geen)"
msgid "All members"
msgstr "Alle leden"
-#: actions/showgroup.php:447
+#: actions/showgroup.php:439
msgid "Created"
msgstr "Aangemaakt"
-#: actions/showgroup.php:463
+#: actions/showgroup.php:455
#, php-format
msgid ""
"**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3869,7 +3883,7 @@ msgstr ""
"lid te worden van deze groep en nog veel meer! [Meer lezen...](%%%%doc.help%%"
"%%)"
-#: actions/showgroup.php:469
+#: actions/showgroup.php:461
#, php-format
msgid ""
"**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3882,7 +3896,7 @@ msgstr ""
"[StatusNet](http://status.net/). De leden wisselen korte mededelingen uit "
"over hun ervaringen en interesses. "
-#: actions/showgroup.php:497
+#: actions/showgroup.php:489
msgid "Admins"
msgstr "Beheerders"
@@ -3960,11 +3974,11 @@ msgstr ""
#: 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)."
+"You can try to nudge %1$s or [post something to them](%%%%action.newnotice%%%"
+"%?status_textarea=%2$s)."
msgstr ""
-"U kunt proberen %1$s te porren of [een bericht voor die gebruiker plaatsen](%"
-"%%%action.newnotice%%%%?status_textarea=%2$s)."
+"U kunt proberen %1$s te porren of [een bericht aan die gebruiker sturen](%%%%"
+"action.newnotice%%%%?status_textarea=%2$s)."
#: actions/showstream.php:243
#, php-format
@@ -4357,7 +4371,8 @@ msgstr "Snapshotinstellingen opslaan"
msgid "You are not subscribed to that profile."
msgstr "U bent niet geabonneerd op dat profiel."
-#: actions/subedit.php:83 classes/Subscription.php:132
+#. TRANS: Exception thrown when a subscription could not be stored on the server.
+#: actions/subedit.php:83 classes/Subscription.php:136
msgid "Could not save subscription."
msgstr "Het was niet mogelijk het abonnement op te slaan."
@@ -4539,10 +4554,6 @@ msgstr ""
msgid "No such tag."
msgstr "Onbekend label."
-#: actions/twitapitrends.php:85
-msgid "API method under construction."
-msgstr "De API-functie is in bewerking."
-
#: actions/unblock.php:59
msgid "You haven't blocked that user."
msgstr "U hebt deze gebruiker niet geblokkeerd."
@@ -4802,7 +4813,7 @@ msgid ""
"This site is powered by %1$s version %2$s, Copyright 2008-2010 StatusNet, "
"Inc. and contributors."
msgstr ""
-"Deze website wordt aangedreven door %1$2 versie %2$s. Auteursrechten "
+"Deze website wordt aangedreven door %1$s versie %2$s. Auteursrechten "
"voorbehouden 2008-2010 Statusnet, Inc. en medewerkers."
#: actions/version.php:163
@@ -4855,86 +4866,133 @@ msgstr "Versie"
msgid "Author(s)"
msgstr "Auteur(s)"
-#: classes/File.php:185
+#. TRANS: Server exception thrown when a URL cannot be processed.
+#: classes/File.php:143
+#, php-format
+msgid "Cannot process URL '%s'"
+msgstr "Het was niet mogelijk de URL \"%s\" te verwerken."
+
+#. TRANS: Server exception thrown when... Robin thinks something is impossible!
+#: classes/File.php:175
+msgid "Robin thinks something is impossible."
+msgstr "Robin denkt dat iets onmogelijk is."
+
+#. TRANS: Message given if an upload is larger than the configured maximum.
+#. TRANS: %1$d is the byte limit for uploads, %2$d is the byte count for the uploaded file.
+#: classes/File.php:190
#, php-format
msgid ""
-"No file may be larger than %d bytes and the file you sent was %d bytes. Try "
-"to upload a smaller version."
+"No file may be larger than %1$d bytes and the file you sent was %2$d bytes. "
+"Try to upload a smaller version."
msgstr ""
-"Bestanden mogen niet groter zijn dan %d bytes, en uw bestand was %d bytes. "
-"Probeer een kleinere versie te uploaden."
+"Bestanden mogen niet groter zijn dan %1$d bytes, en uw bestand was %2$d "
+"bytes. Probeer een kleinere versie te uploaden."
-#: classes/File.php:195
+#. TRANS: Message given if an upload would exceed user quota.
+#. TRANS: %d (number) is the user quota in bytes.
+#: classes/File.php:202
#, php-format
msgid "A file this large would exceed your user quota of %d bytes."
msgstr ""
"Een bestand van deze grootte overschijdt uw gebruikersquota van %d bytes."
-#: classes/File.php:202
+#. TRANS: Message given id an upload would exceed a user's monthly quota.
+#. TRANS: $d (number) is the monthly user quota in bytes.
+#: classes/File.php:211
#, php-format
msgid "A file this large would exceed your monthly quota of %d bytes."
msgstr ""
"Een bestand van deze grootte overschijdt uw maandelijkse quota van %d bytes."
-#: classes/Group_member.php:41
+#. TRANS: Client exception thrown if a file upload does not have a valid name.
+#: classes/File.php:248 classes/File.php:263
+msgid "Invalid filename."
+msgstr "Ongeldig bestandsnaam."
+
+#. TRANS: Exception thrown when joining a group fails.
+#: classes/Group_member.php:42
msgid "Group join failed."
msgstr "Groepslidmaatschap toevoegen is mislukt."
-#: classes/Group_member.php:53
+#. TRANS: Exception thrown when trying to leave a group the user is not a member of.
+#: classes/Group_member.php:55
msgid "Not part of group."
msgstr "Geen lid van groep."
-#: classes/Group_member.php:60
+#. TRANS: Exception thrown when trying to leave a group fails.
+#: classes/Group_member.php:63
msgid "Group leave failed."
msgstr "Groepslidmaatschap opzeggen is mislukt."
-#: classes/Local_group.php:41
+#. TRANS: Server exception thrown when updating a local group fails.
+#: classes/Local_group.php:42
msgid "Could not update local group."
msgstr "Het was niet mogelijk de lokale groep bij te werken."
-#: classes/Login_token.php:76
+#. TRANS: Exception thrown when trying creating a login token failed.
+#. TRANS: %s is the user nickname for which token creation failed.
+#: classes/Login_token.php:78
#, php-format
msgid "Could not create login token for %s"
msgstr "Het was niet mogelijk een aanmeldtoken aan te maken voor %s"
-#: classes/Message.php:45
+#. TRANS: Exception thrown when database name or Data Source Name could not be found.
+#: classes/Memcached_DataObject.php:533
+msgid "No database name or DSN found anywhere."
+msgstr "Geen databasenaam of DSN gevonden."
+
+#. TRANS: Client exception thrown when a user tries to send a direct message while being banned from sending them.
+#: classes/Message.php:46
msgid "You are banned from sending direct messages."
msgstr "U mag geen directe berichten verzenden."
-#: classes/Message.php:61
+#. TRANS: Message given when a message could not be stored on the server.
+#: classes/Message.php:63
msgid "Could not insert message."
msgstr "Het was niet mogelijk het bericht in te voegen."
-#: classes/Message.php:71
+#. TRANS: Message given when a message could not be updated on the server.
+#: classes/Message.php:74
msgid "Could not update message with new URI."
msgstr "Het was niet mogelijk het bericht bij te werken met de nieuwe URI."
+#. TRANS: Server exception thrown when a user profile for a notice cannot be found.
+#. TRANS: %1$d is a profile ID (number), %2$d is a notice ID (number).
+#: classes/Notice.php:98
+#, php-format
+msgid "No such profile (%1$d) for notice (%2$d)."
+msgstr "Er is geen profiel (%1$d) te vinden bij de mededeling (%2$d)."
+
#. TRANS: Server exception. %s are the error details.
-#: classes/Notice.php:182
+#: classes/Notice.php:190
#, php-format
msgid "Database error inserting hashtag: %s"
msgstr "Er is een databasefout opgetreden bij de invoer van de hashtag: %s"
-#: classes/Notice.php:251
+#. TRANS: Client exception thrown if a notice contains too many characters.
+#: classes/Notice.php:260
msgid "Problem saving notice. Too long."
msgstr ""
"Er is een probleem opgetreden bij het opslaan van de mededeling. Deze is te "
"lang."
-#: classes/Notice.php:255
+#. TRANS: Client exception thrown when trying to save a notice for an unknown user.
+#: classes/Notice.php:265
msgid "Problem saving notice. Unknown user."
msgstr ""
"Er was een probleem bij het opslaan van de mededeling. De gebruiker is "
"onbekend."
-#: classes/Notice.php:260
+#. TRANS: Client exception thrown when a user tries to post too many notices in a given time frame.
+#: classes/Notice.php:271
msgid ""
"Too many notices too fast; take a breather and post again in a few minutes."
msgstr ""
"U hebt te snel te veel mededelingen verstuurd. Kom even op adem en probeer "
"het over enige tijd weer."
-#: classes/Notice.php:266
+#. TRANS: Client exception thrown when a user tries to post too many duplicate notices in a given time frame.
+#: classes/Notice.php:278
msgid ""
"Too many duplicate messages too quickly; take a breather and post again in a "
"few minutes."
@@ -4942,16 +5000,25 @@ msgstr ""
"Te veel duplicaatberichten te snel achter elkaar. Neem een adempauze en "
"plaats over een aantal minuten pas weer een bericht."
-#: classes/Notice.php:272
+#. TRANS: Client exception thrown when a user tries to post while being banned.
+#: classes/Notice.php:286
msgid "You are banned from posting notices on this site."
msgstr ""
"U bent geblokkeerd en mag geen mededelingen meer achterlaten op deze site."
-#: classes/Notice.php:338 classes/Notice.php:364
+#. TRANS: Server exception thrown when a notice cannot be saved.
+#. TRANS: Server exception thrown when a notice cannot be updated.
+#: classes/Notice.php:353 classes/Notice.php:380
msgid "Problem saving notice."
msgstr "Er is een probleem opgetreden bij het opslaan van de mededeling."
-#: classes/Notice.php:973
+#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups().
+#: classes/Notice.php:892
+msgid "Bad type provided to saveKnownGroups"
+msgstr "Het gegevenstype dat is opgegeven aan saveKnownGroups is onjuist"
+
+#. TRANS: Server exception thrown when an update for a group inbox fails.
+#: classes/Notice.php:991
msgid "Problem saving group inbox."
msgstr ""
"Er is een probleem opgetreden bij het opslaan van het Postvak IN van de "
@@ -4959,58 +5026,99 @@ msgstr ""
#. TRANS: Message used to repeat a notice. RT is the abbreviation of 'retweet'.
#. TRANS: %1$s is the repeated user's name, %2$s is the repeated notice.
-#: classes/Notice.php:1564
+#: classes/Notice.php:1614
#, php-format
msgid "RT @%1$s %2$s"
msgstr "RT @%1$s %2$s"
-#: classes/Subscription.php:74 lib/oauthstore.php:465
+#. TRANS: Exception thrown when trying to revoke an existing role for a user that does not exist.
+#. TRANS: %1$s is the role name, %2$s is the user ID (number).
+#: classes/Profile.php:740
+#, php-format
+msgid "Cannot revoke role \"%1$s\" for user #%2$d; does not exist."
+msgstr ""
+"De rol \"%1$s\" voor gebruiker #%2$d kan niet ingetrokken worden. Deze "
+"gebruiker bestaat niet."
+
+#. TRANS: Exception thrown when trying to revoke a role for a user with a failing database query.
+#. TRANS: %1$s is the role name, %2$s is the user ID (number).
+#: classes/Profile.php:749
+#, php-format
+msgid "Cannot revoke role \"%1$s\" for user #%2$d; database error."
+msgstr ""
+"De rol \"%1$s\" voor gebruiker #%2$d kan niet ingetrokken worden. "
+"Databasefout."
+
+#. TRANS: Exception thrown when a right for a non-existing user profile is checked.
+#: classes/Remote_profile.php:54
+msgid "Missing profile."
+msgstr "Ontbrekend profiel."
+
+#. TRANS: Exception thrown when a tag cannot be saved.
+#: classes/Status_network.php:346
+msgid "Unable to save tag."
+msgstr "Het was niet mogelijk om het label op te slaan."
+
+#. TRANS: Exception thrown when trying to subscribe while being banned from subscribing.
+#: classes/Subscription.php:75 lib/oauthstore.php:465
msgid "You have been banned from subscribing."
msgstr "U mag zich niet abonneren."
-#: classes/Subscription.php:78
+#. TRANS: Exception thrown when trying to subscribe while already subscribed.
+#: classes/Subscription.php:80
msgid "Already subscribed!"
msgstr "U bent al gebonneerd!"
-#: classes/Subscription.php:82
+#. TRANS: Exception thrown when trying to subscribe to a user who has blocked the subscribing user.
+#: classes/Subscription.php:85
msgid "User has blocked you."
msgstr "Deze gebruiker negeert u."
-#: classes/Subscription.php:167
+#. TRANS: Exception thrown when trying to unsibscribe without a subscription.
+#: classes/Subscription.php:171
msgid "Not subscribed!"
msgstr "Niet geabonneerd!"
-#: classes/Subscription.php:173
-msgid "Couldn't delete self-subscription."
-msgstr "Het was niet mogelijk het abonnement op uzelf te verwijderen."
+#. TRANS: Exception thrown when trying to unsubscribe a user from themselves.
+#: classes/Subscription.php:178
+msgid "Could not delete self-subscription."
+msgstr "Kon abonnement op eigen gebruiker niet verwijderen."
-#: classes/Subscription.php:200
-msgid "Couldn't delete subscription OMB token."
+#. TRANS: Exception thrown when the OMB token for a subscription could not deleted on the server.
+#: classes/Subscription.php:206
+msgid "Could not delete subscription OMB token."
msgstr ""
"Het was niet mogelijk om het OMB-token voor het abonnement te verwijderen."
-#: classes/Subscription.php:211
-msgid "Couldn't delete subscription."
+#. TRANS: Exception thrown when a subscription could not be deleted on the server.
+#: classes/Subscription.php:218
+msgid "Could not delete subscription."
msgstr "Kon abonnement niet verwijderen."
-#: classes/User.php:363
+#. TRANS: Notice given on user registration.
+#. TRANS: %1$s is the sitename, $2$s is the registering user's nickname.
+#: classes/User.php:365
#, php-format
msgid "Welcome to %1$s, @%2$s!"
msgstr "Welkom bij %1$s, @%2$s!"
-#: classes/User_group.php:480
+#. TRANS: Server exception thrown when creating a group failed.
+#: classes/User_group.php:496
msgid "Could not create group."
msgstr "Het was niet mogelijk de groep aan te maken."
-#: classes/User_group.php:489
+#. TRANS: Server exception thrown when updating a group URI failed.
+#: classes/User_group.php:506
msgid "Could not set group URI."
msgstr "Het was niet mogelijk de groeps-URI in te stellen."
-#: classes/User_group.php:510
+#. TRANS: Server exception thrown when setting group membership failed.
+#: classes/User_group.php:529
msgid "Could not set group membership."
msgstr "Het was niet mogelijk het groepslidmaatschap in te stellen."
-#: classes/User_group.php:524
+#. TRANS: Server exception thrown when saving local group information failed.
+#: classes/User_group.php:544
msgid "Could not save local group info."
msgstr "Het was niet mogelijk de lokale groepsinformatie op te slaan."
@@ -6491,7 +6599,7 @@ msgstr ""
"U hebt geen privéberichten. U kunt privéberichten verzenden aan andere "
"gebruikers. Mensen kunnen u privéberichten sturen die alleen u kunt lezen."
-#: lib/mailbox.php:227 lib/noticelist.php:497
+#: lib/mailbox.php:227 lib/noticelist.php:505
msgid "from"
msgstr "van"
@@ -6552,24 +6660,24 @@ msgstr "Het was niet mogelijk naar schijf te schrijven."
msgid "File upload stopped by extension."
msgstr "Het uploaden van het bestand is tegengehouden door een uitbreiding."
-#: lib/mediafile.php:179 lib/mediafile.php:216
+#: lib/mediafile.php:179 lib/mediafile.php:217
msgid "File exceeds user's quota."
msgstr "Met dit bestand wordt het quotum van de gebruiker overschreden."
-#: lib/mediafile.php:196 lib/mediafile.php:233
+#: lib/mediafile.php:197 lib/mediafile.php:234
msgid "File could not be moved to destination directory."
msgstr "Het bestand kon niet verplaatst worden naar de doelmap."
-#: lib/mediafile.php:201 lib/mediafile.php:237
+#: lib/mediafile.php:202 lib/mediafile.php:238
msgid "Could not determine file's MIME type."
msgstr "Het was niet mogelijk het MIME-type van het bestand te bepalen."
-#: lib/mediafile.php:270
+#: lib/mediafile.php:318
#, php-format
msgid " Try using another %s format."
msgstr " Probeer een ander %s-formaat te gebruiken."
-#: lib/mediafile.php:275
+#: lib/mediafile.php:323
#, php-format
msgid "%s is not a supported file type on this server."
msgstr "Het bestandstype %s wordt door deze server niet ondersteund."
@@ -6625,51 +6733,51 @@ msgstr ""
"nog eens"
#. TRANS: Used in coordinates as abbreviation of north
-#: lib/noticelist.php:430
+#: lib/noticelist.php:436
msgid "N"
msgstr "N"
#. TRANS: Used in coordinates as abbreviation of south
-#: lib/noticelist.php:432
+#: lib/noticelist.php:438
msgid "S"
msgstr "Z"
#. TRANS: Used in coordinates as abbreviation of east
-#: lib/noticelist.php:434
+#: lib/noticelist.php:440
msgid "E"
msgstr "O"
#. TRANS: Used in coordinates as abbreviation of west
-#: lib/noticelist.php:436
+#: lib/noticelist.php:442
msgid "W"
msgstr "W"
-#: lib/noticelist.php:438
+#: lib/noticelist.php:444
#, php-format
msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
msgstr "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
-#: lib/noticelist.php:447
+#: lib/noticelist.php:453
msgid "at"
msgstr "op"
-#: lib/noticelist.php:559
+#: lib/noticelist.php:567
msgid "in context"
msgstr "in context"
-#: lib/noticelist.php:594
+#: lib/noticelist.php:602
msgid "Repeated by"
msgstr "Herhaald door"
-#: lib/noticelist.php:621
+#: lib/noticelist.php:629
msgid "Reply to this notice"
msgstr "Op deze mededeling antwoorden"
-#: lib/noticelist.php:622
+#: lib/noticelist.php:630
msgid "Reply"
msgstr "Antwoorden"
-#: lib/noticelist.php:666
+#: lib/noticelist.php:674
msgid "Notice repeated"
msgstr "Mededeling herhaald"
@@ -6931,8 +7039,8 @@ msgstr ""
"ondersteuning."
#: lib/themeuploader.php:58 lib/themeuploader.php:61
-msgid "Theme upload missing or failed."
-msgstr "Het uploaden van het bestand met de vormgeving is mislukt."
+msgid "The theme file is missing or the upload failed."
+msgstr "Het vormgevingsbestand ontbreekt of is de upload mislukt."
#: lib/themeuploader.php:91 lib/themeuploader.php:102
#: lib/themeuploader.php:253 lib/themeuploader.php:257
@@ -6954,7 +7062,7 @@ msgstr ""
#: lib/themeuploader.php:178
msgid "Invalid theme archive: missing file css/display.css"
msgstr ""
-"Ongeldig bestand met vormgeving: het bestand display.css is niet aanwezig"
+"Ongeldig bestand met vormgeving: het bestand css/display.css is niet aanwezig"
#: lib/themeuploader.php:205
msgid ""
diff --git a/locale/nn/LC_MESSAGES/statusnet.po b/locale/nn/LC_MESSAGES/statusnet.po
index dc166d820..9d1c47205 100644
--- a/locale/nn/LC_MESSAGES/statusnet.po
+++ b/locale/nn/LC_MESSAGES/statusnet.po
@@ -8,12 +8,12 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-06-16 22:18+0000\n"
-"PO-Revision-Date: 2010-06-21 18:04:35+0000\n"
+"POT-Creation-Date: 2010-08-03 13:21+0000\n"
+"PO-Revision-Date: 2010-08-03 13:22:17+0000\n"
"Language-Team: Norwegian Nynorsk\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.17alpha (r68367); Translate extension (2010-06-12)\n"
+"X-Generator: MediaWiki 1.17alpha (r70381); Translate extension (2010-07-21)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: nn\n"
"X-Message-Group: out-statusnet\n"
@@ -106,7 +106,7 @@ msgstr "Dette emneord finst ikkje."
#: actions/apidirectmessagenew.php:74 actions/apigroupcreate.php:113
#: actions/apigroupismember.php:91 actions/apigroupjoin.php:100
#: actions/apigroupleave.php:100 actions/apigrouplist.php:73
-#: actions/apistatusesupdate.php:228 actions/apisubscriptions.php:87
+#: actions/apistatusesupdate.php:229 actions/apisubscriptions.php:87
#: actions/apitimelinefavorites.php:72 actions/apitimelinefriends.php:174
#: actions/apitimelinehome.php:80 actions/apitimelinementions.php:80
#: actions/apitimelineuser.php:82 actions/avatarbynickname.php:75
@@ -173,15 +173,15 @@ msgstr ""
#: actions/all.php:146
#, 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)."
+"You can try to [nudge %1$s](../%2$s) from their profile or [post something "
+"to them](%%%%action.newnotice%%%%?status_textarea=%3$s)."
msgstr ""
#: actions/all.php:149 actions/replies.php:210 actions/showstream.php:211
#, php-format
msgid ""
"Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
-"post a notice to his or her attention."
+"post a notice to them."
msgstr ""
#. TRANS: H1 text
@@ -215,7 +215,7 @@ msgstr "Oppdateringar frå %1$s og vener på %2$s!"
#: actions/apistatusesshow.php:109 actions/apistatusnetconfig.php:141
#: actions/apistatusnetversion.php:93 actions/apisubscriptions.php:111
#: actions/apitimelinefavorites.php:174 actions/apitimelinefriends.php:271
-#: actions/apitimelinegroup.php:152 actions/apitimelinehome.php:175
+#: actions/apitimelinegroup.php:154 actions/apitimelinehome.php:175
#: actions/apitimelinementions.php:174 actions/apitimelinepublic.php:241
#: actions/apitimelineretweetedtome.php:121
#: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161
@@ -266,7 +266,7 @@ msgstr "Kan ikkje lagra profil."
#: actions/apiaccountupdateprofilebackgroundimage.php:108
#: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80
-#: actions/apistatusesupdate.php:211 actions/avatarsettings.php:257
+#: actions/apistatusesupdate.php:212 actions/avatarsettings.php:257
#: actions/designadminpanel.php:123 actions/editapplication.php:118
#: actions/newapplication.php:101 actions/newnotice.php:94
#: lib/designsettings.php:283
@@ -367,7 +367,8 @@ msgid "Could not delete favorite."
msgstr "Kunne ikkje slette favoritt."
#: actions/apifriendshipscreate.php:109
-msgid "Could not follow user: User not found."
+#, fuzzy
+msgid "Could not follow user: profile not found."
msgstr "Fann ikkje brukaren, so han kan ikkje fylgjast"
#: actions/apifriendshipscreate.php:118
@@ -385,8 +386,9 @@ msgstr "Fann ikkje brukaren, so han kan ikkje fylgjast"
msgid "You cannot unfollow yourself."
msgstr "Kan ikkje oppdatera brukar."
-#: actions/apifriendshipsexists.php:94
-msgid "Two user ids or screen_names must be supplied."
+#: actions/apifriendshipsexists.php:91
+#, fuzzy
+msgid "Two valid IDs or screen_names must be supplied."
msgstr "To brukar IDer eller kallenamn er naudsynte."
#: actions/apifriendshipsshow.php:134
@@ -519,6 +521,11 @@ msgstr "%s grupper"
msgid "groups on %s"
msgstr "Gruppe handlingar"
+#: actions/apimediaupload.php:99
+#, fuzzy
+msgid "Upload failed."
+msgstr "Last opp fil"
+
#: actions/apioauthauthorize.php:101
msgid "No oauth_token parameter provided."
msgstr ""
@@ -665,22 +672,26 @@ msgstr "Lasta opp brukarbilete."
msgid "No status with that ID found."
msgstr "Fann ingen status med den ID-en."
-#: actions/apistatusesupdate.php:241 actions/newnotice.php:155
+#: actions/apistatusesupdate.php:221
+msgid "Client must provide a 'status' parameter with a value."
+msgstr ""
+
+#: actions/apistatusesupdate.php:242 actions/newnotice.php:155
#: lib/mailhandler.php:60
#, fuzzy, php-format
msgid "That's too long. Max notice size is %d chars."
msgstr "Det er for langt! Ein notis kan berre innehalde 140 teikn."
-#: actions/apistatusesupdate.php:282 actions/apiusershow.php:96
+#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96
msgid "Not found."
msgstr "Finst ikkje."
-#: actions/apistatusesupdate.php:305 actions/newnotice.php:178
+#: actions/apistatusesupdate.php:306 actions/newnotice.php:178
#, php-format
msgid "Max notice size is %d chars, including attachment URL."
msgstr ""
-#: actions/apisubscriptions.php:231 actions/apisubscriptions.php:261
+#: actions/apisubscriptions.php:232 actions/apisubscriptions.php:262
#, fuzzy
msgid "Unsupported format."
msgstr "Støttar ikkje bileteformatet."
@@ -735,6 +746,10 @@ msgstr "Notisar merka med %s"
msgid "Updates tagged with %1$s on %2$s!"
msgstr "Oppdateringar frå %1$s på %2$s!"
+#: actions/apitrends.php:87
+msgid "API method under construction."
+msgstr "API-metoden er ikkje ferdig enno."
+
#: actions/attachment.php:73
#, fuzzy
msgid "No such attachment."
@@ -789,7 +804,7 @@ msgid "Preview"
msgstr "Forhandsvis"
#: actions/avatarsettings.php:149 actions/showapplication.php:252
-#: lib/deleteuserform.php:66 lib/noticelist.php:648
+#: lib/deleteuserform.php:66 lib/noticelist.php:656
msgid "Delete"
msgstr "Slett"
@@ -1082,7 +1097,7 @@ msgid "Do not delete this notice"
msgstr "Kan ikkje sletta notisen."
#. TRANS: Submit button title for 'Yes' when deleting a notice.
-#: actions/deletenotice.php:158 lib/noticelist.php:648
+#: actions/deletenotice.php:158 lib/noticelist.php:656
msgid "Delete this notice"
msgstr "Slett denne notisen"
@@ -1382,7 +1397,8 @@ msgstr "Ugyldig merkelapp: %s"
msgid "Could not update group."
msgstr "Kann ikkje oppdatera gruppa."
-#: actions/editgroup.php:264 classes/User_group.php:496
+#. TRANS: Server exception thrown when creating group aliases failed.
+#: actions/editgroup.php:264 classes/User_group.php:514
#, fuzzy
msgid "Could not create aliases."
msgstr "Kunne ikkje lagre favoritt."
@@ -2560,8 +2576,9 @@ msgid "Updates matching search term \"%1$s\" on %2$s!"
msgstr "Alle oppdateringer frå søket «%s»"
#: actions/nudge.php:85
+#, fuzzy
msgid ""
-"This user doesn't allow nudges or hasn't confirmed or set his email yet."
+"This user doesn't allow nudges or hasn't confirmed or set their email yet."
msgstr ""
"Denne brukaren tillét ikkje å bli dytta, eller har ikkje stadfasta eller sat "
"e-postadressa si enno."
@@ -2642,8 +2659,8 @@ msgid "Only %s URLs over plain HTTP please."
msgstr ""
#. TRANS: Client error on an API request with an unsupported data format.
-#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1179
-#: lib/apiaction.php:1208 lib/apiaction.php:1325
+#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1204
+#: lib/apiaction.php:1232 lib/apiaction.php:1355
msgid "Not a supported data format."
msgstr "Ikkje eit støtta dataformat."
@@ -3566,7 +3583,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:667
+#: actions/repeat.php:114 lib/noticelist.php:675
#, fuzzy
msgid "Repeated"
msgstr "Lag"
@@ -3606,7 +3623,7 @@ msgstr "Notisstraum for %s"
#, php-format
msgid ""
"This is the timeline showing replies to %1$s but %2$s hasn't received a "
-"notice to his attention yet."
+"notice to them yet."
msgstr ""
#: actions/replies.php:204
@@ -3619,8 +3636,8 @@ msgstr ""
#: actions/replies.php:206
#, php-format
msgid ""
-"You can try to [nudge %1$s](../%2$s) or [post something to his or her "
-"attention](%%%%action.newnotice%%%%?status_textarea=%3$s)."
+"You can try to [nudge %1$s](../%2$s) or [post something to them](%%%%action."
+"newnotice%%%%?status_textarea=%3$s)."
msgstr ""
#: actions/repliesrss.php:72
@@ -3719,7 +3736,7 @@ msgstr "Paginering"
msgid "Description"
msgstr "Beskriving"
-#: actions/showapplication.php:192 actions/showgroup.php:444
+#: actions/showapplication.php:192 actions/showgroup.php:436
#: lib/profileaction.php:187
msgid "Statistics"
msgstr "Statistikk"
@@ -3805,16 +3822,16 @@ msgstr ""
#: actions/showfavorites.php:208
#, php-format
msgid ""
-"%s hasn't added any notices to his favorites yet. Post something interesting "
-"they would add to their favorites :)"
+"%s hasn't added any favorite notices yet. Post something interesting they "
+"would add to their favorites :)"
msgstr ""
#: actions/showfavorites.php:212
#, php-format
msgid ""
-"%s hasn't added any notices to his favorites yet. Why not [register an "
-"account](%%%%action.register%%%%) and then post something interesting they "
-"would add to their favorites :)"
+"%s hasn't added any favorite notices yet. Why not [register an account](%%%%"
+"action.register%%%%) and then post something interesting they would add to "
+"their favorites :)"
msgstr ""
#: actions/showfavorites.php:243
@@ -3873,7 +3890,7 @@ msgstr "Notisstraum for %s gruppa"
msgid "FOAF for %s group"
msgstr "Utboks for %s"
-#: actions/showgroup.php:393 actions/showgroup.php:453 lib/groupnav.php:91
+#: actions/showgroup.php:393 actions/showgroup.php:445 lib/groupnav.php:91
msgid "Members"
msgstr "Medlemmar"
@@ -3887,12 +3904,12 @@ msgstr "(Ingen)"
msgid "All members"
msgstr "Alle medlemmar"
-#: actions/showgroup.php:447
+#: actions/showgroup.php:439
#, fuzzy
msgid "Created"
msgstr "Lag"
-#: actions/showgroup.php:463
+#: actions/showgroup.php:455
#, php-format
msgid ""
"**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3902,7 +3919,7 @@ msgid ""
"of this group and many more! ([Read more](%%%%doc.help%%%%))"
msgstr ""
-#: actions/showgroup.php:469
+#: actions/showgroup.php:461
#, fuzzy, php-format
msgid ""
"**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3913,7 +3930,7 @@ msgstr ""
"**%s** er ei brukargruppe på %%%%site.name%%%%, ei [mikroblogging](http://en."
"wikipedia.org/wiki/Micro-blogging)-teneste"
-#: actions/showgroup.php:497
+#: actions/showgroup.php:489
#, fuzzy
msgid "Admins"
msgstr "Administrator"
@@ -3990,8 +4007,8 @@ msgstr ""
#: 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)."
+"You can try to nudge %1$s or [post something to them](%%%%action.newnotice%%%"
+"%?status_textarea=%2$s)."
msgstr ""
#: actions/showstream.php:243
@@ -4390,7 +4407,8 @@ msgstr "Avatar-innstillingar"
msgid "You are not subscribed to that profile."
msgstr "Du tingar ikkje oppdateringar til den profilen."
-#: actions/subedit.php:83 classes/Subscription.php:132
+#. TRANS: Exception thrown when a subscription could not be stored on the server.
+#: actions/subedit.php:83 classes/Subscription.php:136
msgid "Could not save subscription."
msgstr "Kunne ikkje lagra abonnement."
@@ -4563,10 +4581,6 @@ msgstr ""
msgid "No such tag."
msgstr "Dette emneord finst ikkje."
-#: actions/twitapitrends.php:85
-msgid "API method under construction."
-msgstr "API-metoden er ikkje ferdig enno."
-
#: actions/unblock.php:59
#, fuzzy
msgid "You haven't blocked that user."
@@ -4878,83 +4892,130 @@ msgstr "Personleg"
msgid "Author(s)"
msgstr ""
-#: classes/File.php:185
+#. TRANS: Server exception thrown when a URL cannot be processed.
+#: classes/File.php:143
+#, php-format
+msgid "Cannot process URL '%s'"
+msgstr ""
+
+#. TRANS: Server exception thrown when... Robin thinks something is impossible!
+#: classes/File.php:175
+msgid "Robin thinks something is impossible."
+msgstr ""
+
+#. TRANS: Message given if an upload is larger than the configured maximum.
+#. TRANS: %1$d is the byte limit for uploads, %2$d is the byte count for the uploaded file.
+#: classes/File.php:190
#, php-format
msgid ""
-"No file may be larger than %d bytes and the file you sent was %d bytes. Try "
-"to upload a smaller version."
+"No file may be larger than %1$d bytes and the file you sent was %2$d bytes. "
+"Try to upload a smaller version."
msgstr ""
-#: classes/File.php:195
+#. TRANS: Message given if an upload would exceed user quota.
+#. TRANS: %d (number) is the user quota in bytes.
+#: classes/File.php:202
#, php-format
msgid "A file this large would exceed your user quota of %d bytes."
msgstr ""
-#: classes/File.php:202
+#. TRANS: Message given id an upload would exceed a user's monthly quota.
+#. TRANS: $d (number) is the monthly user quota in bytes.
+#: classes/File.php:211
#, php-format
msgid "A file this large would exceed your monthly quota of %d bytes."
msgstr ""
-#: classes/Group_member.php:41
+#. TRANS: Client exception thrown if a file upload does not have a valid name.
+#: classes/File.php:248 classes/File.php:263
+msgid "Invalid filename."
+msgstr "Ugyldig filnamn."
+
+#. TRANS: Exception thrown when joining a group fails.
+#: classes/Group_member.php:42
#, fuzzy
msgid "Group join failed."
msgstr "Gruppe profil"
-#: classes/Group_member.php:53
+#. TRANS: Exception thrown when trying to leave a group the user is not a member of.
+#: classes/Group_member.php:55
#, fuzzy
msgid "Not part of group."
msgstr "Kann ikkje oppdatera gruppa."
-#: classes/Group_member.php:60
+#. TRANS: Exception thrown when trying to leave a group fails.
+#: classes/Group_member.php:63
#, fuzzy
msgid "Group leave failed."
msgstr "Gruppe profil"
-#: classes/Local_group.php:41
+#. TRANS: Server exception thrown when updating a local group fails.
+#: classes/Local_group.php:42
#, fuzzy
msgid "Could not update local group."
msgstr "Kann ikkje oppdatera gruppa."
-#: classes/Login_token.php:76
+#. TRANS: Exception thrown when trying creating a login token failed.
+#. TRANS: %s is the user nickname for which token creation failed.
+#: classes/Login_token.php:78
#, fuzzy, php-format
msgid "Could not create login token for %s"
msgstr "Kunne ikkje lagre favoritt."
-#: classes/Message.php:45
+#. TRANS: Exception thrown when database name or Data Source Name could not be found.
+#: classes/Memcached_DataObject.php:533
+msgid "No database name or DSN found anywhere."
+msgstr ""
+
+#. TRANS: Client exception thrown when a user tries to send a direct message while being banned from sending them.
+#: classes/Message.php:46
#, fuzzy
msgid "You are banned from sending direct messages."
msgstr "Ein feil oppstod ved sending av direkte melding."
-#: classes/Message.php:61
+#. TRANS: Message given when a message could not be stored on the server.
+#: classes/Message.php:63
msgid "Could not insert message."
msgstr "Kunne ikkje lagre melding."
-#: classes/Message.php:71
+#. TRANS: Message given when a message could not be updated on the server.
+#: classes/Message.php:74
msgid "Could not update message with new URI."
msgstr "Kunne ikkje oppdatere melding med ny URI."
+#. TRANS: Server exception thrown when a user profile for a notice cannot be found.
+#. TRANS: %1$d is a profile ID (number), %2$d is a notice ID (number).
+#: classes/Notice.php:98
+#, php-format
+msgid "No such profile (%1$d) for notice (%2$d)."
+msgstr ""
+
#. TRANS: Server exception. %s are the error details.
-#: classes/Notice.php:182
+#: classes/Notice.php:190
#, fuzzy, php-format
msgid "Database error inserting hashtag: %s"
msgstr "databasefeil ved innsetjing av skigardmerkelapp (#merkelapp): %s"
-#: classes/Notice.php:251
+#. TRANS: Client exception thrown if a notice contains too many characters.
+#: classes/Notice.php:260
#, fuzzy
msgid "Problem saving notice. Too long."
msgstr "Eit problem oppstod ved lagring av notis."
-#: classes/Notice.php:255
+#. TRANS: Client exception thrown when trying to save a notice for an unknown user.
+#: classes/Notice.php:265
msgid "Problem saving notice. Unknown user."
msgstr "Feil ved lagring av notis. Ukjend brukar."
-#: classes/Notice.php:260
+#. TRANS: Client exception thrown when a user tries to post too many notices in a given time frame.
+#: classes/Notice.php:271
msgid ""
"Too many notices too fast; take a breather and post again in a few minutes."
msgstr ""
"For mange notisar for raskt; tek ei pause, og prøv igjen om eit par minutt."
-#: classes/Notice.php:266
+#. TRANS: Client exception thrown when a user tries to post too many duplicate notices in a given time frame.
+#: classes/Notice.php:278
#, fuzzy
msgid ""
"Too many duplicate messages too quickly; take a breather and post again in a "
@@ -4962,77 +5023,126 @@ msgid ""
msgstr ""
"For mange notisar for raskt; tek ei pause, og prøv igjen om eit par minutt."
-#: classes/Notice.php:272
+#. TRANS: Client exception thrown when a user tries to post while being banned.
+#: classes/Notice.php:286
msgid "You are banned from posting notices on this site."
msgstr "Du kan ikkje lengre legge inn notisar på denne sida."
-#: classes/Notice.php:338 classes/Notice.php:364
+#. TRANS: Server exception thrown when a notice cannot be saved.
+#. TRANS: Server exception thrown when a notice cannot be updated.
+#: classes/Notice.php:353 classes/Notice.php:380
msgid "Problem saving notice."
msgstr "Eit problem oppstod ved lagring av notis."
-#: classes/Notice.php:973
+#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups().
+#: classes/Notice.php:892
+msgid "Bad type provided to saveKnownGroups"
+msgstr ""
+
+#. TRANS: Server exception thrown when an update for a group inbox fails.
+#: classes/Notice.php:991
#, fuzzy
msgid "Problem saving group inbox."
msgstr "Eit problem oppstod ved lagring av notis."
#. TRANS: Message used to repeat a notice. RT is the abbreviation of 'retweet'.
#. TRANS: %1$s is the repeated user's name, %2$s is the repeated notice.
-#: classes/Notice.php:1564
+#: classes/Notice.php:1614
#, fuzzy, php-format
msgid "RT @%1$s %2$s"
msgstr "%1$s (%2$s)"
-#: classes/Subscription.php:74 lib/oauthstore.php:465
+#. TRANS: Exception thrown when trying to revoke an existing role for a user that does not exist.
+#. TRANS: %1$s is the role name, %2$s is the user ID (number).
+#: classes/Profile.php:740
+#, php-format
+msgid "Cannot revoke role \"%1$s\" for user #%2$d; does not exist."
+msgstr ""
+
+#. TRANS: Exception thrown when trying to revoke a role for a user with a failing database query.
+#. TRANS: %1$s is the role name, %2$s is the user ID (number).
+#: classes/Profile.php:749
+#, php-format
+msgid "Cannot revoke role \"%1$s\" for user #%2$d; database error."
+msgstr ""
+
+#. TRANS: Exception thrown when a right for a non-existing user profile is checked.
+#: classes/Remote_profile.php:54
+#, fuzzy
+msgid "Missing profile."
+msgstr "Brukaren har inga profil."
+
+#. TRANS: Exception thrown when a tag cannot be saved.
+#: classes/Status_network.php:346
+#, fuzzy
+msgid "Unable to save tag."
+msgstr "Klarte ikkje å lagra Twitter-innstillingane dine!"
+
+#. TRANS: Exception thrown when trying to subscribe while being banned from subscribing.
+#: classes/Subscription.php:75 lib/oauthstore.php:465
#, fuzzy
msgid "You have been banned from subscribing."
msgstr "Brukaren tillet deg ikkje å tinga meldingane sine."
-#: classes/Subscription.php:78
+#. TRANS: Exception thrown when trying to subscribe while already subscribed.
+#: classes/Subscription.php:80
msgid "Already subscribed!"
msgstr ""
-#: classes/Subscription.php:82
+#. TRANS: Exception thrown when trying to subscribe to a user who has blocked the subscribing user.
+#: classes/Subscription.php:85
msgid "User has blocked you."
msgstr "Brukar har blokkert deg."
-#: classes/Subscription.php:167
+#. TRANS: Exception thrown when trying to unsibscribe without a subscription.
+#: classes/Subscription.php:171
#, fuzzy
msgid "Not subscribed!"
msgstr "Ikkje tinga."
-#: classes/Subscription.php:173
+#. TRANS: Exception thrown when trying to unsubscribe a user from themselves.
+#: classes/Subscription.php:178
#, fuzzy
-msgid "Couldn't delete self-subscription."
+msgid "Could not delete self-subscription."
msgstr "Kan ikkje sletta tinging."
-#: classes/Subscription.php:200
+#. TRANS: Exception thrown when the OMB token for a subscription could not deleted on the server.
+#: classes/Subscription.php:206
#, fuzzy
-msgid "Couldn't delete subscription OMB token."
+msgid "Could not delete subscription OMB token."
msgstr "Kan ikkje sletta tinging."
-#: classes/Subscription.php:211
-msgid "Couldn't delete subscription."
+#. TRANS: Exception thrown when a subscription could not be deleted on the server.
+#: classes/Subscription.php:218
+#, fuzzy
+msgid "Could not delete subscription."
msgstr "Kan ikkje sletta tinging."
-#: classes/User.php:363
+#. TRANS: Notice given on user registration.
+#. TRANS: %1$s is the sitename, $2$s is the registering user's nickname.
+#: classes/User.php:365
#, fuzzy, php-format
msgid "Welcome to %1$s, @%2$s!"
msgstr "Melding til %1$s på %2$s"
-#: classes/User_group.php:480
+#. TRANS: Server exception thrown when creating a group failed.
+#: classes/User_group.php:496
msgid "Could not create group."
msgstr "Kunne ikkje laga gruppa."
-#: classes/User_group.php:489
+#. TRANS: Server exception thrown when updating a group URI failed.
+#: classes/User_group.php:506
#, fuzzy
msgid "Could not set group URI."
msgstr "Kunne ikkje bli med i gruppa."
-#: classes/User_group.php:510
+#. TRANS: Server exception thrown when setting group membership failed.
+#: classes/User_group.php:529
msgid "Could not set group membership."
msgstr "Kunne ikkje bli med i gruppa."
-#: classes/User_group.php:524
+#. TRANS: Server exception thrown when saving local group information failed.
+#: classes/User_group.php:544
#, fuzzy
msgid "Could not save local group info."
msgstr "Kunne ikkje lagra abonnement."
@@ -6417,7 +6527,7 @@ msgid ""
"users in conversation. People can send you messages for your eyes only."
msgstr ""
-#: lib/mailbox.php:227 lib/noticelist.php:497
+#: lib/mailbox.php:227 lib/noticelist.php:505
#, fuzzy
msgid "from"
msgstr " frå "
@@ -6473,25 +6583,25 @@ msgstr ""
msgid "File upload stopped by extension."
msgstr ""
-#: lib/mediafile.php:179 lib/mediafile.php:216
+#: lib/mediafile.php:179 lib/mediafile.php:217
msgid "File exceeds user's quota."
msgstr ""
-#: lib/mediafile.php:196 lib/mediafile.php:233
+#: lib/mediafile.php:197 lib/mediafile.php:234
msgid "File could not be moved to destination directory."
msgstr ""
-#: lib/mediafile.php:201 lib/mediafile.php:237
+#: lib/mediafile.php:202 lib/mediafile.php:238
#, fuzzy
msgid "Could not determine file's MIME type."
msgstr "Kan ikkje hente offentleg straum."
-#: lib/mediafile.php:270
+#: lib/mediafile.php:318
#, php-format
msgid " Try using another %s format."
msgstr ""
-#: lib/mediafile.php:275
+#: lib/mediafile.php:323
#, php-format
msgid "%s is not a supported file type on this server."
msgstr ""
@@ -6548,54 +6658,54 @@ msgid ""
msgstr ""
#. TRANS: Used in coordinates as abbreviation of north
-#: lib/noticelist.php:430
+#: lib/noticelist.php:436
#, fuzzy
msgid "N"
msgstr "Nei"
#. TRANS: Used in coordinates as abbreviation of south
-#: lib/noticelist.php:432
+#: lib/noticelist.php:438
msgid "S"
msgstr ""
#. TRANS: Used in coordinates as abbreviation of east
-#: lib/noticelist.php:434
+#: lib/noticelist.php:440
msgid "E"
msgstr ""
#. TRANS: Used in coordinates as abbreviation of west
-#: lib/noticelist.php:436
+#: lib/noticelist.php:442
msgid "W"
msgstr ""
-#: lib/noticelist.php:438
+#: lib/noticelist.php:444
#, php-format
msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
msgstr ""
-#: lib/noticelist.php:447
+#: lib/noticelist.php:453
msgid "at"
msgstr ""
-#: lib/noticelist.php:559
+#: lib/noticelist.php:567
#, fuzzy
msgid "in context"
msgstr "Ingen innhald."
-#: lib/noticelist.php:594
+#: lib/noticelist.php:602
#, fuzzy
msgid "Repeated by"
msgstr "Lag"
-#: lib/noticelist.php:621
+#: lib/noticelist.php:629
msgid "Reply to this notice"
msgstr "Svar på denne notisen"
-#: lib/noticelist.php:622
+#: lib/noticelist.php:630
msgid "Reply"
msgstr "Svar"
-#: lib/noticelist.php:666
+#: lib/noticelist.php:674
#, fuzzy
msgid "Notice repeated"
msgstr "Melding lagra"
@@ -6866,9 +6976,8 @@ msgid "This server cannot handle theme uploads without ZIP support."
msgstr ""
#: lib/themeuploader.php:58 lib/themeuploader.php:61
-#, fuzzy
-msgid "Theme upload missing or failed."
-msgstr "Systemfeil ved opplasting av fil."
+msgid "The theme file is missing or the upload failed."
+msgstr ""
#: lib/themeuploader.php:91 lib/themeuploader.php:102
#: lib/themeuploader.php:253 lib/themeuploader.php:257
diff --git a/locale/pl/LC_MESSAGES/statusnet.po b/locale/pl/LC_MESSAGES/statusnet.po
index 95146156b..fe0581a69 100644
--- a/locale/pl/LC_MESSAGES/statusnet.po
+++ b/locale/pl/LC_MESSAGES/statusnet.po
@@ -11,8 +11,8 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-06-16 22:18+0000\n"
-"PO-Revision-Date: 2010-06-21 18:04:44+0000\n"
+"POT-Creation-Date: 2010-08-03 13:21+0000\n"
+"PO-Revision-Date: 2010-08-03 13:22:20+0000\n"
"Last-Translator: Piotr DrÄ…g <piotrdrag@gmail.com>\n"
"Language-Team: Polish <pl@li.org>\n"
"MIME-Version: 1.0\n"
@@ -20,7 +20,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.17alpha (r68367); Translate extension (2010-06-12)\n"
+"X-Generator: MediaWiki 1.17alpha (r70381); Translate extension (2010-07-21)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: pl\n"
"X-Message-Group: out-statusnet\n"
@@ -103,7 +103,7 @@ msgstr "Nie ma takiej strony."
#: actions/apidirectmessagenew.php:74 actions/apigroupcreate.php:113
#: actions/apigroupismember.php:91 actions/apigroupjoin.php:100
#: actions/apigroupleave.php:100 actions/apigrouplist.php:73
-#: actions/apistatusesupdate.php:228 actions/apisubscriptions.php:87
+#: actions/apistatusesupdate.php:229 actions/apisubscriptions.php:87
#: actions/apitimelinefavorites.php:72 actions/apitimelinefriends.php:174
#: actions/apitimelinehome.php:80 actions/apitimelinementions.php:80
#: actions/apitimelineuser.php:82 actions/avatarbynickname.php:75
@@ -174,21 +174,20 @@ msgstr ""
#: actions/all.php:146
#, 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)."
+"You can try to [nudge %1$s](../%2$s) from their profile or [post something "
+"to them](%%%%action.newnotice%%%%?status_textarea=%3$s)."
msgstr ""
"Można spróbować [szturchnąć użytkownika %1$s](../%2$s) z jego profilu lub "
-"[wysłać coś wymagającego jego uwagi](%%%%action.newnotice%%%%?"
-"status_textarea=%3$s)."
+"[wysłać mu coś](%%%%action.newnotice%%%%?status_textarea=%3$s)."
#: actions/all.php:149 actions/replies.php:210 actions/showstream.php:211
#, php-format
msgid ""
"Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
-"post a notice to his or her attention."
+"post a notice to them."
msgstr ""
"Dlaczego nie [zarejestrujesz konta](%%%%action.register%%%%) i wtedy "
-"szturchniesz użytkownika %s lub wyślesz wpis wymagającego jego uwagi."
+"szturchniesz użytkownika %s lub wyślesz mu wpis."
#. TRANS: H1 text
#: actions/all.php:182
@@ -220,7 +219,7 @@ msgstr "Aktualizacje z %1$s i przyjaciół na %2$s."
#: actions/apistatusesshow.php:109 actions/apistatusnetconfig.php:141
#: actions/apistatusnetversion.php:93 actions/apisubscriptions.php:111
#: actions/apitimelinefavorites.php:174 actions/apitimelinefriends.php:271
-#: actions/apitimelinegroup.php:152 actions/apitimelinehome.php:175
+#: actions/apitimelinegroup.php:154 actions/apitimelinehome.php:175
#: actions/apitimelinementions.php:174 actions/apitimelinepublic.php:241
#: actions/apitimelineretweetedtome.php:121
#: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161
@@ -269,7 +268,7 @@ msgstr "Nie można zapisać profilu."
#: actions/apiaccountupdateprofilebackgroundimage.php:108
#: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80
-#: actions/apistatusesupdate.php:211 actions/avatarsettings.php:257
+#: actions/apistatusesupdate.php:212 actions/avatarsettings.php:257
#: actions/designadminpanel.php:123 actions/editapplication.php:118
#: actions/newapplication.php:101 actions/newnotice.php:94
#: lib/designsettings.php:283
@@ -369,8 +368,8 @@ msgid "Could not delete favorite."
msgstr "Nie można usunąć ulubionego wpisu."
#: actions/apifriendshipscreate.php:109
-msgid "Could not follow user: User not found."
-msgstr "Nie można obserwować użytkownika: nie odnaleziono użytkownika."
+msgid "Could not follow user: profile not found."
+msgstr "Nie można obserwować użytkownika: nie odnaleziono profilu."
#: actions/apifriendshipscreate.php:118
#, php-format
@@ -386,9 +385,10 @@ msgstr ""
msgid "You cannot unfollow yourself."
msgstr "Nie można zrezygnować z obserwacji samego siebie."
-#: actions/apifriendshipsexists.php:94
-msgid "Two user ids or screen_names must be supplied."
-msgstr "Należy dostarczyć dwa identyfikatory lub nazwy użytkowników."
+#: actions/apifriendshipsexists.php:91
+msgid "Two valid IDs or screen_names must be supplied."
+msgstr ""
+"Należy dostarczyć dwa prawidłowe identyfikatory lub nazwy użytkowników."
#: actions/apifriendshipsshow.php:134
msgid "Could not determine source user."
@@ -515,6 +515,10 @@ msgstr "Grupy %s"
msgid "groups on %s"
msgstr "grupy na %s"
+#: actions/apimediaupload.php:99
+msgid "Upload failed."
+msgstr "Wysłanie nie powiodło się."
+
#: actions/apioauthauthorize.php:101
msgid "No oauth_token parameter provided."
msgstr "Nie podano parametru oauth_token."
@@ -657,22 +661,26 @@ msgstr "Usunięto stan."
msgid "No status with that ID found."
msgstr "Nie odnaleziono stanów z tym identyfikatorem."
-#: actions/apistatusesupdate.php:241 actions/newnotice.php:155
+#: actions/apistatusesupdate.php:221
+msgid "Client must provide a 'status' parameter with a value."
+msgstr "Klient musi dostarczać parametr \"stan\" z wartością."
+
+#: actions/apistatusesupdate.php:242 actions/newnotice.php:155
#: lib/mailhandler.php:60
#, php-format
msgid "That's too long. Max notice size is %d chars."
msgstr "Wpis jest za długi. Maksymalna długość wynosi %d znaków."
-#: actions/apistatusesupdate.php:282 actions/apiusershow.php:96
+#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96
msgid "Not found."
msgstr "Nie odnaleziono."
-#: actions/apistatusesupdate.php:305 actions/newnotice.php:178
+#: actions/apistatusesupdate.php:306 actions/newnotice.php:178
#, php-format
msgid "Max notice size is %d chars, including attachment URL."
msgstr "Maksymalny rozmiar wpisu wynosi %d znaków, w tym adres URL załącznika."
-#: actions/apisubscriptions.php:231 actions/apisubscriptions.php:261
+#: actions/apisubscriptions.php:232 actions/apisubscriptions.php:262
msgid "Unsupported format."
msgstr "Nieobsługiwany format."
@@ -726,6 +734,10 @@ msgstr "Wpisy ze znacznikiem %s"
msgid "Updates tagged with %1$s on %2$s!"
msgstr "Aktualizacje ze znacznikiem %1$s na %2$s."
+#: actions/apitrends.php:87
+msgid "API method under construction."
+msgstr "Metoda API jest w trakcie tworzenia."
+
#: actions/attachment.php:73
msgid "No such attachment."
msgstr "Nie ma takiego załącznika."
@@ -778,7 +790,7 @@ msgid "Preview"
msgstr "PodglÄ…d"
#: actions/avatarsettings.php:149 actions/showapplication.php:252
-#: lib/deleteuserform.php:66 lib/noticelist.php:648
+#: lib/deleteuserform.php:66 lib/noticelist.php:656
msgid "Delete"
msgstr "Usuń"
@@ -1058,7 +1070,7 @@ msgid "Do not delete this notice"
msgstr "Nie usuwaj tego wpisu"
#. TRANS: Submit button title for 'Yes' when deleting a notice.
-#: actions/deletenotice.php:158 lib/noticelist.php:648
+#: actions/deletenotice.php:158 lib/noticelist.php:656
msgid "Delete this notice"
msgstr "Usuń ten wpis"
@@ -1334,7 +1346,8 @@ msgstr "Nieprawidłowy alias: \"%s\""
msgid "Could not update group."
msgstr "Nie można zaktualizować grupy."
-#: actions/editgroup.php:264 classes/User_group.php:496
+#. TRANS: Server exception thrown when creating group aliases failed.
+#: actions/editgroup.php:264 classes/User_group.php:514
msgid "Could not create aliases."
msgstr "Nie można utworzyć aliasów."
@@ -2485,7 +2498,7 @@ msgstr "Aktualizacje pasujÄ…ce do wyszukiwanego terminu \"%1$s\" na %2$s."
#: actions/nudge.php:85
msgid ""
-"This user doesn't allow nudges or hasn't confirmed or set his email yet."
+"This user doesn't allow nudges or hasn't confirmed or set their email yet."
msgstr ""
"Ten użytkownik nie pozwala na szturchnięcia albo nie potwierdził lub nie "
"ustawił jeszcze swojego adresu e-mail."
@@ -2562,8 +2575,8 @@ msgid "Only %s URLs over plain HTTP please."
msgstr "Dozwolone są tylko adresy URL %s przez zwykły protokół HTTP."
#. TRANS: Client error on an API request with an unsupported data format.
-#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1179
-#: lib/apiaction.php:1208 lib/apiaction.php:1325
+#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1204
+#: lib/apiaction.php:1232 lib/apiaction.php:1355
msgid "Not a supported data format."
msgstr "To nie jest obsługiwany format danych."
@@ -3472,7 +3485,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:667
+#: actions/repeat.php:114 lib/noticelist.php:675
msgid "Repeated"
msgstr "Powtórzono"
@@ -3510,10 +3523,10 @@ msgstr "Kanał odpowiedzi dla użytkownika %s (Atom)"
#, php-format
msgid ""
"This is the timeline showing replies to %1$s but %2$s hasn't received a "
-"notice to his attention yet."
+"notice to them yet."
msgstr ""
"To jest oś czasu wyświetlająca odpowiedzi na wpisy użytkownika %1$s, ale %2"
-"$s nie otrzymał jeszcze wpisów wymagających jego uwagi."
+"$s nie otrzymał jeszcze wpisów."
#: actions/replies.php:204
#, php-format
@@ -3527,11 +3540,11 @@ msgstr ""
#: actions/replies.php:206
#, php-format
msgid ""
-"You can try to [nudge %1$s](../%2$s) or [post something to his or her "
-"attention](%%%%action.newnotice%%%%?status_textarea=%3$s)."
+"You can try to [nudge %1$s](../%2$s) or [post something to them](%%%%action."
+"newnotice%%%%?status_textarea=%3$s)."
msgstr ""
-"Można spróbować [szturchnąć użytkownika %1$s](../%2$s) lub [wysłać coś "
-"wymagajÄ…cego jego uwagi](%%%%action.newnotice%%%%?status_textarea=%3$s)."
+"Można spróbować [szturchnąć użytkownika %1$s](../%2$s) lub [wysłać mu coś](%%"
+"%%action.newnotice%%%%?status_textarea=%3$s)."
#: actions/repliesrss.php:72
#, php-format
@@ -3619,7 +3632,7 @@ msgstr "Organizacja"
msgid "Description"
msgstr "Opis"
-#: actions/showapplication.php:192 actions/showgroup.php:444
+#: actions/showapplication.php:192 actions/showgroup.php:436
#: lib/profileaction.php:187
msgid "Statistics"
msgstr "Statystyki"
@@ -3709,8 +3722,8 @@ msgstr ""
#: actions/showfavorites.php:208
#, php-format
msgid ""
-"%s hasn't added any notices to his favorites yet. Post something interesting "
-"they would add to their favorites :)"
+"%s hasn't added any favorite notices yet. Post something interesting they "
+"would add to their favorites :)"
msgstr ""
"Użytkownik %s nie dodał jeszcze żadnych wpisów do ulubionych. Wyślij coś "
"interesującego, aby chcieli dodać to do swoich ulubionych. :)"
@@ -3718,9 +3731,9 @@ msgstr ""
#: actions/showfavorites.php:212
#, php-format
msgid ""
-"%s hasn't added any notices to his favorites yet. Why not [register an "
-"account](%%%%action.register%%%%) and then post something interesting they "
-"would add to their favorites :)"
+"%s hasn't added any favorite notices yet. Why not [register an account](%%%%"
+"action.register%%%%) and then post something interesting they would add to "
+"their favorites :)"
msgstr ""
"Użytkownik %s nie dodał jeszcze żadnych wpisów do ulubionych. Dlaczego nie "
"[zarejestrujesz konta](%%%%action.register%%%%) i wyślesz coś "
@@ -3782,7 +3795,7 @@ msgstr "Kanał wpisów dla grupy %s (Atom)"
msgid "FOAF for %s group"
msgstr "FOAF dla grupy %s"
-#: actions/showgroup.php:393 actions/showgroup.php:453 lib/groupnav.php:91
+#: actions/showgroup.php:393 actions/showgroup.php:445 lib/groupnav.php:91
msgid "Members"
msgstr "Członkowie"
@@ -3796,11 +3809,11 @@ msgstr "(Brak)"
msgid "All members"
msgstr "Wszyscy członkowie"
-#: actions/showgroup.php:447
+#: actions/showgroup.php:439
msgid "Created"
msgstr "Utworzono"
-#: actions/showgroup.php:463
+#: actions/showgroup.php:455
#, php-format
msgid ""
"**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3816,7 +3829,7 @@ msgstr ""
"action.register%%%%), aby stać się częścią tej grupy i wiele więcej. "
"([Przeczytaj więcej](%%%%doc.help%%%%))"
-#: actions/showgroup.php:469
+#: actions/showgroup.php:461
#, php-format
msgid ""
"**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3829,7 +3842,7 @@ msgstr ""
"narzędziu [StatusNet](http://status.net/). Jej członkowie dzielą się "
"krótkimi wiadomościami o swoim życiu i zainteresowaniach. "
-#: actions/showgroup.php:497
+#: actions/showgroup.php:489
msgid "Admins"
msgstr "Administratorzy"
@@ -3907,11 +3920,11 @@ msgstr ""
#: 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)."
+"You can try to nudge %1$s or [post something to them](%%%%action.newnotice%%%"
+"%?status_textarea=%2$s)."
msgstr ""
-"Można spróbować szturchnąć użytkownika %1$s lub [wysłać coś, co wymaga jego "
-"uwagi](%%%%action.newnotice%%%%?status_textarea=%2$s)."
+"Można spróbować szturchnąć użytkownika %1$s lub [wysłać mu coś](%%%%action."
+"newnotice%%%%?status_textarea=%2$s)."
#: actions/showstream.php:243
#, php-format
@@ -4297,7 +4310,8 @@ msgstr "Zapisz ustawienia migawki"
msgid "You are not subscribed to that profile."
msgstr "Nie jesteÅ› subskrybowany do tego profilu."
-#: actions/subedit.php:83 classes/Subscription.php:132
+#. TRANS: Exception thrown when a subscription could not be stored on the server.
+#: actions/subedit.php:83 classes/Subscription.php:136
msgid "Could not save subscription."
msgstr "Nie można zapisać subskrypcji."
@@ -4478,10 +4492,6 @@ msgstr ""
msgid "No such tag."
msgstr "Nie ma takiego znacznika."
-#: actions/twitapitrends.php:85
-msgid "API method under construction."
-msgstr "Metoda API jest w trakcie tworzenia."
-
#: actions/unblock.php:59
msgid "You haven't blocked that user."
msgstr "Ten użytkownik nie został zablokowany."
@@ -4791,83 +4801,130 @@ msgstr "Wersja"
msgid "Author(s)"
msgstr "Autorzy"
-#: classes/File.php:185
+#. TRANS: Server exception thrown when a URL cannot be processed.
+#: classes/File.php:143
+#, php-format
+msgid "Cannot process URL '%s'"
+msgstr "Nie można przetworzyć adresu URL \"%s\""
+
+#. TRANS: Server exception thrown when... Robin thinks something is impossible!
+#: classes/File.php:175
+msgid "Robin thinks something is impossible."
+msgstr "Robin sądzi, że coś jest niemożliwe."
+
+#. TRANS: Message given if an upload is larger than the configured maximum.
+#. TRANS: %1$d is the byte limit for uploads, %2$d is the byte count for the uploaded file.
+#: classes/File.php:190
#, php-format
msgid ""
-"No file may be larger than %d bytes and the file you sent was %d bytes. Try "
-"to upload a smaller version."
+"No file may be larger than %1$d bytes and the file you sent was %2$d bytes. "
+"Try to upload a smaller version."
msgstr ""
-"Żaden plik nie może być większy niż %d bajty, a wysłany plik miał %d bajty. "
-"Spróbuj wysłać mniejszą wersję."
+"Żaden plik nie może być większy niż %1$d bajty, a wysłany plik miał %2$d "
+"bajty. Proszę spróbować wysłać mniejszą wersję."
-#: classes/File.php:195
+#. TRANS: Message given if an upload would exceed user quota.
+#. TRANS: %d (number) is the user quota in bytes.
+#: classes/File.php:202
#, php-format
msgid "A file this large would exceed your user quota of %d bytes."
msgstr ""
"Plik tej wielkości przekroczyłby przydział użytkownika wynoszący %d bajty."
-#: classes/File.php:202
+#. TRANS: Message given id an upload would exceed a user's monthly quota.
+#. TRANS: $d (number) is the monthly user quota in bytes.
+#: classes/File.php:211
#, php-format
msgid "A file this large would exceed your monthly quota of %d bytes."
msgstr ""
"Plik tej wielkości przekroczyłby miesięczny przydział użytkownika wynoszący %"
"d bajty."
-#: classes/Group_member.php:41
+#. TRANS: Client exception thrown if a file upload does not have a valid name.
+#: classes/File.php:248 classes/File.php:263
+msgid "Invalid filename."
+msgstr "Nieprawidłowa nazwa pliku."
+
+#. TRANS: Exception thrown when joining a group fails.
+#: classes/Group_member.php:42
msgid "Group join failed."
msgstr "Dołączenie do grupy nie powiodło się."
-#: classes/Group_member.php:53
+#. TRANS: Exception thrown when trying to leave a group the user is not a member of.
+#: classes/Group_member.php:55
msgid "Not part of group."
msgstr "Nie jest częścią grupy."
-#: classes/Group_member.php:60
+#. TRANS: Exception thrown when trying to leave a group fails.
+#: classes/Group_member.php:63
msgid "Group leave failed."
msgstr "Opuszczenie grupy nie powiodło się."
-#: classes/Local_group.php:41
+#. TRANS: Server exception thrown when updating a local group fails.
+#: classes/Local_group.php:42
msgid "Could not update local group."
msgstr "Nie można zaktualizować lokalnej grupy."
-#: classes/Login_token.php:76
+#. TRANS: Exception thrown when trying creating a login token failed.
+#. TRANS: %s is the user nickname for which token creation failed.
+#: classes/Login_token.php:78
#, php-format
msgid "Could not create login token for %s"
msgstr "Nie można utworzyć tokenów loginów dla %s"
-#: classes/Message.php:45
+#. TRANS: Exception thrown when database name or Data Source Name could not be found.
+#: classes/Memcached_DataObject.php:533
+msgid "No database name or DSN found anywhere."
+msgstr "Nigdzie nie odnaleziono nazwy lub DSN bazy danych."
+
+#. TRANS: Client exception thrown when a user tries to send a direct message while being banned from sending them.
+#: classes/Message.php:46
msgid "You are banned from sending direct messages."
msgstr "Zablokowano wysyłanie bezpośrednich wiadomości."
-#: classes/Message.php:61
+#. TRANS: Message given when a message could not be stored on the server.
+#: classes/Message.php:63
msgid "Could not insert message."
msgstr "Nie można wprowadzić wiadomości."
-#: classes/Message.php:71
+#. TRANS: Message given when a message could not be updated on the server.
+#: classes/Message.php:74
msgid "Could not update message with new URI."
msgstr "Nie można zaktualizować wiadomości za pomocą nowego adresu URL."
+#. TRANS: Server exception thrown when a user profile for a notice cannot be found.
+#. TRANS: %1$d is a profile ID (number), %2$d is a notice ID (number).
+#: classes/Notice.php:98
+#, php-format
+msgid "No such profile (%1$d) for notice (%2$d)."
+msgstr "Brak profilu (%1$d) dla wpisu (%2$d)."
+
#. TRANS: Server exception. %s are the error details.
-#: classes/Notice.php:182
+#: classes/Notice.php:190
#, php-format
msgid "Database error inserting hashtag: %s"
msgstr "BÅ‚Ä…d bazy danych podczas wprowadzania znacznika mieszania: %s"
-#: classes/Notice.php:251
+#. TRANS: Client exception thrown if a notice contains too many characters.
+#: classes/Notice.php:260
msgid "Problem saving notice. Too long."
msgstr "Problem podczas zapisywania wpisu. Za długi."
-#: classes/Notice.php:255
+#. TRANS: Client exception thrown when trying to save a notice for an unknown user.
+#: classes/Notice.php:265
msgid "Problem saving notice. Unknown user."
msgstr "Problem podczas zapisywania wpisu. Nieznany użytkownik."
-#: classes/Notice.php:260
+#. TRANS: Client exception thrown when a user tries to post too many notices in a given time frame.
+#: classes/Notice.php:271
msgid ""
"Too many notices too fast; take a breather and post again in a few minutes."
msgstr ""
"Za dużo wpisów w za krótkim czasie, weź głęboki oddech i wyślij ponownie za "
"kilka minut."
-#: classes/Notice.php:266
+#. TRANS: Client exception thrown when a user tries to post too many duplicate notices in a given time frame.
+#: classes/Notice.php:278
msgid ""
"Too many duplicate messages too quickly; take a breather and post again in a "
"few minutes."
@@ -4875,71 +4932,118 @@ msgstr ""
"Za dużo takich samych wiadomości w za krótkim czasie, weź głęboki oddech i "
"wyślij ponownie za kilka minut."
-#: classes/Notice.php:272
+#. TRANS: Client exception thrown when a user tries to post while being banned.
+#: classes/Notice.php:286
msgid "You are banned from posting notices on this site."
msgstr "Zabroniono ci wysyłania wpisów na tej witrynie."
-#: classes/Notice.php:338 classes/Notice.php:364
+#. TRANS: Server exception thrown when a notice cannot be saved.
+#. TRANS: Server exception thrown when a notice cannot be updated.
+#: classes/Notice.php:353 classes/Notice.php:380
msgid "Problem saving notice."
msgstr "Problem podczas zapisywania wpisu."
-#: classes/Notice.php:973
+#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups().
+#: classes/Notice.php:892
+msgid "Bad type provided to saveKnownGroups"
+msgstr "Podano błędne dane do saveKnownGroups"
+
+#. TRANS: Server exception thrown when an update for a group inbox fails.
+#: classes/Notice.php:991
msgid "Problem saving group inbox."
msgstr "Problem podczas zapisywania skrzynki odbiorczej grupy."
#. TRANS: Message used to repeat a notice. RT is the abbreviation of 'retweet'.
#. TRANS: %1$s is the repeated user's name, %2$s is the repeated notice.
-#: classes/Notice.php:1564
+#: classes/Notice.php:1614
#, php-format
msgid "RT @%1$s %2$s"
msgstr "RT @%1$s %2$s"
-#: classes/Subscription.php:74 lib/oauthstore.php:465
+#. TRANS: Exception thrown when trying to revoke an existing role for a user that does not exist.
+#. TRANS: %1$s is the role name, %2$s is the user ID (number).
+#: classes/Profile.php:740
+#, php-format
+msgid "Cannot revoke role \"%1$s\" for user #%2$d; does not exist."
+msgstr "Nie można unieważnić roli \"\"%1$s\" użytkownika #%2$d; nie istnieje."
+
+#. TRANS: Exception thrown when trying to revoke a role for a user with a failing database query.
+#. TRANS: %1$s is the role name, %2$s is the user ID (number).
+#: classes/Profile.php:749
+#, php-format
+msgid "Cannot revoke role \"%1$s\" for user #%2$d; database error."
+msgstr ""
+"Nie można unieważnić roli \"%1$s\" użytkownika #%2$d; błąd bazy danych."
+
+#. TRANS: Exception thrown when a right for a non-existing user profile is checked.
+#: classes/Remote_profile.php:54
+msgid "Missing profile."
+msgstr "Brak profilu."
+
+#. TRANS: Exception thrown when a tag cannot be saved.
+#: classes/Status_network.php:346
+msgid "Unable to save tag."
+msgstr "Nie można zapisać etykiety."
+
+#. TRANS: Exception thrown when trying to subscribe while being banned from subscribing.
+#: classes/Subscription.php:75 lib/oauthstore.php:465
msgid "You have been banned from subscribing."
msgstr "Zablokowano subskrybowanie."
-#: classes/Subscription.php:78
+#. TRANS: Exception thrown when trying to subscribe while already subscribed.
+#: classes/Subscription.php:80
msgid "Already subscribed!"
msgstr "Już subskrybowane."
-#: classes/Subscription.php:82
+#. TRANS: Exception thrown when trying to subscribe to a user who has blocked the subscribing user.
+#: classes/Subscription.php:85
msgid "User has blocked you."
msgstr "Użytkownik zablokował cię."
-#: classes/Subscription.php:167
+#. TRANS: Exception thrown when trying to unsibscribe without a subscription.
+#: classes/Subscription.php:171
msgid "Not subscribed!"
msgstr "Niesubskrybowane."
-#: classes/Subscription.php:173
-msgid "Couldn't delete self-subscription."
+#. TRANS: Exception thrown when trying to unsubscribe a user from themselves.
+#: classes/Subscription.php:178
+msgid "Could not delete self-subscription."
msgstr "Nie można usunąć autosubskrypcji."
-#: classes/Subscription.php:200
-msgid "Couldn't delete subscription OMB token."
+#. TRANS: Exception thrown when the OMB token for a subscription could not deleted on the server.
+#: classes/Subscription.php:206
+msgid "Could not delete subscription OMB token."
msgstr "Nie można usunąć tokenu subskrypcji OMB."
-#: classes/Subscription.php:211
-msgid "Couldn't delete subscription."
+#. TRANS: Exception thrown when a subscription could not be deleted on the server.
+#: classes/Subscription.php:218
+msgid "Could not delete subscription."
msgstr "Nie można usunąć subskrypcji."
-#: classes/User.php:363
+#. TRANS: Notice given on user registration.
+#. TRANS: %1$s is the sitename, $2$s is the registering user's nickname.
+#: classes/User.php:365
#, php-format
msgid "Welcome to %1$s, @%2$s!"
msgstr "Witaj w %1$s, @%2$s."
-#: classes/User_group.php:480
+#. TRANS: Server exception thrown when creating a group failed.
+#: classes/User_group.php:496
msgid "Could not create group."
msgstr "Nie można utworzyć grupy."
-#: classes/User_group.php:489
+#. TRANS: Server exception thrown when updating a group URI failed.
+#: classes/User_group.php:506
msgid "Could not set group URI."
msgstr "Nie można ustawić adresu URI grupy."
-#: classes/User_group.php:510
+#. TRANS: Server exception thrown when setting group membership failed.
+#: classes/User_group.php:529
msgid "Could not set group membership."
msgstr "Nie można ustawić członkostwa w grupie."
-#: classes/User_group.php:524
+#. TRANS: Server exception thrown when saving local group information failed.
+#: classes/User_group.php:544
msgid "Could not save local group info."
msgstr "Nie można zapisać informacji o lokalnej grupie."
@@ -6417,7 +6521,7 @@ msgstr ""
"rozmowę z innymi użytkownikami. Inni mogą wysyłać ci wiadomości tylko dla "
"twoich oczu."
-#: lib/mailbox.php:227 lib/noticelist.php:497
+#: lib/mailbox.php:227 lib/noticelist.php:505
msgid "from"
msgstr "z"
@@ -6473,24 +6577,24 @@ msgstr "Zapisanie pliku na dysku nie powiodło się."
msgid "File upload stopped by extension."
msgstr "Wysłanie pliku zostało zatrzymane przez rozszerzenie."
-#: lib/mediafile.php:179 lib/mediafile.php:216
+#: lib/mediafile.php:179 lib/mediafile.php:217
msgid "File exceeds user's quota."
msgstr "Plik przekracza przydział użytkownika."
-#: lib/mediafile.php:196 lib/mediafile.php:233
+#: lib/mediafile.php:197 lib/mediafile.php:234
msgid "File could not be moved to destination directory."
msgstr "Nie można przenieść pliku do katalogu docelowego."
-#: lib/mediafile.php:201 lib/mediafile.php:237
+#: lib/mediafile.php:202 lib/mediafile.php:238
msgid "Could not determine file's MIME type."
msgstr "Nie można określić typu MIME pliku."
-#: lib/mediafile.php:270
+#: lib/mediafile.php:318
#, php-format
msgid " Try using another %s format."
msgstr " Spróbuj innego formatu %s."
-#: lib/mediafile.php:275
+#: lib/mediafile.php:323
#, php-format
msgid "%s is not a supported file type on this server."
msgstr "%s nie jest obsługiwanym typem pliku na tym serwerze."
@@ -6546,51 +6650,51 @@ msgstr ""
"ponownie później"
#. TRANS: Used in coordinates as abbreviation of north
-#: lib/noticelist.php:430
+#: lib/noticelist.php:436
msgid "N"
msgstr "Północ"
#. TRANS: Used in coordinates as abbreviation of south
-#: lib/noticelist.php:432
+#: lib/noticelist.php:438
msgid "S"
msgstr "Południe"
#. TRANS: Used in coordinates as abbreviation of east
-#: lib/noticelist.php:434
+#: lib/noticelist.php:440
msgid "E"
msgstr "Wschód"
#. TRANS: Used in coordinates as abbreviation of west
-#: lib/noticelist.php:436
+#: lib/noticelist.php:442
msgid "W"
msgstr "Zachód"
-#: lib/noticelist.php:438
+#: lib/noticelist.php:444
#, php-format
msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
msgstr "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
-#: lib/noticelist.php:447
+#: lib/noticelist.php:453
msgid "at"
msgstr "w"
-#: lib/noticelist.php:559
+#: lib/noticelist.php:567
msgid "in context"
msgstr "w rozmowie"
-#: lib/noticelist.php:594
+#: lib/noticelist.php:602
msgid "Repeated by"
msgstr "Powtórzone przez"
-#: lib/noticelist.php:621
+#: lib/noticelist.php:629
msgid "Reply to this notice"
msgstr "Odpowiedz na ten wpis"
-#: lib/noticelist.php:622
+#: lib/noticelist.php:630
msgid "Reply"
msgstr "Odpowiedz"
-#: lib/noticelist.php:666
+#: lib/noticelist.php:674
msgid "Notice repeated"
msgstr "Powtórzono wpis"
@@ -6850,8 +6954,8 @@ msgstr ""
"Ten serwer nie może obsługiwać wysyłania motywu bez obsługi archiwów zip."
#: lib/themeuploader.php:58 lib/themeuploader.php:61
-msgid "Theme upload missing or failed."
-msgstr "Brak wysłania motywu lub nie powiodło się."
+msgid "The theme file is missing or the upload failed."
+msgstr "Brak pliku motywu lub wysłanie nie powiodło się."
#: lib/themeuploader.php:91 lib/themeuploader.php:102
#: lib/themeuploader.php:253 lib/themeuploader.php:257
diff --git a/locale/pt/LC_MESSAGES/statusnet.po b/locale/pt/LC_MESSAGES/statusnet.po
index d2b2720bb..f7e479154 100644
--- a/locale/pt/LC_MESSAGES/statusnet.po
+++ b/locale/pt/LC_MESSAGES/statusnet.po
@@ -11,12 +11,12 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-06-16 22:18+0000\n"
-"PO-Revision-Date: 2010-06-21 18:04:48+0000\n"
+"POT-Creation-Date: 2010-08-03 13:21+0000\n"
+"PO-Revision-Date: 2010-08-03 13:22:22+0000\n"
"Language-Team: Portuguese\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.17alpha (r68367); Translate extension (2010-06-12)\n"
+"X-Generator: MediaWiki 1.17alpha (r70381); Translate extension (2010-07-21)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: pt\n"
"X-Message-Group: out-statusnet\n"
@@ -100,7 +100,7 @@ msgstr "Página não foi encontrada."
#: actions/apidirectmessagenew.php:74 actions/apigroupcreate.php:113
#: actions/apigroupismember.php:91 actions/apigroupjoin.php:100
#: actions/apigroupleave.php:100 actions/apigrouplist.php:73
-#: actions/apistatusesupdate.php:228 actions/apisubscriptions.php:87
+#: actions/apistatusesupdate.php:229 actions/apisubscriptions.php:87
#: actions/apitimelinefavorites.php:72 actions/apitimelinefriends.php:174
#: actions/apitimelinehome.php:80 actions/apitimelinementions.php:80
#: actions/apitimelineuser.php:82 actions/avatarbynickname.php:75
@@ -170,20 +170,20 @@ msgstr ""
#: actions/all.php:146
#, 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)."
+"You can try to [nudge %1$s](../%2$s) from their profile or [post something "
+"to them](%%%%action.newnotice%%%%?status_textarea=%3$s)."
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)."
+"Pode tentar [dar um toque em %1$s](../%2$s) a partir do perfil ou [endereçar-"
+"lhe uma nota](%%%%action.newnotice%%%%?status_textarea=%3$s)."
#: actions/all.php:149 actions/replies.php:210 actions/showstream.php:211
#, php-format
msgid ""
"Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
-"post a notice to his or her attention."
+"post a notice to them."
msgstr ""
-"Podia [registar uma conta](%%action.register%%) e depois tocar %s ou "
-"publicar uma nota à sua atenção."
+"Podia [registar uma conta](%%%%action.register%%%%) e depois dar um toque em "
+"%s ou endereçar-lhe uma nota."
#. TRANS: H1 text
#: actions/all.php:182
@@ -215,7 +215,7 @@ msgstr "Actualizações de %1$s e amigos no %2$s!"
#: actions/apistatusesshow.php:109 actions/apistatusnetconfig.php:141
#: actions/apistatusnetversion.php:93 actions/apisubscriptions.php:111
#: actions/apitimelinefavorites.php:174 actions/apitimelinefriends.php:271
-#: actions/apitimelinegroup.php:152 actions/apitimelinehome.php:175
+#: actions/apitimelinegroup.php:154 actions/apitimelinehome.php:175
#: actions/apitimelinementions.php:174 actions/apitimelinepublic.php:241
#: actions/apitimelineretweetedtome.php:121
#: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161
@@ -264,7 +264,7 @@ msgstr "Não foi possível gravar o perfil."
#: actions/apiaccountupdateprofilebackgroundimage.php:108
#: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80
-#: actions/apistatusesupdate.php:211 actions/avatarsettings.php:257
+#: actions/apistatusesupdate.php:212 actions/avatarsettings.php:257
#: actions/designadminpanel.php:123 actions/editapplication.php:118
#: actions/newapplication.php:101 actions/newnotice.php:94
#: lib/designsettings.php:283
@@ -363,8 +363,8 @@ msgid "Could not delete favorite."
msgstr "Não foi possível eliminar o favorito."
#: actions/apifriendshipscreate.php:109
-msgid "Could not follow user: User not found."
-msgstr "Não foi possível seguir utilizador: Utilizador não encontrado."
+msgid "Could not follow user: profile not found."
+msgstr "Não foi possível seguir o utilizador: o perfil não foi encontrado."
#: actions/apifriendshipscreate.php:118
#, php-format
@@ -380,9 +380,9 @@ msgstr ""
msgid "You cannot unfollow yourself."
msgstr "Não pode deixar de seguir-se a si próprio."
-#: actions/apifriendshipsexists.php:94
-msgid "Two user ids or screen_names must be supplied."
-msgstr "Devem ser fornecidos dois nomes de utilizador ou utilizadors."
+#: actions/apifriendshipsexists.php:91
+msgid "Two valid IDs or screen_names must be supplied."
+msgstr "Têm de ser fornecidos dois IDs ou nomes de utilizador válidos."
#: actions/apifriendshipsshow.php:134
msgid "Could not determine source user."
@@ -509,6 +509,10 @@ msgstr "Grupos de %s"
msgid "groups on %s"
msgstr "Grupos em %s"
+#: actions/apimediaupload.php:99
+msgid "Upload failed."
+msgstr "O upload falhou."
+
#: actions/apioauthauthorize.php:101
msgid "No oauth_token parameter provided."
msgstr "Não foi fornecido o parâmetro oauth_token."
@@ -650,22 +654,26 @@ msgstr "Estado apagado."
msgid "No status with that ID found."
msgstr "Não foi encontrado um estado com esse ID."
-#: actions/apistatusesupdate.php:241 actions/newnotice.php:155
+#: actions/apistatusesupdate.php:221
+msgid "Client must provide a 'status' parameter with a value."
+msgstr "O cliente tem de fornecer um parâmetro 'status' com um valor."
+
+#: actions/apistatusesupdate.php:242 actions/newnotice.php:155
#: lib/mailhandler.php:60
#, php-format
msgid "That's too long. Max notice size is %d chars."
msgstr "Demasiado longo. Tamanho máx. das notas é %d caracteres."
-#: actions/apistatusesupdate.php:282 actions/apiusershow.php:96
+#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96
msgid "Not found."
msgstr "Não encontrado."
-#: actions/apistatusesupdate.php:305 actions/newnotice.php:178
+#: actions/apistatusesupdate.php:306 actions/newnotice.php:178
#, php-format
msgid "Max notice size is %d chars, including attachment URL."
msgstr "Tamanho máx. das notas é %d caracteres, incluíndo a URL do anexo."
-#: actions/apisubscriptions.php:231 actions/apisubscriptions.php:261
+#: actions/apisubscriptions.php:232 actions/apisubscriptions.php:262
msgid "Unsupported format."
msgstr "Formato não suportado."
@@ -719,6 +727,10 @@ msgstr "Notas categorizadas com %s"
msgid "Updates tagged with %1$s on %2$s!"
msgstr "Actualizações categorizadas com %1$s em %2$s!"
+#: actions/apitrends.php:87
+msgid "API method under construction."
+msgstr "Método da API em desenvolvimento."
+
#: actions/attachment.php:73
msgid "No such attachment."
msgstr "Anexo não foi encontrado."
@@ -771,7 +783,7 @@ msgid "Preview"
msgstr "Antevisão"
#: actions/avatarsettings.php:149 actions/showapplication.php:252
-#: lib/deleteuserform.php:66 lib/noticelist.php:648
+#: lib/deleteuserform.php:66 lib/noticelist.php:656
msgid "Delete"
msgstr "Apagar"
@@ -1052,7 +1064,7 @@ msgid "Do not delete this notice"
msgstr "Não apagar esta nota"
#. TRANS: Submit button title for 'Yes' when deleting a notice.
-#: actions/deletenotice.php:158 lib/noticelist.php:648
+#: actions/deletenotice.php:158 lib/noticelist.php:656
msgid "Delete this notice"
msgstr "Apagar esta nota"
@@ -1122,13 +1134,14 @@ msgid "Theme for the site."
msgstr "O tema para o site."
#: actions/designadminpanel.php:467
-#, fuzzy
msgid "Custom theme"
-msgstr "Tema do site"
+msgstr "Tema personalizado"
#: actions/designadminpanel.php:471
msgid "You can upload a custom StatusNet theme as a .ZIP archive."
msgstr ""
+"Pode fazer o upload de um tema personalizado para o StatusNet, na forma de "
+"um arquivo .ZIP."
#: actions/designadminpanel.php:486 lib/designsettings.php:101
msgid "Change background image"
@@ -1188,11 +1201,11 @@ msgstr "Links"
#: actions/designadminpanel.php:651
msgid "Advanced"
-msgstr ""
+msgstr "Avançado"
#: actions/designadminpanel.php:655
msgid "Custom CSS"
-msgstr ""
+msgstr "CSS personalizado"
#: actions/designadminpanel.php:676 lib/designsettings.php:247
msgid "Use defaults"
@@ -1331,7 +1344,8 @@ msgstr "Nome alternativo inválido: \"%s\""
msgid "Could not update group."
msgstr "Não foi possível actualizar o grupo."
-#: actions/editgroup.php:264 classes/User_group.php:496
+#. TRANS: Server exception thrown when creating group aliases failed.
+#: actions/editgroup.php:264 classes/User_group.php:514
msgid "Could not create aliases."
msgstr "Não foi possível criar os nomes alternativos."
@@ -2486,10 +2500,10 @@ msgstr "Actualizações que contêm o termo \"%1$s\" em %2$s!"
#: actions/nudge.php:85
msgid ""
-"This user doesn't allow nudges or hasn't confirmed or set his email yet."
+"This user doesn't allow nudges or hasn't confirmed or set their email yet."
msgstr ""
-"Este utilizador não aceita toques ou ainda não confirmou ou forneceu o "
-"endereço electrónico."
+"Este utilizador não aceita toques ou ainda não confirmou ou forneceu um "
+"correio electrónico."
#: actions/nudge.php:94
msgid "Nudge sent"
@@ -2564,8 +2578,8 @@ msgid "Only %s URLs over plain HTTP please."
msgstr "Só URLs %s sobre HTTP simples, por favor."
#. TRANS: Client error on an API request with an unsupported data format.
-#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1179
-#: lib/apiaction.php:1208 lib/apiaction.php:1325
+#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1204
+#: lib/apiaction.php:1232 lib/apiaction.php:1355
msgid "Not a supported data format."
msgstr "Formato de dados não suportado."
@@ -2732,7 +2746,7 @@ msgstr "Sem acesso de escrita no directório do fundo: %s."
#: actions/pathsadminpanel.php:177
#, php-format
msgid "Locales directory not readable: %s."
-msgstr "Sem acesso de leitura ao directório de idiomas: %s."
+msgstr "Sem acesso de leitura ao directório das línguas: %s."
#: actions/pathsadminpanel.php:183
msgid "Invalid SSL server. The maximum length is 255 characters."
@@ -2760,11 +2774,11 @@ msgstr "Localização do site"
#: actions/pathsadminpanel.php:246
msgid "Path to locales"
-msgstr "Localização de idiomas"
+msgstr "Localização das línguas"
#: actions/pathsadminpanel.php:246
msgid "Directory path to locales"
-msgstr "Localização do directório de idiomas"
+msgstr "Localização do directório das línguas"
#: actions/pathsadminpanel.php:250
msgid "Fancy URLs"
@@ -3481,7 +3495,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:667
+#: actions/repeat.php:114 lib/noticelist.php:675
msgid "Repeated"
msgstr "Repetida"
@@ -3519,10 +3533,9 @@ msgstr "Fonte de respostas a %s (Atom)"
#, php-format
msgid ""
"This is the timeline showing replies to %1$s but %2$s hasn't received a "
-"notice to his attention yet."
+"notice to them yet."
msgstr ""
-"Estas são as notas de resposta a %1$s, mas %2$s ainda não recebeu nenhuma "
-"resposta."
+"Estas são as respostas a %1$s, mas ainda nenhuma nota foi endereçada a %2$s."
#: actions/replies.php:204
#, php-format
@@ -3536,11 +3549,11 @@ msgstr ""
#: actions/replies.php:206
#, php-format
msgid ""
-"You can try to [nudge %1$s](../%2$s) or [post something to his or her "
-"attention](%%%%action.newnotice%%%%?status_textarea=%3$s)."
+"You can try to [nudge %1$s](../%2$s) or [post something to them](%%%%action."
+"newnotice%%%%?status_textarea=%3$s)."
msgstr ""
-"Pode tentar [dar um toque em %1$s](../%2$s) ou [publicar algo à sua atenção]"
-"(%%%%action.newnotice%%%%?status_textarea=%3$s)."
+"Pode tentar [dar um toque em %1$s](../%2$s) ou [endereçar-lhe uma nota](%%%%"
+"action.newnotice%%%%?status_textarea=%3$s)."
#: actions/repliesrss.php:72
#, php-format
@@ -3628,7 +3641,7 @@ msgstr "Organização"
msgid "Description"
msgstr "Descrição"
-#: actions/showapplication.php:192 actions/showgroup.php:444
+#: actions/showapplication.php:192 actions/showgroup.php:436
#: lib/profileaction.php:187
msgid "Statistics"
msgstr "Estatísticas"
@@ -3719,8 +3732,8 @@ msgstr ""
#: actions/showfavorites.php:208
#, php-format
msgid ""
-"%s hasn't added any notices to his favorites yet. Post something interesting "
-"they would add to their favorites :)"
+"%s hasn't added any favorite notices yet. Post something interesting they "
+"would add to their favorites :)"
msgstr ""
"%s ainda não adicionou nenhuma nota às favoritas. Publique algo interessante "
"que mude este estado de coisas :)"
@@ -3728,13 +3741,13 @@ msgstr ""
#: actions/showfavorites.php:212
#, php-format
msgid ""
-"%s hasn't added any notices to his favorites yet. Why not [register an "
-"account](%%%%action.register%%%%) and then post something interesting they "
-"would add to their favorites :)"
+"%s hasn't added any favorite notices yet. Why not [register an account](%%%%"
+"action.register%%%%) and then post something interesting they would add to "
+"their favorites :)"
msgstr ""
"%s ainda não adicionou nenhuma nota às favoritas. Que tal [registar uma "
-"conta](%%action.register%%) e publicar algo interessante que mude este "
-"estado de coisas :)"
+"conta](%%%%action.register%%%%) e publicar algo tão interessante que mude "
+"este estado de coisas :)"
#: actions/showfavorites.php:243
msgid "This is a way to share what you like."
@@ -3792,7 +3805,7 @@ msgstr "Fonte de notas do grupo %s (Atom)"
msgid "FOAF for %s group"
msgstr "FOAF do grupo %s"
-#: actions/showgroup.php:393 actions/showgroup.php:453 lib/groupnav.php:91
+#: actions/showgroup.php:393 actions/showgroup.php:445 lib/groupnav.php:91
msgid "Members"
msgstr "Membros"
@@ -3806,11 +3819,11 @@ msgstr "(Nenhum)"
msgid "All members"
msgstr "Todos os membros"
-#: actions/showgroup.php:447
+#: actions/showgroup.php:439
msgid "Created"
msgstr "Criado"
-#: actions/showgroup.php:463
+#: actions/showgroup.php:455
#, php-format
msgid ""
"**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3826,7 +3839,7 @@ msgstr ""
"[Registe-se agora](%%action.register%%) para se juntar a este grupo e a "
"muitos mais! ([Saber mais](%%doc.help%%))"
-#: actions/showgroup.php:469
+#: actions/showgroup.php:461
#, php-format
msgid ""
"**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3839,7 +3852,7 @@ msgstr ""
"programa de Software Livre [StatusNet](http://status.net/). Os membros deste "
"grupo partilham mensagens curtas acerca das suas vidas e interesses. "
-#: actions/showgroup.php:497
+#: actions/showgroup.php:489
msgid "Admins"
msgstr "Gestores"
@@ -3916,10 +3929,10 @@ msgstr ""
#: 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)."
+"You can try to nudge %1$s or [post something to them](%%%%action.newnotice%%%"
+"%?status_textarea=%2$s)."
msgstr ""
-"Pode tentar dar um toque em %1$s ou [publicar algo à sua atenção](%%%%action."
+"Pode tentar dar um toque em %1$s ou [endereçar-lhe uma nota](%%%%action."
"newnotice%%%%?status_textarea=%2$s)."
#: actions/showstream.php:243
@@ -4306,7 +4319,8 @@ msgstr "Gravar configurações do instantâneo"
msgid "You are not subscribed to that profile."
msgstr "Não subscreveu esse perfil."
-#: actions/subedit.php:83 classes/Subscription.php:132
+#. TRANS: Exception thrown when a subscription could not be stored on the server.
+#: actions/subedit.php:83 classes/Subscription.php:136
msgid "Could not save subscription."
msgstr "Não foi possível gravar a subscrição."
@@ -4484,10 +4498,6 @@ msgstr ""
msgid "No such tag."
msgstr "Categoria não foi encontrada."
-#: actions/twitapitrends.php:85
-msgid "API method under construction."
-msgstr "Método da API em desenvolvimento."
-
#: actions/unblock.php:59
msgid "You haven't blocked that user."
msgstr "Não bloqueou esse utilizador."
@@ -4797,81 +4807,128 @@ msgstr "Versão"
msgid "Author(s)"
msgstr "Autores"
-#: classes/File.php:185
+#. TRANS: Server exception thrown when a URL cannot be processed.
+#: classes/File.php:143
+#, php-format
+msgid "Cannot process URL '%s'"
+msgstr "Não é possível processar a URL '$s'"
+
+#. TRANS: Server exception thrown when... Robin thinks something is impossible!
+#: classes/File.php:175
+msgid "Robin thinks something is impossible."
+msgstr "o Robin acha que algo é impossível."
+
+#. TRANS: Message given if an upload is larger than the configured maximum.
+#. TRANS: %1$d is the byte limit for uploads, %2$d is the byte count for the uploaded file.
+#: classes/File.php:190
#, php-format
msgid ""
-"No file may be larger than %d bytes and the file you sent was %d bytes. Try "
-"to upload a smaller version."
+"No file may be larger than %1$d bytes and the file you sent was %2$d bytes. "
+"Try to upload a smaller version."
msgstr ""
-"Nenhum ficheiro pode ter mais de %d bytes e o que enviou tinha %d bytes. "
-"Tente carregar uma versão menor."
+"Nenhum ficheiro pode ter mais de %1$d bytes e o que enviou tinha %2$d bytes. "
+"Tente enviar uma versão mais pequena."
-#: classes/File.php:195
+#. TRANS: Message given if an upload would exceed user quota.
+#. TRANS: %d (number) is the user quota in bytes.
+#: classes/File.php:202
#, php-format
msgid "A file this large would exceed your user quota of %d bytes."
msgstr ""
"Um ficheiro desta dimensão excederia a sua quota de utilizador de %d bytes."
-#: classes/File.php:202
+#. TRANS: Message given id an upload would exceed a user's monthly quota.
+#. TRANS: $d (number) is the monthly user quota in bytes.
+#: classes/File.php:211
#, php-format
msgid "A file this large would exceed your monthly quota of %d bytes."
msgstr "Um ficheiro desta dimensão excederia a sua quota mensal de %d bytes."
-#: classes/Group_member.php:41
+#. TRANS: Client exception thrown if a file upload does not have a valid name.
+#: classes/File.php:248 classes/File.php:263
+msgid "Invalid filename."
+msgstr "Nome de ficheiro inválido."
+
+#. TRANS: Exception thrown when joining a group fails.
+#: classes/Group_member.php:42
msgid "Group join failed."
msgstr "Entrada no grupo falhou."
-#: classes/Group_member.php:53
+#. TRANS: Exception thrown when trying to leave a group the user is not a member of.
+#: classes/Group_member.php:55
msgid "Not part of group."
msgstr "Não faz parte do grupo."
-#: classes/Group_member.php:60
+#. TRANS: Exception thrown when trying to leave a group fails.
+#: classes/Group_member.php:63
msgid "Group leave failed."
msgstr "Saída do grupo falhou."
-#: classes/Local_group.php:41
+#. TRANS: Server exception thrown when updating a local group fails.
+#: classes/Local_group.php:42
msgid "Could not update local group."
msgstr "Não foi possível actualizar o grupo local."
-#: classes/Login_token.php:76
+#. TRANS: Exception thrown when trying creating a login token failed.
+#. TRANS: %s is the user nickname for which token creation failed.
+#: classes/Login_token.php:78
#, php-format
msgid "Could not create login token for %s"
msgstr "Não foi possível criar a chave de entrada para %s"
-#: classes/Message.php:45
+#. TRANS: Exception thrown when database name or Data Source Name could not be found.
+#: classes/Memcached_DataObject.php:533
+msgid "No database name or DSN found anywhere."
+msgstr "Não foi encontrado nenhum nome de base de dados ou DSN."
+
+#. TRANS: Client exception thrown when a user tries to send a direct message while being banned from sending them.
+#: classes/Message.php:46
msgid "You are banned from sending direct messages."
msgstr "Está proibido de enviar mensagens directas."
-#: classes/Message.php:61
+#. TRANS: Message given when a message could not be stored on the server.
+#: classes/Message.php:63
msgid "Could not insert message."
msgstr "Não foi possível inserir a mensagem."
-#: classes/Message.php:71
+#. TRANS: Message given when a message could not be updated on the server.
+#: classes/Message.php:74
msgid "Could not update message with new URI."
msgstr "Não foi possível actualizar a mensagem com a nova URI."
+#. TRANS: Server exception thrown when a user profile for a notice cannot be found.
+#. TRANS: %1$d is a profile ID (number), %2$d is a notice ID (number).
+#: classes/Notice.php:98
+#, php-format
+msgid "No such profile (%1$d) for notice (%2$d)."
+msgstr "Não existe o perfil (%1$d) para a nota (%2$d)."
+
#. TRANS: Server exception. %s are the error details.
-#: classes/Notice.php:182
+#: classes/Notice.php:190
#, php-format
msgid "Database error inserting hashtag: %s"
-msgstr "Erro na base de dados ao inserir a marca: %s"
+msgstr "Erro na base de dados ao inserir o elemento criptográfico: %s"
-#: classes/Notice.php:251
+#. TRANS: Client exception thrown if a notice contains too many characters.
+#: classes/Notice.php:260
msgid "Problem saving notice. Too long."
msgstr "Problema na gravação da nota. Demasiado longa."
-#: classes/Notice.php:255
+#. TRANS: Client exception thrown when trying to save a notice for an unknown user.
+#: classes/Notice.php:265
msgid "Problem saving notice. Unknown user."
msgstr "Problema na gravação da nota. Utilizador desconhecido."
-#: classes/Notice.php:260
+#. TRANS: Client exception thrown when a user tries to post too many notices in a given time frame.
+#: classes/Notice.php:271
msgid ""
"Too many notices too fast; take a breather and post again in a few minutes."
msgstr ""
"Demasiadas notas, demasiado rápido; descanse e volte a publicar daqui a "
"alguns minutos."
-#: classes/Notice.php:266
+#. TRANS: Client exception thrown when a user tries to post too many duplicate notices in a given time frame.
+#: classes/Notice.php:278
msgid ""
"Too many duplicate messages too quickly; take a breather and post again in a "
"few minutes."
@@ -4879,71 +4936,120 @@ msgstr ""
"Demasiadas mensagens duplicadas, demasiado rápido; descanse e volte a "
"publicar daqui a alguns minutos."
-#: classes/Notice.php:272
+#. TRANS: Client exception thrown when a user tries to post while being banned.
+#: classes/Notice.php:286
msgid "You are banned from posting notices on this site."
msgstr "Está proibido de publicar notas neste site."
-#: classes/Notice.php:338 classes/Notice.php:364
+#. TRANS: Server exception thrown when a notice cannot be saved.
+#. TRANS: Server exception thrown when a notice cannot be updated.
+#: classes/Notice.php:353 classes/Notice.php:380
msgid "Problem saving notice."
msgstr "Problema na gravação da nota."
-#: classes/Notice.php:973
+#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups().
+#: classes/Notice.php:892
+msgid "Bad type provided to saveKnownGroups"
+msgstr "O tipo fornecido ao método saveKnownGroups é incorrecto"
+
+#. TRANS: Server exception thrown when an update for a group inbox fails.
+#: classes/Notice.php:991
msgid "Problem saving group inbox."
msgstr "Problema na gravação da caixa de entrada do grupo."
#. TRANS: Message used to repeat a notice. RT is the abbreviation of 'retweet'.
#. TRANS: %1$s is the repeated user's name, %2$s is the repeated notice.
-#: classes/Notice.php:1564
+#: classes/Notice.php:1614
#, php-format
msgid "RT @%1$s %2$s"
msgstr "RT @%1$s %2$s"
-#: classes/Subscription.php:74 lib/oauthstore.php:465
+#. TRANS: Exception thrown when trying to revoke an existing role for a user that does not exist.
+#. TRANS: %1$s is the role name, %2$s is the user ID (number).
+#: classes/Profile.php:740
+#, php-format
+msgid "Cannot revoke role \"%1$s\" for user #%2$d; does not exist."
+msgstr ""
+"Não é possível revogar a função \"%1$s\" do utilizador #%2$d; não existe."
+
+#. TRANS: Exception thrown when trying to revoke a role for a user with a failing database query.
+#. TRANS: %1$s is the role name, %2$s is the user ID (number).
+#: classes/Profile.php:749
+#, php-format
+msgid "Cannot revoke role \"%1$s\" for user #%2$d; database error."
+msgstr ""
+"Não é possível revogar a função \"%1$s\" do utilizador #%2$d; erro na base "
+"de dados."
+
+#. TRANS: Exception thrown when a right for a non-existing user profile is checked.
+#: classes/Remote_profile.php:54
+msgid "Missing profile."
+msgstr "Perfil não existe."
+
+#. TRANS: Exception thrown when a tag cannot be saved.
+#: classes/Status_network.php:346
+msgid "Unable to save tag."
+msgstr "Não foi possível gravar a categoria."
+
+#. TRANS: Exception thrown when trying to subscribe while being banned from subscribing.
+#: classes/Subscription.php:75 lib/oauthstore.php:465
msgid "You have been banned from subscribing."
msgstr "Foi bloqueado de fazer subscrições"
-#: classes/Subscription.php:78
+#. TRANS: Exception thrown when trying to subscribe while already subscribed.
+#: classes/Subscription.php:80
msgid "Already subscribed!"
msgstr "Já subscrito!"
-#: classes/Subscription.php:82
+#. TRANS: Exception thrown when trying to subscribe to a user who has blocked the subscribing user.
+#: classes/Subscription.php:85
msgid "User has blocked you."
msgstr "O utilizador bloqueou-o."
-#: classes/Subscription.php:167
+#. TRANS: Exception thrown when trying to unsibscribe without a subscription.
+#: classes/Subscription.php:171
msgid "Not subscribed!"
msgstr "Não subscrito!"
-#: classes/Subscription.php:173
-msgid "Couldn't delete self-subscription."
+#. TRANS: Exception thrown when trying to unsubscribe a user from themselves.
+#: classes/Subscription.php:178
+msgid "Could not delete self-subscription."
msgstr "Não foi possível apagar a auto-subscrição."
-#: classes/Subscription.php:200
-msgid "Couldn't delete subscription OMB token."
-msgstr "Não foi possível apagar a chave de subscrição OMB."
+#. TRANS: Exception thrown when the OMB token for a subscription could not deleted on the server.
+#: classes/Subscription.php:206
+msgid "Could not delete subscription OMB token."
+msgstr "Não foi possível apagar a chave OMB da subscrição."
-#: classes/Subscription.php:211
-msgid "Couldn't delete subscription."
+#. TRANS: Exception thrown when a subscription could not be deleted on the server.
+#: classes/Subscription.php:218
+msgid "Could not delete subscription."
msgstr "Não foi possível apagar a subscrição."
-#: classes/User.php:363
+#. TRANS: Notice given on user registration.
+#. TRANS: %1$s is the sitename, $2$s is the registering user's nickname.
+#: classes/User.php:365
#, php-format
msgid "Welcome to %1$s, @%2$s!"
msgstr "%1$s dá-lhe as boas-vindas, @%2$s!"
-#: classes/User_group.php:480
+#. TRANS: Server exception thrown when creating a group failed.
+#: classes/User_group.php:496
msgid "Could not create group."
msgstr "Não foi possível criar o grupo."
-#: classes/User_group.php:489
+#. TRANS: Server exception thrown when updating a group URI failed.
+#: classes/User_group.php:506
msgid "Could not set group URI."
msgstr "Não foi possível configurar a URI do grupo."
-#: classes/User_group.php:510
+#. TRANS: Server exception thrown when setting group membership failed.
+#: classes/User_group.php:529
msgid "Could not set group membership."
msgstr "Não foi possível configurar membros do grupo."
-#: classes/User_group.php:524
+#. TRANS: Server exception thrown when saving local group information failed.
+#: classes/User_group.php:544
msgid "Could not save local group info."
msgstr "Não foi possível gravar a informação do grupo local."
@@ -6413,7 +6519,7 @@ msgstr ""
"conversa com outros utilizadores. Outros podem enviar-lhe mensagens, a que "
"só você terá acesso."
-#: lib/mailbox.php:227 lib/noticelist.php:497
+#: lib/mailbox.php:227 lib/noticelist.php:505
msgid "from"
msgstr "de"
@@ -6472,24 +6578,24 @@ msgstr "Não foi possível gravar o ficheiro no disco."
msgid "File upload stopped by extension."
msgstr "Transferência do ficheiro interrompida pela extensão."
-#: lib/mediafile.php:179 lib/mediafile.php:216
+#: lib/mediafile.php:179 lib/mediafile.php:217
msgid "File exceeds user's quota."
msgstr "Ficheiro excede quota do utilizador."
-#: lib/mediafile.php:196 lib/mediafile.php:233
+#: lib/mediafile.php:197 lib/mediafile.php:234
msgid "File could not be moved to destination directory."
msgstr "Não foi possível mover o ficheiro para o directório de destino."
-#: lib/mediafile.php:201 lib/mediafile.php:237
+#: lib/mediafile.php:202 lib/mediafile.php:238
msgid "Could not determine file's MIME type."
msgstr "Não foi possível determinar o tipo MIME do ficheiro."
-#: lib/mediafile.php:270
+#: lib/mediafile.php:318
#, php-format
msgid " Try using another %s format."
msgstr " Tente usar outro tipo de %s."
-#: lib/mediafile.php:275
+#: lib/mediafile.php:323
#, php-format
msgid "%s is not a supported file type on this server."
msgstr "%s não é um tipo de ficheiro suportado neste servidor."
@@ -6545,51 +6651,51 @@ msgstr ""
"tente novamente mais tarde"
#. TRANS: Used in coordinates as abbreviation of north
-#: lib/noticelist.php:430
+#: lib/noticelist.php:436
msgid "N"
msgstr "N"
#. TRANS: Used in coordinates as abbreviation of south
-#: lib/noticelist.php:432
+#: lib/noticelist.php:438
msgid "S"
msgstr "S"
#. TRANS: Used in coordinates as abbreviation of east
-#: lib/noticelist.php:434
+#: lib/noticelist.php:440
msgid "E"
msgstr "E"
#. TRANS: Used in coordinates as abbreviation of west
-#: lib/noticelist.php:436
+#: lib/noticelist.php:442
msgid "W"
msgstr "O"
-#: lib/noticelist.php:438
+#: lib/noticelist.php:444
#, php-format
msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
msgstr "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
-#: lib/noticelist.php:447
+#: lib/noticelist.php:453
msgid "at"
msgstr "coords."
-#: lib/noticelist.php:559
+#: lib/noticelist.php:567
msgid "in context"
msgstr "no contexto"
-#: lib/noticelist.php:594
+#: lib/noticelist.php:602
msgid "Repeated by"
msgstr "Repetida por"
-#: lib/noticelist.php:621
+#: lib/noticelist.php:629
msgid "Reply to this notice"
msgstr "Responder a esta nota"
-#: lib/noticelist.php:622
+#: lib/noticelist.php:630
msgid "Reply"
msgstr "Responder"
-#: lib/noticelist.php:666
+#: lib/noticelist.php:674
msgid "Notice repeated"
msgstr "Nota repetida"
@@ -6845,47 +6951,49 @@ msgstr "Nenhum"
#: lib/themeuploader.php:50
msgid "This server cannot handle theme uploads without ZIP support."
msgstr ""
+"Este servidor não pode processar uploads de temas sem suporte do formato ZIP."
#: lib/themeuploader.php:58 lib/themeuploader.php:61
-#, fuzzy
-msgid "Theme upload missing or failed."
-msgstr "Ocorreu um erro de sistema ao transferir o ficheiro."
+msgid "The theme file is missing or the upload failed."
+msgstr "O ficheiro do tema não foi localizado ou o upload falhou."
#: lib/themeuploader.php:91 lib/themeuploader.php:102
#: lib/themeuploader.php:253 lib/themeuploader.php:257
#: lib/themeuploader.php:265 lib/themeuploader.php:272
-#, fuzzy
msgid "Failed saving theme."
-msgstr "Falha ao actualizar avatar."
+msgstr "Não foi possível gravar o tema."
#: lib/themeuploader.php:139
msgid "Invalid theme: bad directory structure."
-msgstr ""
+msgstr "Tema inválido: estrutura de directórios incorrecta."
#: lib/themeuploader.php:166
#, php-format
msgid "Uploaded theme is too large; must be less than %d bytes uncompressed."
msgstr ""
+"O tema carregado é demasiado grande; tem de ter menos de %d bytes "
+"descomprimido."
#: lib/themeuploader.php:178
msgid "Invalid theme archive: missing file css/display.css"
-msgstr ""
+msgstr "Arquivo do tema inválido: falta o ficheiro css/display.css"
#: lib/themeuploader.php:205
msgid ""
"Theme contains invalid file or folder name. Stick with ASCII letters, "
"digits, underscore, and minus sign."
msgstr ""
+"Tema contém um nome de ficheiro ou de directório inválido. Use somente "
+"letras ASCII, algarismos, sublinhados e o sinal de menos."
#: lib/themeuploader.php:216
#, php-format
msgid "Theme contains file of type '.%s', which is not allowed."
-msgstr ""
+msgstr "Tema contém um ficheiro do tipo '.%s', o que não é permitido."
#: lib/themeuploader.php:234
-#, fuzzy
msgid "Error opening theme archive."
-msgstr "Erro ao actualizar o perfil remoto."
+msgstr "Ocorreu um erro ao abrir o arquivo do tema."
#: lib/topposterssection.php:74
msgid "Top posters"
diff --git a/locale/pt_BR/LC_MESSAGES/statusnet.po b/locale/pt_BR/LC_MESSAGES/statusnet.po
index a12a309f3..cb77836d4 100644
--- a/locale/pt_BR/LC_MESSAGES/statusnet.po
+++ b/locale/pt_BR/LC_MESSAGES/statusnet.po
@@ -2,6 +2,7 @@
#
# Author@translatewiki.net: Aracnus
# Author@translatewiki.net: Ewout
+# Author@translatewiki.net: Giro720
# Author@translatewiki.net: Luckas Blade
# Author@translatewiki.net: McDutchie
# Author@translatewiki.net: Vuln
@@ -12,12 +13,12 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-06-16 22:18+0000\n"
-"PO-Revision-Date: 2010-06-21 18:04:52+0000\n"
+"POT-Creation-Date: 2010-08-03 13:21+0000\n"
+"PO-Revision-Date: 2010-08-03 13:22:23+0000\n"
"Language-Team: Brazilian Portuguese\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.17alpha (r68367); Translate extension (2010-06-12)\n"
+"X-Generator: MediaWiki 1.17alpha (r70381); Translate extension (2010-07-21)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: pt-br\n"
"X-Message-Group: out-statusnet\n"
@@ -101,7 +102,7 @@ msgstr "Esta página não existe."
#: actions/apidirectmessagenew.php:74 actions/apigroupcreate.php:113
#: actions/apigroupismember.php:91 actions/apigroupjoin.php:100
#: actions/apigroupleave.php:100 actions/apigrouplist.php:73
-#: actions/apistatusesupdate.php:228 actions/apisubscriptions.php:87
+#: actions/apistatusesupdate.php:229 actions/apisubscriptions.php:87
#: actions/apitimelinefavorites.php:72 actions/apitimelinefriends.php:174
#: actions/apitimelinehome.php:80 actions/apitimelinementions.php:80
#: actions/apitimelineuser.php:82 actions/avatarbynickname.php:75
@@ -170,20 +171,20 @@ msgstr ""
#. TRANS: %1$s is user nickname, %2$s is user nickname, %2$s is user nickname prefixed with "@"
#: actions/all.php:146
-#, php-format
+#, fuzzy, 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)."
+"You can try to [nudge %1$s](../%2$s) from their profile or [post something "
+"to them](%%%%action.newnotice%%%%?status_textarea=%3$s)."
msgstr ""
"Você pode tentar [chamar a atenção de %1$s](../%2$s) em seu perfil ou "
"[publicar alguma coisa que desperte seu interesse](%%%%action.newnotice%%%%?"
"status_textarea=%3$s)."
#: actions/all.php:149 actions/replies.php:210 actions/showstream.php:211
-#, php-format
+#, fuzzy, php-format
msgid ""
"Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
-"post a notice to his or her attention."
+"post a notice to them."
msgstr ""
"Por que não [registrar uma conta](%%%%action.register%%%%) e então chamar a "
"atenção de %s ou publicar uma mensagem para sua atenção."
@@ -218,7 +219,7 @@ msgstr "Atualizações de %1$s e amigos no %2$s!"
#: actions/apistatusesshow.php:109 actions/apistatusnetconfig.php:141
#: actions/apistatusnetversion.php:93 actions/apisubscriptions.php:111
#: actions/apitimelinefavorites.php:174 actions/apitimelinefriends.php:271
-#: actions/apitimelinegroup.php:152 actions/apitimelinehome.php:175
+#: actions/apitimelinegroup.php:154 actions/apitimelinehome.php:175
#: actions/apitimelinementions.php:174 actions/apitimelinepublic.php:241
#: actions/apitimelineretweetedtome.php:121
#: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161
@@ -268,7 +269,7 @@ msgstr "Não foi possível salvar o perfil."
#: actions/apiaccountupdateprofilebackgroundimage.php:108
#: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80
-#: actions/apistatusesupdate.php:211 actions/avatarsettings.php:257
+#: actions/apistatusesupdate.php:212 actions/avatarsettings.php:257
#: actions/designadminpanel.php:123 actions/editapplication.php:118
#: actions/newapplication.php:101 actions/newnotice.php:94
#: lib/designsettings.php:283
@@ -368,7 +369,8 @@ msgid "Could not delete favorite."
msgstr "Não foi possível excluir a favorita."
#: actions/apifriendshipscreate.php:109
-msgid "Could not follow user: User not found."
+#, fuzzy
+msgid "Could not follow user: profile not found."
msgstr "Não é possível seguir o usuário: Usuário não encontrado."
#: actions/apifriendshipscreate.php:118
@@ -384,8 +386,9 @@ msgstr "Não é possível deixar de seguir o usuário: Usuário não encontrado.
msgid "You cannot unfollow yourself."
msgstr "Você não pode deixar de seguir você mesmo!"
-#: actions/apifriendshipsexists.php:94
-msgid "Two user ids or screen_names must be supplied."
+#: actions/apifriendshipsexists.php:91
+#, fuzzy
+msgid "Two valid IDs or screen_names must be supplied."
msgstr "Duas IDs de usuário ou screen_names devem ser informados."
#: actions/apifriendshipsshow.php:134
@@ -515,6 +518,11 @@ msgstr "Grupos de %s"
msgid "groups on %s"
msgstr "grupos no %s"
+#: actions/apimediaupload.php:99
+#, fuzzy
+msgid "Upload failed."
+msgstr "Enviar arquivo"
+
#: actions/apioauthauthorize.php:101
msgid "No oauth_token parameter provided."
msgstr "Não foi fornecido nenhum parâmetro oauth_token"
@@ -662,22 +670,26 @@ msgstr "A mensagem foi excluída."
msgid "No status with that ID found."
msgstr "Não foi encontrada nenhuma mensagem com esse ID."
-#: actions/apistatusesupdate.php:241 actions/newnotice.php:155
+#: actions/apistatusesupdate.php:221
+msgid "Client must provide a 'status' parameter with a value."
+msgstr ""
+
+#: actions/apistatusesupdate.php:242 actions/newnotice.php:155
#: lib/mailhandler.php:60
#, php-format
msgid "That's too long. Max notice size is %d chars."
msgstr "Está muito extenso. O tamanho máximo é de %s caracteres."
-#: actions/apistatusesupdate.php:282 actions/apiusershow.php:96
+#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96
msgid "Not found."
msgstr "Não encontrado."
-#: actions/apistatusesupdate.php:305 actions/newnotice.php:178
+#: actions/apistatusesupdate.php:306 actions/newnotice.php:178
#, php-format
msgid "Max notice size is %d chars, including attachment URL."
msgstr "O tamanho máximo da mensagem é de %s caracteres"
-#: actions/apisubscriptions.php:231 actions/apisubscriptions.php:261
+#: actions/apisubscriptions.php:232 actions/apisubscriptions.php:262
msgid "Unsupported format."
msgstr "Formato não suportado."
@@ -731,6 +743,10 @@ msgstr "Mensagens etiquetadas como %s"
msgid "Updates tagged with %1$s on %2$s!"
msgstr "Mensagens etiquetadas como %1$s no %2$s!"
+#: actions/apitrends.php:87
+msgid "API method under construction."
+msgstr "O método da API está em construção."
+
#: actions/attachment.php:73
msgid "No such attachment."
msgstr "Este anexo não existe."
@@ -784,7 +800,7 @@ msgid "Preview"
msgstr "Visualização"
#: actions/avatarsettings.php:149 actions/showapplication.php:252
-#: lib/deleteuserform.php:66 lib/noticelist.php:648
+#: lib/deleteuserform.php:66 lib/noticelist.php:656
msgid "Delete"
msgstr "Excluir"
@@ -1066,7 +1082,7 @@ msgid "Do not delete this notice"
msgstr "Não excluir esta mensagem."
#. TRANS: Submit button title for 'Yes' when deleting a notice.
-#: actions/deletenotice.php:158 lib/noticelist.php:648
+#: actions/deletenotice.php:158 lib/noticelist.php:656
msgid "Delete this notice"
msgstr "Excluir esta mensagem"
@@ -1346,7 +1362,8 @@ msgstr "Apelido inválido: \"%s\""
msgid "Could not update group."
msgstr "Não foi possível atualizar o grupo."
-#: actions/editgroup.php:264 classes/User_group.php:496
+#. TRANS: Server exception thrown when creating group aliases failed.
+#: actions/editgroup.php:264 classes/User_group.php:514
msgid "Could not create aliases."
msgstr "Não foi possível criar os apelidos."
@@ -2511,8 +2528,9 @@ msgid "Updates matching search term \"%1$s\" on %2$s!"
msgstr "Mensagens correspondentes aos termos \"%1$s\" no %2$s!"
#: actions/nudge.php:85
+#, fuzzy
msgid ""
-"This user doesn't allow nudges or hasn't confirmed or set his email yet."
+"This user doesn't allow nudges or hasn't confirmed or set their email yet."
msgstr ""
"Esse usuário não permite ser chamado à atenção ou ainda não confirmou ou "
"configurou seu e-mail."
@@ -2591,8 +2609,8 @@ msgid "Only %s URLs over plain HTTP please."
msgstr "Por favor, somente URLs %s sobre HTTP puro."
#. TRANS: Client error on an API request with an unsupported data format.
-#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1179
-#: lib/apiaction.php:1208 lib/apiaction.php:1325
+#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1204
+#: lib/apiaction.php:1232 lib/apiaction.php:1355
msgid "Not a supported data format."
msgstr "Não é um formato de dados suportado."
@@ -3508,7 +3526,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:667
+#: actions/repeat.php:114 lib/noticelist.php:675
msgid "Repeated"
msgstr "Repetida"
@@ -3543,10 +3561,10 @@ msgid "Replies feed for %s (Atom)"
msgstr "Fonte de respostas para %s (Atom)"
#: actions/replies.php:199
-#, php-format
+#, fuzzy, php-format
msgid ""
"This is the timeline showing replies to %1$s but %2$s hasn't received a "
-"notice to his attention yet."
+"notice to them yet."
msgstr ""
"Esse é o fluxo de mensagens de resposta para %1$s, mas %2$s ainda não "
"recebeu nenhuma mensagem direcionada a ele(a)."
@@ -3561,10 +3579,10 @@ msgstr ""
"pessoas ou [associe-se a grupos](%%action.groups%%)."
#: actions/replies.php:206
-#, php-format
+#, fuzzy, php-format
msgid ""
-"You can try to [nudge %1$s](../%2$s) or [post something to his or her "
-"attention](%%%%action.newnotice%%%%?status_textarea=%3$s)."
+"You can try to [nudge %1$s](../%2$s) or [post something to them](%%%%action."
+"newnotice%%%%?status_textarea=%3$s)."
msgstr ""
"Você pode tentar [chamar a atenção de %1$s](../%2$s) ou [publicar alguma "
"coisa que desperte seu interesse](%%%%action.newnotice%%%%?status_textarea=%3"
@@ -3656,7 +3674,7 @@ msgstr "Organização"
msgid "Description"
msgstr "Descrição"
-#: actions/showapplication.php:192 actions/showgroup.php:444
+#: actions/showapplication.php:192 actions/showgroup.php:436
#: lib/profileaction.php:187
msgid "Statistics"
msgstr "Estatísticas"
@@ -3744,20 +3762,20 @@ msgstr ""
"para destacar."
#: actions/showfavorites.php:208
-#, php-format
+#, fuzzy, php-format
msgid ""
-"%s hasn't added any notices to his favorites yet. Post something interesting "
-"they would add to their favorites :)"
+"%s hasn't added any favorite notices yet. Post something interesting they "
+"would add to their favorites :)"
msgstr ""
"%s não adicionou nenhuma mensagem às suas favoritas. Publique alguma coisa "
"interessante para para as pessoas marcarem como favorita. :)"
#: actions/showfavorites.php:212
-#, php-format
+#, fuzzy, php-format
msgid ""
-"%s hasn't added any notices to his favorites yet. Why not [register an "
-"account](%%%%action.register%%%%) and then post something interesting they "
-"would add to their favorites :)"
+"%s hasn't added any favorite notices yet. Why not [register an account](%%%%"
+"action.register%%%%) and then post something interesting they would add to "
+"their favorites :)"
msgstr ""
"%s não adicionou nenhuma mensagem às suas favoritas. Por que você não "
"[registra uma conta](%%%%action.register%%%%) e publica alguma coisa "
@@ -3819,7 +3837,7 @@ msgstr "Fonte de mensagens do grupo %s (Atom)"
msgid "FOAF for %s group"
msgstr "FOAF para o grupo %s"
-#: actions/showgroup.php:393 actions/showgroup.php:453 lib/groupnav.php:91
+#: actions/showgroup.php:393 actions/showgroup.php:445 lib/groupnav.php:91
msgid "Members"
msgstr "Membros"
@@ -3833,11 +3851,11 @@ msgstr "(Nenhum)"
msgid "All members"
msgstr "Todos os membros"
-#: actions/showgroup.php:447
+#: actions/showgroup.php:439
msgid "Created"
msgstr "Criado"
-#: actions/showgroup.php:463
+#: actions/showgroup.php:455
#, php-format
msgid ""
"**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3853,7 +3871,7 @@ msgstr ""
"para se tornar parte deste grupo e muito mais! ([Saiba mais](%%%%doc.help%%%"
"%))"
-#: actions/showgroup.php:469
+#: actions/showgroup.php:461
#, php-format
msgid ""
"**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3866,7 +3884,7 @@ msgstr ""
"[StatusNet](http://status.net/). Seus membros compartilham mensagens curtas "
"sobre suas vidas e interesses. "
-#: actions/showgroup.php:497
+#: actions/showgroup.php:489
msgid "Admins"
msgstr "Administradores"
@@ -3943,10 +3961,10 @@ msgstr ""
"mensagem. Que tal começar agora? :)"
#: actions/showstream.php:207
-#, php-format
+#, fuzzy, php-format
msgid ""
-"You can try to nudge %1$s or [post something to his or her attention](%%%%"
-"action.newnotice%%%%?status_textarea=%2$s)."
+"You can try to nudge %1$s or [post something to them](%%%%action.newnotice%%%"
+"%?status_textarea=%2$s)."
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)."
@@ -4333,7 +4351,8 @@ msgstr "Salvar as configurações de estatísticas"
msgid "You are not subscribed to that profile."
msgstr "Você não está assinando esse perfil."
-#: actions/subedit.php:83 classes/Subscription.php:132
+#. TRANS: Exception thrown when a subscription could not be stored on the server.
+#: actions/subedit.php:83 classes/Subscription.php:136
msgid "Could not save subscription."
msgstr "Não foi possível salvar a assinatura."
@@ -4511,10 +4530,6 @@ msgstr ""
msgid "No such tag."
msgstr "Esta etiqueta não existe."
-#: actions/twitapitrends.php:85
-msgid "API method under construction."
-msgstr "O método da API está em construção."
-
#: actions/unblock.php:59
msgid "You haven't blocked that user."
msgstr "Você não bloqueou esse usuário."
@@ -4828,80 +4843,128 @@ msgstr "Versão"
msgid "Author(s)"
msgstr "Autor(es)"
-#: classes/File.php:185
+#. TRANS: Server exception thrown when a URL cannot be processed.
+#: classes/File.php:143
#, php-format
+msgid "Cannot process URL '%s'"
+msgstr ""
+
+#. TRANS: Server exception thrown when... Robin thinks something is impossible!
+#: classes/File.php:175
+msgid "Robin thinks something is impossible."
+msgstr ""
+
+#. TRANS: Message given if an upload is larger than the configured maximum.
+#. TRANS: %1$d is the byte limit for uploads, %2$d is the byte count for the uploaded file.
+#: classes/File.php:190
+#, fuzzy, php-format
msgid ""
-"No file may be larger than %d bytes and the file you sent was %d bytes. Try "
-"to upload a smaller version."
+"No file may be larger than %1$d bytes and the file you sent was %2$d bytes. "
+"Try to upload a smaller version."
msgstr ""
"Nenhum arquivo pode ser maior que %d bytes e o arquivo que você enviou "
"possui %d bytes. Experimente enviar uma versão menor."
-#: classes/File.php:195
+#. TRANS: Message given if an upload would exceed user quota.
+#. TRANS: %d (number) is the user quota in bytes.
+#: classes/File.php:202
#, php-format
msgid "A file this large would exceed your user quota of %d bytes."
msgstr "Um arquivo deste tamanho excederá a sua conta de %d bytes."
-#: classes/File.php:202
+#. TRANS: Message given id an upload would exceed a user's monthly quota.
+#. TRANS: $d (number) is the monthly user quota in bytes.
+#: classes/File.php:211
#, php-format
msgid "A file this large would exceed your monthly quota of %d bytes."
msgstr "Um arquivo deste tamanho excederá a sua conta mensal de %d bytes."
-#: classes/Group_member.php:41
+#. TRANS: Client exception thrown if a file upload does not have a valid name.
+#: classes/File.php:248 classes/File.php:263
+#, fuzzy
+msgid "Invalid filename."
+msgstr "Tamanho inválido."
+
+#. TRANS: Exception thrown when joining a group fails.
+#: classes/Group_member.php:42
msgid "Group join failed."
msgstr "Não foi possível se unir ao grupo."
-#: classes/Group_member.php:53
+#. TRANS: Exception thrown when trying to leave a group the user is not a member of.
+#: classes/Group_member.php:55
msgid "Not part of group."
msgstr "Não é parte de um grupo."
-#: classes/Group_member.php:60
+#. TRANS: Exception thrown when trying to leave a group fails.
+#: classes/Group_member.php:63
msgid "Group leave failed."
msgstr "Não foi possível deixar o grupo."
-#: classes/Local_group.php:41
+#. TRANS: Server exception thrown when updating a local group fails.
+#: classes/Local_group.php:42
msgid "Could not update local group."
msgstr "Não foi possível atualizar o grupo local."
-#: classes/Login_token.php:76
+#. TRANS: Exception thrown when trying creating a login token failed.
+#. TRANS: %s is the user nickname for which token creation failed.
+#: classes/Login_token.php:78
#, php-format
msgid "Could not create login token for %s"
msgstr "Não foi possível criar o token de autenticação para %s"
-#: classes/Message.php:45
+#. TRANS: Exception thrown when database name or Data Source Name could not be found.
+#: classes/Memcached_DataObject.php:533
+msgid "No database name or DSN found anywhere."
+msgstr ""
+
+#. TRANS: Client exception thrown when a user tries to send a direct message while being banned from sending them.
+#: classes/Message.php:46
msgid "You are banned from sending direct messages."
msgstr "Você está proibido de enviar mensagens diretas."
-#: classes/Message.php:61
+#. TRANS: Message given when a message could not be stored on the server.
+#: classes/Message.php:63
msgid "Could not insert message."
msgstr "Não foi possível inserir a mensagem."
-#: classes/Message.php:71
+#. TRANS: Message given when a message could not be updated on the server.
+#: classes/Message.php:74
msgid "Could not update message with new URI."
msgstr "Não foi possível atualizar a mensagem com a nova URI."
+#. TRANS: Server exception thrown when a user profile for a notice cannot be found.
+#. TRANS: %1$d is a profile ID (number), %2$d is a notice ID (number).
+#: classes/Notice.php:98
+#, php-format
+msgid "No such profile (%1$d) for notice (%2$d)."
+msgstr ""
+
#. TRANS: Server exception. %s are the error details.
-#: classes/Notice.php:182
+#: classes/Notice.php:190
#, php-format
msgid "Database error inserting hashtag: %s"
msgstr "Erro no banco de dados durante a inserção da hashtag: %s"
-#: classes/Notice.php:251
+#. TRANS: Client exception thrown if a notice contains too many characters.
+#: classes/Notice.php:260
msgid "Problem saving notice. Too long."
msgstr "Problema no salvamento da mensagem. Ela é muito extensa."
-#: classes/Notice.php:255
+#. TRANS: Client exception thrown when trying to save a notice for an unknown user.
+#: classes/Notice.php:265
msgid "Problem saving notice. Unknown user."
msgstr "Problema no salvamento da mensagem. Usuário desconhecido."
-#: classes/Notice.php:260
+#. TRANS: Client exception thrown when a user tries to post too many notices in a given time frame.
+#: classes/Notice.php:271
msgid ""
"Too many notices too fast; take a breather and post again in a few minutes."
msgstr ""
"Muitas mensagens em um período curto de tempo; dê uma respirada e publique "
"novamente daqui a alguns minutos."
-#: classes/Notice.php:266
+#. TRANS: Client exception thrown when a user tries to post too many duplicate notices in a given time frame.
+#: classes/Notice.php:278
msgid ""
"Too many duplicate messages too quickly; take a breather and post again in a "
"few minutes."
@@ -4909,71 +4972,122 @@ msgstr ""
"Muitas mensagens duplicadas em um período curto de tempo; dê uma respirada e "
"publique novamente daqui a alguns minutos."
-#: classes/Notice.php:272
+#. TRANS: Client exception thrown when a user tries to post while being banned.
+#: classes/Notice.php:286
msgid "You are banned from posting notices on this site."
msgstr "Você está proibido de publicar mensagens neste site."
-#: classes/Notice.php:338 classes/Notice.php:364
+#. TRANS: Server exception thrown when a notice cannot be saved.
+#. TRANS: Server exception thrown when a notice cannot be updated.
+#: classes/Notice.php:353 classes/Notice.php:380
msgid "Problem saving notice."
msgstr "Problema no salvamento da mensagem."
-#: classes/Notice.php:973
+#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups().
+#: classes/Notice.php:892
+msgid "Bad type provided to saveKnownGroups"
+msgstr ""
+
+#. TRANS: Server exception thrown when an update for a group inbox fails.
+#: classes/Notice.php:991
msgid "Problem saving group inbox."
msgstr "Problema no salvamento das mensagens recebidas do grupo."
#. TRANS: Message used to repeat a notice. RT is the abbreviation of 'retweet'.
#. TRANS: %1$s is the repeated user's name, %2$s is the repeated notice.
-#: classes/Notice.php:1564
+#: classes/Notice.php:1614
#, php-format
msgid "RT @%1$s %2$s"
msgstr "RT @%1$s %2$s"
-#: classes/Subscription.php:74 lib/oauthstore.php:465
+#. TRANS: Exception thrown when trying to revoke an existing role for a user that does not exist.
+#. TRANS: %1$s is the role name, %2$s is the user ID (number).
+#: classes/Profile.php:740
+#, php-format
+msgid "Cannot revoke role \"%1$s\" for user #%2$d; does not exist."
+msgstr ""
+
+#. TRANS: Exception thrown when trying to revoke a role for a user with a failing database query.
+#. TRANS: %1$s is the role name, %2$s is the user ID (number).
+#: classes/Profile.php:749
+#, php-format
+msgid "Cannot revoke role \"%1$s\" for user #%2$d; database error."
+msgstr ""
+
+#. TRANS: Exception thrown when a right for a non-existing user profile is checked.
+#: classes/Remote_profile.php:54
+#, fuzzy
+msgid "Missing profile."
+msgstr "O usuário não tem perfil."
+
+#. TRANS: Exception thrown when a tag cannot be saved.
+#: classes/Status_network.php:346
+#, fuzzy
+msgid "Unable to save tag."
+msgstr "Não foi possível salvar os avisos do site."
+
+#. TRANS: Exception thrown when trying to subscribe while being banned from subscribing.
+#: classes/Subscription.php:75 lib/oauthstore.php:465
msgid "You have been banned from subscribing."
msgstr "Você está proibido de assinar."
-#: classes/Subscription.php:78
+#. TRANS: Exception thrown when trying to subscribe while already subscribed.
+#: classes/Subscription.php:80
msgid "Already subscribed!"
msgstr "Já assinado!"
-#: classes/Subscription.php:82
+#. TRANS: Exception thrown when trying to subscribe to a user who has blocked the subscribing user.
+#: classes/Subscription.php:85
msgid "User has blocked you."
msgstr "O usuário bloqueou você."
-#: classes/Subscription.php:167
+#. TRANS: Exception thrown when trying to unsibscribe without a subscription.
+#: classes/Subscription.php:171
msgid "Not subscribed!"
msgstr "Não assinado!"
-#: classes/Subscription.php:173
-msgid "Couldn't delete self-subscription."
+#. TRANS: Exception thrown when trying to unsubscribe a user from themselves.
+#: classes/Subscription.php:178
+#, fuzzy
+msgid "Could not delete self-subscription."
msgstr "Não foi possível excluir a auto-assinatura."
-#: classes/Subscription.php:200
-msgid "Couldn't delete subscription OMB token."
+#. TRANS: Exception thrown when the OMB token for a subscription could not deleted on the server.
+#: classes/Subscription.php:206
+#, fuzzy
+msgid "Could not delete subscription OMB token."
msgstr "Não foi possível excluir o token de assinatura OMB."
-#: classes/Subscription.php:211
-msgid "Couldn't delete subscription."
+#. TRANS: Exception thrown when a subscription could not be deleted on the server.
+#: classes/Subscription.php:218
+#, fuzzy
+msgid "Could not delete subscription."
msgstr "Não foi possível excluir a assinatura."
-#: classes/User.php:363
+#. TRANS: Notice given on user registration.
+#. TRANS: %1$s is the sitename, $2$s is the registering user's nickname.
+#: classes/User.php:365
#, php-format
msgid "Welcome to %1$s, @%2$s!"
msgstr "Bem vindo(a) a %1$s, @%2$s!"
-#: classes/User_group.php:480
+#. TRANS: Server exception thrown when creating a group failed.
+#: classes/User_group.php:496
msgid "Could not create group."
msgstr "Não foi possível criar o grupo."
-#: classes/User_group.php:489
+#. TRANS: Server exception thrown when updating a group URI failed.
+#: classes/User_group.php:506
msgid "Could not set group URI."
msgstr "Não foi possível definir a URI do grupo."
-#: classes/User_group.php:510
+#. TRANS: Server exception thrown when setting group membership failed.
+#: classes/User_group.php:529
msgid "Could not set group membership."
msgstr "Não foi possível configurar a associação ao grupo."
-#: classes/User_group.php:524
+#. TRANS: Server exception thrown when saving local group information failed.
+#: classes/User_group.php:544
msgid "Could not save local group info."
msgstr "Não foi possível salvar a informação do grupo local."
@@ -6447,7 +6561,7 @@ msgstr ""
"privadas para envolver outras pessoas em uma conversa. Você também pode "
"receber mensagens privadas."
-#: lib/mailbox.php:227 lib/noticelist.php:497
+#: lib/mailbox.php:227 lib/noticelist.php:505
msgid "from"
msgstr "de"
@@ -6508,24 +6622,24 @@ msgstr "Erro ao salvar o arquivo no disco."
msgid "File upload stopped by extension."
msgstr "O arquivo a ser enviado foi barrado por causa de sua extensão."
-#: lib/mediafile.php:179 lib/mediafile.php:216
+#: lib/mediafile.php:179 lib/mediafile.php:217
msgid "File exceeds user's quota."
msgstr "O arquivo excede a quota do usuário."
-#: lib/mediafile.php:196 lib/mediafile.php:233
+#: lib/mediafile.php:197 lib/mediafile.php:234
msgid "File could not be moved to destination directory."
msgstr "Não foi possível mover o arquivo para o diretório de destino."
-#: lib/mediafile.php:201 lib/mediafile.php:237
+#: lib/mediafile.php:202 lib/mediafile.php:238
msgid "Could not determine file's MIME type."
msgstr "Não foi possível determinar o tipo MIME do arquivo."
-#: lib/mediafile.php:270
+#: lib/mediafile.php:318
#, php-format
msgid " Try using another %s format."
msgstr " Tente usar outro formato %s."
-#: lib/mediafile.php:275
+#: lib/mediafile.php:323
#, php-format
msgid "%s is not a supported file type on this server."
msgstr "%s não é um tipo de arquivo suportado neste servidor."
@@ -6581,51 +6695,51 @@ msgstr ""
"esperado. Por favor, tente novamente mais tarde."
#. TRANS: Used in coordinates as abbreviation of north
-#: lib/noticelist.php:430
+#: lib/noticelist.php:436
msgid "N"
msgstr "N"
#. TRANS: Used in coordinates as abbreviation of south
-#: lib/noticelist.php:432
+#: lib/noticelist.php:438
msgid "S"
msgstr "S"
#. TRANS: Used in coordinates as abbreviation of east
-#: lib/noticelist.php:434
+#: lib/noticelist.php:440
msgid "E"
msgstr "L"
#. TRANS: Used in coordinates as abbreviation of west
-#: lib/noticelist.php:436
+#: lib/noticelist.php:442
msgid "W"
msgstr "O"
-#: lib/noticelist.php:438
+#: lib/noticelist.php:444
#, php-format
msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
msgstr "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
-#: lib/noticelist.php:447
+#: lib/noticelist.php:453
msgid "at"
msgstr "em"
-#: lib/noticelist.php:559
+#: lib/noticelist.php:567
msgid "in context"
msgstr "no contexto"
-#: lib/noticelist.php:594
+#: lib/noticelist.php:602
msgid "Repeated by"
msgstr "Repetida por"
-#: lib/noticelist.php:621
+#: lib/noticelist.php:629
msgid "Reply to this notice"
msgstr "Responder a esta mensagem"
-#: lib/noticelist.php:622
+#: lib/noticelist.php:630
msgid "Reply"
msgstr "Responder"
-#: lib/noticelist.php:666
+#: lib/noticelist.php:674
msgid "Notice repeated"
msgstr "Mensagem repetida"
@@ -6675,7 +6789,7 @@ msgstr "Respostas"
#: lib/personalgroupnav.php:114
msgid "Favorites"
-msgstr "Favoritas"
+msgstr "Favoritos"
#: lib/personalgroupnav.php:125
msgid "Inbox"
@@ -6881,47 +6995,48 @@ msgstr "Nenhuma"
#: lib/themeuploader.php:50
msgid "This server cannot handle theme uploads without ZIP support."
msgstr ""
+"Este servidor não pode processar o envio de temas sem suporte ao formato ZIP."
#: lib/themeuploader.php:58 lib/themeuploader.php:61
-#, fuzzy
-msgid "Theme upload missing or failed."
-msgstr "Erro no sistema durante o envio do arquivo."
+msgid "The theme file is missing or the upload failed."
+msgstr "O arquivo do tema não foi localizado ou ocorreu uma erro no envio."
#: lib/themeuploader.php:91 lib/themeuploader.php:102
#: lib/themeuploader.php:253 lib/themeuploader.php:257
#: lib/themeuploader.php:265 lib/themeuploader.php:272
-#, fuzzy
msgid "Failed saving theme."
-msgstr "Não foi possível atualizar o avatar."
+msgstr "Não foi possível salvar o tema."
#: lib/themeuploader.php:139
msgid "Invalid theme: bad directory structure."
-msgstr ""
+msgstr "Tema inválido: estrutura de diretórios incorreta."
#: lib/themeuploader.php:166
#, php-format
msgid "Uploaded theme is too large; must be less than %d bytes uncompressed."
msgstr ""
+"O tema enviado é muito grande; ele deve ter menos de %d bytes descomprimido."
#: lib/themeuploader.php:178
msgid "Invalid theme archive: missing file css/display.css"
-msgstr ""
+msgstr "Arquivo de tema inválido: está faltando o arquivo css/display.css"
#: lib/themeuploader.php:205
msgid ""
"Theme contains invalid file or folder name. Stick with ASCII letters, "
"digits, underscore, and minus sign."
msgstr ""
+"O tema contém um nome de arquivo ou de diretório inválido. Use somente "
+"caracteres ASCII, números e os sinais de sublinhado e hífen."
#: lib/themeuploader.php:216
#, php-format
msgid "Theme contains file of type '.%s', which is not allowed."
-msgstr ""
+msgstr "O tema contém um arquivo do tipo '.%s', que não é permitido."
#: lib/themeuploader.php:234
-#, fuzzy
msgid "Error opening theme archive."
-msgstr "Ocorreu um erro durante a atualização do perfil remoto."
+msgstr "Ocorreu um erro ao abrir o arquivo do tema."
#: lib/topposterssection.php:74
msgid "Top posters"
diff --git a/locale/ru/LC_MESSAGES/statusnet.po b/locale/ru/LC_MESSAGES/statusnet.po
index d276b197a..869212945 100644
--- a/locale/ru/LC_MESSAGES/statusnet.po
+++ b/locale/ru/LC_MESSAGES/statusnet.po
@@ -12,12 +12,12 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-06-16 22:18+0000\n"
-"PO-Revision-Date: 2010-06-21 18:04:57+0000\n"
+"POT-Creation-Date: 2010-08-03 13:21+0000\n"
+"PO-Revision-Date: 2010-08-03 13:22:25+0000\n"
"Language-Team: Russian\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.17alpha (r68367); Translate extension (2010-06-12)\n"
+"X-Generator: MediaWiki 1.17alpha (r70381); Translate extension (2010-07-21)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: ru\n"
"X-Message-Group: out-statusnet\n"
@@ -103,7 +103,7 @@ msgstr "Ðет такой Ñтраницы."
#: actions/apidirectmessagenew.php:74 actions/apigroupcreate.php:113
#: actions/apigroupismember.php:91 actions/apigroupjoin.php:100
#: actions/apigroupleave.php:100 actions/apigrouplist.php:73
-#: actions/apistatusesupdate.php:228 actions/apisubscriptions.php:87
+#: actions/apistatusesupdate.php:229 actions/apisubscriptions.php:87
#: actions/apitimelinefavorites.php:72 actions/apitimelinefriends.php:174
#: actions/apitimelinehome.php:80 actions/apitimelinementions.php:80
#: actions/apitimelineuser.php:82 actions/avatarbynickname.php:75
@@ -172,21 +172,20 @@ msgstr ""
#: actions/all.php:146
#, 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)."
+"You can try to [nudge %1$s](../%2$s) from their profile or [post something "
+"to them](%%%%action.newnotice%%%%?status_textarea=%3$s)."
msgstr ""
-"Ð’Ñ‹ можете попробовать [«подтолкнуть» %1$s](../%2$s) из Ð¿Ñ€Ð¾Ñ„Ð¸Ð»Ñ Ð¸Ð»Ð¸ [напиÑать "
-"что-нибудь Ð´Ð»Ñ Ð¿Ñ€Ð¸Ð²Ð»ÐµÑ‡ÐµÐ½Ð¸Ñ ÐµÐ³Ð¾ или её вниманиÑ](%%%%action.newnotice%%%%?"
-"status_textarea=%3$s)."
+"Ð’Ñ‹ можете попробовать «[подтолкнуть %1$s](../%2$s)» из их Ð¿Ñ€Ð¾Ñ„Ð¸Ð»Ñ Ð¸Ð»Ð¸ "
+"[напиÑать им что-нибудь](%%%%action.newnotice%%%%?status_textarea=%3$s)."
#: actions/all.php:149 actions/replies.php:210 actions/showstream.php:211
#, php-format
msgid ""
"Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
-"post a notice to his or her attention."
+"post a notice to them."
msgstr ""
-"Почему бы не [зарегиÑтрироватьÑÑ](%%action.register%%), чтобы «подтолкнуть» %"
-"s или отправить запиÑÑŒ Ð´Ð»Ñ Ð¿Ñ€Ð¸Ð²Ð»ÐµÑ‡ÐµÐ½Ð¸Ñ ÐµÐ³Ð¾ или её вниманиÑ?"
+"Почему бы не [зарегиÑтрироватьÑÑ](%%%%action.register%%%%), чтобы "
+"«подтолкнуть» %s или оÑтавить запиÑÑŒ Ð´Ð»Ñ Ð½Ð¸Ñ…?"
#. TRANS: H1 text
#: actions/all.php:182
@@ -218,7 +217,7 @@ msgstr "Обновлено от %1$s и его друзей на %2$s!"
#: actions/apistatusesshow.php:109 actions/apistatusnetconfig.php:141
#: actions/apistatusnetversion.php:93 actions/apisubscriptions.php:111
#: actions/apitimelinefavorites.php:174 actions/apitimelinefriends.php:271
-#: actions/apitimelinegroup.php:152 actions/apitimelinehome.php:175
+#: actions/apitimelinegroup.php:154 actions/apitimelinehome.php:175
#: actions/apitimelinementions.php:174 actions/apitimelinepublic.php:241
#: actions/apitimelineretweetedtome.php:121
#: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161
@@ -268,7 +267,7 @@ msgstr "Ðе удаётÑÑ Ñохранить профиль."
#: actions/apiaccountupdateprofilebackgroundimage.php:108
#: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80
-#: actions/apistatusesupdate.php:211 actions/avatarsettings.php:257
+#: actions/apistatusesupdate.php:212 actions/avatarsettings.php:257
#: actions/designadminpanel.php:123 actions/editapplication.php:118
#: actions/newapplication.php:101 actions/newnotice.php:94
#: lib/designsettings.php:283
@@ -368,10 +367,8 @@ msgid "Could not delete favorite."
msgstr "Ðе удаётÑÑ ÑƒÐ´Ð°Ð»Ð¸Ñ‚ÑŒ любимую запиÑÑŒ."
#: actions/apifriendshipscreate.php:109
-msgid "Could not follow user: User not found."
-msgstr ""
-"Ðе удаётÑÑ Ñледовать за пользователем, Ñ‚. к. такого Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð½Ðµ "
-"ÑущеÑтвует."
+msgid "Could not follow user: profile not found."
+msgstr "Ðе удаётÑÑ Ñледовать за пользователем: профиль не найден."
#: actions/apifriendshipscreate.php:118
#, php-format
@@ -388,9 +385,9 @@ msgstr ""
msgid "You cannot unfollow yourself."
msgstr "Ð’Ñ‹ не можете переÑтать Ñледовать за Ñобой."
-#: actions/apifriendshipsexists.php:94
-msgid "Two user ids or screen_names must be supplied."
-msgstr "Ðадо предÑтавить два имени Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¸Ð»Ð¸ кода."
+#: actions/apifriendshipsexists.php:91
+msgid "Two valid IDs or screen_names must be supplied."
+msgstr "Ðеобходимо задать два идентификатора или screen_names."
#: actions/apifriendshipsshow.php:134
msgid "Could not determine source user."
@@ -518,6 +515,10 @@ msgstr "Группы %s"
msgid "groups on %s"
msgstr "группы на %s"
+#: actions/apimediaupload.php:99
+msgid "Upload failed."
+msgstr "Загрузка не удалаÑÑŒ."
+
#: actions/apioauthauthorize.php:101
msgid "No oauth_token parameter provided."
msgstr "Ðе задан параметр oauth_token."
@@ -661,22 +662,26 @@ msgstr "Ð¡Ñ‚Ð°Ñ‚ÑƒÑ ÑƒÐ´Ð°Ð»Ñ‘Ð½."
msgid "No status with that ID found."
msgstr "Ðе найдено ÑтатуÑа Ñ Ñ‚Ð°ÐºÐ¸Ð¼ ID."
-#: actions/apistatusesupdate.php:241 actions/newnotice.php:155
+#: actions/apistatusesupdate.php:221
+msgid "Client must provide a 'status' parameter with a value."
+msgstr "Клиент должен предоÑтавить параметр «status» Ñо значением."
+
+#: actions/apistatusesupdate.php:242 actions/newnotice.php:155
#: lib/mailhandler.php:60
#, php-format
msgid "That's too long. Max notice size is %d chars."
msgstr "Слишком Ð´Ð»Ð¸Ð½Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ. МакÑÐ¸Ð¼Ð°Ð»ÑŒÐ½Ð°Ñ Ð´Ð»Ð¸Ð½Ð° — %d знаков."
-#: actions/apistatusesupdate.php:282 actions/apiusershow.php:96
+#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96
msgid "Not found."
msgstr "Ðе найдено."
-#: actions/apistatusesupdate.php:305 actions/newnotice.php:178
+#: actions/apistatusesupdate.php:306 actions/newnotice.php:178
#, php-format
msgid "Max notice size is %d chars, including attachment URL."
msgstr "МакÑÐ¸Ð¼Ð°Ð»ÑŒÐ½Ð°Ñ Ð´Ð»Ð¸Ð½Ð° запиÑи — %d Ñимволов, Ð²ÐºÐ»ÑŽÑ‡Ð°Ñ URL вложениÑ."
-#: actions/apisubscriptions.php:231 actions/apisubscriptions.php:261
+#: actions/apisubscriptions.php:232 actions/apisubscriptions.php:262
msgid "Unsupported format."
msgstr "Ðеподдерживаемый формат."
@@ -730,6 +735,10 @@ msgstr "ЗапиÑи Ñ Ñ‚ÐµÐ³Ð¾Ð¼ %s"
msgid "Updates tagged with %1$s on %2$s!"
msgstr "ÐžÐ±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ñ Ñ‚ÐµÐ³Ð¾Ð¼ %1$s на %2$s!"
+#: actions/apitrends.php:87
+msgid "API method under construction."
+msgstr "Метод API реконÑтруируетÑÑ."
+
#: actions/attachment.php:73
msgid "No such attachment."
msgstr "Ðет такого вложениÑ."
@@ -783,7 +792,7 @@ msgid "Preview"
msgstr "ПроÑмотр"
#: actions/avatarsettings.php:149 actions/showapplication.php:252
-#: lib/deleteuserform.php:66 lib/noticelist.php:648
+#: lib/deleteuserform.php:66 lib/noticelist.php:656
msgid "Delete"
msgstr "Удалить"
@@ -1064,7 +1073,7 @@ msgid "Do not delete this notice"
msgstr "Ðе удалÑÑ‚ÑŒ Ñту запиÑÑŒ"
#. TRANS: Submit button title for 'Yes' when deleting a notice.
-#: actions/deletenotice.php:158 lib/noticelist.php:648
+#: actions/deletenotice.php:158 lib/noticelist.php:656
msgid "Delete this notice"
msgstr "Удалить Ñту запиÑÑŒ"
@@ -1342,7 +1351,8 @@ msgstr "Ðеверный алиаÑ: «%s»"
msgid "Could not update group."
msgstr "Ðе удаётÑÑ Ð¾Ð±Ð½Ð¾Ð²Ð¸Ñ‚ÑŒ информацию о группе."
-#: actions/editgroup.php:264 classes/User_group.php:496
+#. TRANS: Server exception thrown when creating group aliases failed.
+#: actions/editgroup.php:264 classes/User_group.php:514
msgid "Could not create aliases."
msgstr "Ðе удаётÑÑ Ñоздать алиаÑÑ‹."
@@ -2506,10 +2516,10 @@ msgstr "Ð’Ñе обновлениÑ, ÑоответÑтвующие поиÑко
#: actions/nudge.php:85
msgid ""
-"This user doesn't allow nudges or hasn't confirmed or set his email yet."
+"This user doesn't allow nudges or hasn't confirmed or set their email yet."
msgstr ""
-"Этот пользователь не разрешает \"подталкивать\" его, или ещё не подтверждён "
-"или ещё не предÑтавил Ñвой Ñлектронный адреÑ."
+"Этот пользователь не разрешает «подталкивать» его или ещё не указал Ñвой "
+"email-адреÑ."
#: actions/nudge.php:94
msgid "Nudge sent"
@@ -2583,8 +2593,8 @@ msgid "Only %s URLs over plain HTTP please."
msgstr "Только %s URL в проÑтом HTTP, пожалуйÑта."
#. TRANS: Client error on an API request with an unsupported data format.
-#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1179
-#: lib/apiaction.php:1208 lib/apiaction.php:1325
+#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1204
+#: lib/apiaction.php:1232 lib/apiaction.php:1355
msgid "Not a supported data format."
msgstr "Ðеподдерживаемый формат данных."
@@ -3018,7 +3028,7 @@ msgstr "ЧаÑовой поÑÑ Ð½Ðµ выбран."
#: actions/profilesettings.php:241
msgid "Language is too long (max 50 chars)."
-msgstr "Слишком длинный Ñзык (более 50 Ñимволов). "
+msgstr "Слишком длинный Ñзык (не может быть более 50 Ñимволов)."
#: actions/profilesettings.php:253 actions/tagother.php:178
#, php-format
@@ -3491,7 +3501,7 @@ msgstr "Ð’Ñ‹ не можете повторить ÑобÑтвенную запÐ
msgid "You already repeated that notice."
msgstr "Ð’Ñ‹ уже повторили Ñту запиÑÑŒ."
-#: actions/repeat.php:114 lib/noticelist.php:667
+#: actions/repeat.php:114 lib/noticelist.php:675
msgid "Repeated"
msgstr "Повторено"
@@ -3529,9 +3539,10 @@ msgstr "Лента запиÑей Ð´Ð»Ñ %s (Atom)"
#, php-format
msgid ""
"This is the timeline showing replies to %1$s but %2$s hasn't received a "
-"notice to his attention yet."
+"notice to them yet."
msgstr ""
-"Эта лента Ñодержит ответы на запиÑи %1$s, однако %2$s пока не получал их."
+"Эта лента Ñодержит ответы Ð´Ð»Ñ %1$s, однако %2$s пока не получил уведомление "
+"о них."
#: actions/replies.php:204
#, php-format
@@ -3545,12 +3556,11 @@ msgstr ""
#: actions/replies.php:206
#, php-format
msgid ""
-"You can try to [nudge %1$s](../%2$s) or [post something to his or her "
-"attention](%%%%action.newnotice%%%%?status_textarea=%3$s)."
+"You can try to [nudge %1$s](../%2$s) or [post something to them](%%%%action."
+"newnotice%%%%?status_textarea=%3$s)."
msgstr ""
-"Ð’Ñ‹ можете попробовать [«подтолкнуть» %1$s](../%2$s) или [напиÑать что-нибудь "
-"Ð´Ð»Ñ Ð¿Ñ€Ð¸Ð²Ð»ÐµÑ‡ÐµÐ½Ð¸Ñ ÐµÐ³Ð¾ или её вниманиÑ](%%%%action.newnotice%%%%?"
-"status_textarea=%3$s)."
+"Ð’Ñ‹ можете попробовать «[подтолкнуть %1$s](../%2$s)» или [напиÑать им что-"
+"нибудь](%%%%action.newnotice%%%%?status_textarea=%3$s)."
#: actions/repliesrss.php:72
#, php-format
@@ -3639,7 +3649,7 @@ msgstr "ОрганизациÑ"
msgid "Description"
msgstr "ОпиÑание"
-#: actions/showapplication.php:192 actions/showgroup.php:444
+#: actions/showapplication.php:192 actions/showgroup.php:436
#: lib/profileaction.php:187
msgid "Statistics"
msgstr "СтатиÑтика"
@@ -3729,8 +3739,8 @@ msgstr ""
#: actions/showfavorites.php:208
#, php-format
msgid ""
-"%s hasn't added any notices to his favorites yet. Post something interesting "
-"they would add to their favorites :)"
+"%s hasn't added any favorite notices yet. Post something interesting they "
+"would add to their favorites :)"
msgstr ""
"%s пока не выбрал ни одной любимой запиÑи. Ðапишите такую интереÑную запиÑÑŒ, "
"которую он добавит её в чиÑло любимых :)"
@@ -3738,11 +3748,11 @@ msgstr ""
#: actions/showfavorites.php:212
#, php-format
msgid ""
-"%s hasn't added any notices to his favorites yet. Why not [register an "
-"account](%%%%action.register%%%%) and then post something interesting they "
-"would add to their favorites :)"
+"%s hasn't added any favorite notices yet. Why not [register an account](%%%%"
+"action.register%%%%) and then post something interesting they would add to "
+"their favorites :)"
msgstr ""
-"%s пока не добавил ни одноз запиÑи в любимые. Почему бы не "
+"%s пока не добавил ни одной запиÑи в любимые. Почему бы не "
"[зарегиÑтрироватьÑÑ](%%%%action.register%%%%) и не напиÑать что-нибудь "
"интереÑное, что понравилоÑÑŒ бы Ñтому пользователю? :)"
@@ -3802,7 +3812,7 @@ msgstr "Лента запиÑей группы %s (Atom)"
msgid "FOAF for %s group"
msgstr "FOAF Ð´Ð»Ñ Ð³Ñ€ÑƒÐ¿Ð¿Ñ‹ %s"
-#: actions/showgroup.php:393 actions/showgroup.php:453 lib/groupnav.php:91
+#: actions/showgroup.php:393 actions/showgroup.php:445 lib/groupnav.php:91
msgid "Members"
msgstr "УчаÑтники"
@@ -3816,11 +3826,11 @@ msgstr "(пока ничего нет)"
msgid "All members"
msgstr "Ð’Ñе учаÑтники"
-#: actions/showgroup.php:447
+#: actions/showgroup.php:439
msgid "Created"
msgstr "Создано"
-#: actions/showgroup.php:463
+#: actions/showgroup.php:455
#, php-format
msgid ""
"**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3836,7 +3846,7 @@ msgstr ""
"action.register%%%%), чтобы Ñтать учаÑтником группы и получить множеÑтво "
"других возможноÑтей! ([Читать далее](%%%%doc.help%%%%))"
-#: actions/showgroup.php:469
+#: actions/showgroup.php:461
#, php-format
msgid ""
"**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3849,7 +3859,7 @@ msgstr ""
"обеÑпечении [StatusNet](http://status.net/). УчаÑтники обмениваютÑÑ "
"короткими ÑообщениÑми о Ñвоей жизни и интереÑах. "
-#: actions/showgroup.php:497
+#: actions/showgroup.php:489
msgid "Admins"
msgstr "ÐдминиÑтраторы"
@@ -3926,12 +3936,11 @@ msgstr ""
#: 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)."
+"You can try to nudge %1$s or [post something to them](%%%%action.newnotice%%%"
+"%?status_textarea=%2$s)."
msgstr ""
-"Ð’Ñ‹ можете попробовать «подтолкнуть» %1$s или [напиÑать что-нибудь Ð´Ð»Ñ "
-"Ð¿Ñ€Ð¸Ð²Ð»ÐµÑ‡ÐµÐ½Ð¸Ñ ÐµÐ³Ð¾ или её вниманиÑ](%%%%action.newnotice%%%%?status_textarea=%2"
-"$s)."
+"Ð’Ñ‹ можете попробовать «подтолкнуть» %1$s или [напиÑать что-нибудь Ð´Ð»Ñ Ð½Ð¸Ñ…](%%%"
+"%action.newnotice%%%%?status_textarea=%2$s)."
#: actions/showstream.php:243
#, php-format
@@ -3955,10 +3964,10 @@ msgid ""
"wikipedia.org/wiki/Micro-blogging) service based on the Free Software "
"[StatusNet](http://status.net/) tool. "
msgstr ""
-"**%s** ÑвлÑетÑÑ Ð·Ð°Ñ€ÐµÐ³Ð¸Ñтрированным учаÑтником %%%%site.name%%%% - Ñайта Ð´Ð»Ñ "
+"**%s** ÑвлÑетÑÑ Ð·Ð°Ñ€ÐµÐ³Ð¸Ñтрированным учаÑтником %%%%site.name%%%% — Ñайта Ð´Ð»Ñ "
"[микроблогинга](http://ru.wikipedia.org/wiki/Микроблоггинг), Ñозданного Ñ "
"иÑпользованием Ñвободного программного обеÑÐ¿ÐµÑ‡ÐµÐ½Ð¸Ñ [StatusNet](http://status."
-"net/)."
+"net/). "
#: actions/showstream.php:305
#, php-format
@@ -4320,7 +4329,8 @@ msgstr "Сохранить наÑтройки Ñнимка"
msgid "You are not subscribed to that profile."
msgstr "Ð’Ñ‹ не подпиÑаны на Ñтот профиль."
-#: actions/subedit.php:83 classes/Subscription.php:132
+#. TRANS: Exception thrown when a subscription could not be stored on the server.
+#: actions/subedit.php:83 classes/Subscription.php:136
msgid "Could not save subscription."
msgstr "Ðе удаётÑÑ Ñохранить подпиÑку."
@@ -4501,10 +4511,6 @@ msgstr ""
msgid "No such tag."
msgstr "Ðет такого тега."
-#: actions/twitapitrends.php:85
-msgid "API method under construction."
-msgstr "Метод API реконÑтруируетÑÑ."
-
#: actions/unblock.php:59
msgid "You haven't blocked that user."
msgstr "Ð’Ñ‹ не заблокировали Ñтого пользователÑ."
@@ -4814,80 +4820,127 @@ msgstr "ВерÑиÑ"
msgid "Author(s)"
msgstr "Ðвтор(Ñ‹)"
-#: classes/File.php:185
+#. TRANS: Server exception thrown when a URL cannot be processed.
+#: classes/File.php:143
+#, php-format
+msgid "Cannot process URL '%s'"
+msgstr "Ðевозможно обработать URL «%s»"
+
+#. TRANS: Server exception thrown when... Robin thinks something is impossible!
+#: classes/File.php:175
+msgid "Robin thinks something is impossible."
+msgstr "Робин Ñчитает, что Ñто невозможно."
+
+#. TRANS: Message given if an upload is larger than the configured maximum.
+#. TRANS: %1$d is the byte limit for uploads, %2$d is the byte count for the uploaded file.
+#: classes/File.php:190
#, php-format
msgid ""
-"No file may be larger than %d bytes and the file you sent was %d bytes. Try "
-"to upload a smaller version."
+"No file may be larger than %1$d bytes and the file you sent was %2$d bytes. "
+"Try to upload a smaller version."
msgstr ""
-"Файл не может быть больше %d байт, тогда как отправленный вами файл Ñодержал "
-"%d байт. Попробуйте загрузить меньшую верÑию."
+"Файл не может быть больше %1$d байт, тогда как отправленный вами файл "
+"Ñодержал %2$d байт. Попробуйте загрузить меньшую верÑию."
-#: classes/File.php:195
+#. TRANS: Message given if an upload would exceed user quota.
+#. TRANS: %d (number) is the user quota in bytes.
+#: classes/File.php:202
#, php-format
msgid "A file this large would exceed your user quota of %d bytes."
msgstr "Файл такого размера превыÑит вашу пользовательÑкую квоту в %d байта."
-#: classes/File.php:202
+#. TRANS: Message given id an upload would exceed a user's monthly quota.
+#. TRANS: $d (number) is the monthly user quota in bytes.
+#: classes/File.php:211
#, php-format
msgid "A file this large would exceed your monthly quota of %d bytes."
msgstr "Файл такого размера превыÑит вашу меÑÑчную квоту в %d байта."
-#: classes/Group_member.php:41
+#. TRANS: Client exception thrown if a file upload does not have a valid name.
+#: classes/File.php:248 classes/File.php:263
+msgid "Invalid filename."
+msgstr "Ðеверное Ð¸Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°."
+
+#. TRANS: Exception thrown when joining a group fails.
+#: classes/Group_member.php:42
msgid "Group join failed."
msgstr "Ðе удаётÑÑ Ð¿Ñ€Ð¸ÑоединитьÑÑ Ðº группе."
-#: classes/Group_member.php:53
+#. TRANS: Exception thrown when trying to leave a group the user is not a member of.
+#: classes/Group_member.php:55
msgid "Not part of group."
msgstr "Ðе ÑвлÑетÑÑ Ñ‡Ð°Ñтью группы."
-#: classes/Group_member.php:60
+#. TRANS: Exception thrown when trying to leave a group fails.
+#: classes/Group_member.php:63
msgid "Group leave failed."
msgstr "Ðе удаётÑÑ Ð¿Ð¾ÐºÐ¸Ð½ÑƒÑ‚ÑŒ группу."
-#: classes/Local_group.php:41
+#. TRANS: Server exception thrown when updating a local group fails.
+#: classes/Local_group.php:42
msgid "Could not update local group."
msgstr "Ðе удаётÑÑ Ð¾Ð±Ð½Ð¾Ð²Ð¸Ñ‚ÑŒ локальную группу."
-#: classes/Login_token.php:76
+#. TRANS: Exception thrown when trying creating a login token failed.
+#. TRANS: %s is the user nickname for which token creation failed.
+#: classes/Login_token.php:78
#, php-format
msgid "Could not create login token for %s"
msgstr "Ðе удаётÑÑ Ñоздать токен входа Ð´Ð»Ñ %s"
-#: classes/Message.php:45
+#. TRANS: Exception thrown when database name or Data Source Name could not be found.
+#: classes/Memcached_DataObject.php:533
+msgid "No database name or DSN found anywhere."
+msgstr "Ð˜Ð¼Ñ Ð±Ð°Ð·Ñ‹ данных или DSN не найдено."
+
+#. TRANS: Client exception thrown when a user tries to send a direct message while being banned from sending them.
+#: classes/Message.php:46
msgid "You are banned from sending direct messages."
msgstr "Ð’Ñ‹ заблокированы от отправки прÑмых Ñообщений."
-#: classes/Message.php:61
+#. TRANS: Message given when a message could not be stored on the server.
+#: classes/Message.php:63
msgid "Could not insert message."
msgstr "Ðе удаётÑÑ Ð²Ñтавить Ñообщение."
-#: classes/Message.php:71
+#. TRANS: Message given when a message could not be updated on the server.
+#: classes/Message.php:74
msgid "Could not update message with new URI."
msgstr "Ðе удаётÑÑ Ð¾Ð±Ð½Ð¾Ð²Ð¸Ñ‚ÑŒ Ñообщение Ñ Ð½Ð¾Ð²Ñ‹Ð¼ URI."
+#. TRANS: Server exception thrown when a user profile for a notice cannot be found.
+#. TRANS: %1$d is a profile ID (number), %2$d is a notice ID (number).
+#: classes/Notice.php:98
+#, php-format
+msgid "No such profile (%1$d) for notice (%2$d)."
+msgstr "Ðет такого Ð¿Ñ€Ð¾Ñ„Ð¸Ð»Ñ (%1$d) Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи (%2$d)."
+
#. TRANS: Server exception. %s are the error details.
-#: classes/Notice.php:182
+#: classes/Notice.php:190
#, php-format
msgid "Database error inserting hashtag: %s"
msgstr "Ошибка баз данных при вÑтавке хеш-тегов: %s"
-#: classes/Notice.php:251
+#. TRANS: Client exception thrown if a notice contains too many characters.
+#: classes/Notice.php:260
msgid "Problem saving notice. Too long."
msgstr "Проблемы Ñ Ñохранением запиÑи. Слишком длинно."
-#: classes/Notice.php:255
+#. TRANS: Client exception thrown when trying to save a notice for an unknown user.
+#: classes/Notice.php:265
msgid "Problem saving notice. Unknown user."
msgstr "Проблема при Ñохранении запиÑи. ÐеизвеÑтный пользователь."
-#: classes/Notice.php:260
+#. TRANS: Client exception thrown when a user tries to post too many notices in a given time frame.
+#: classes/Notice.php:271
msgid ""
"Too many notices too fast; take a breather and post again in a few minutes."
msgstr ""
"Слишком много запиÑей за Ñтоль короткий Ñрок; передохните немного и "
"попробуйте вновь через пару минут."
-#: classes/Notice.php:266
+#. TRANS: Client exception thrown when a user tries to post too many duplicate notices in a given time frame.
+#: classes/Notice.php:278
msgid ""
"Too many duplicate messages too quickly; take a breather and post again in a "
"few minutes."
@@ -4895,71 +4948,120 @@ msgstr ""
"Слишком много одинаковых запиÑей за Ñтоль короткий Ñрок; передохните немного "
"и попробуйте вновь через пару минут."
-#: classes/Notice.php:272
+#. TRANS: Client exception thrown when a user tries to post while being banned.
+#: classes/Notice.php:286
msgid "You are banned from posting notices on this site."
msgstr "Вам запрещено поÑтитьÑÑ Ð½Ð° Ñтом Ñайте (бан)"
-#: classes/Notice.php:338 classes/Notice.php:364
+#. TRANS: Server exception thrown when a notice cannot be saved.
+#. TRANS: Server exception thrown when a notice cannot be updated.
+#: classes/Notice.php:353 classes/Notice.php:380
msgid "Problem saving notice."
msgstr "Проблемы Ñ Ñохранением запиÑи."
-#: classes/Notice.php:973
+#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups().
+#: classes/Notice.php:892
+msgid "Bad type provided to saveKnownGroups"
+msgstr "Ð”Ð»Ñ saveKnownGroups указан неверный тип"
+
+#. TRANS: Server exception thrown when an update for a group inbox fails.
+#: classes/Notice.php:991
msgid "Problem saving group inbox."
msgstr "Проблемы Ñ Ñохранением входÑщих Ñообщений группы."
#. TRANS: Message used to repeat a notice. RT is the abbreviation of 'retweet'.
#. TRANS: %1$s is the repeated user's name, %2$s is the repeated notice.
-#: classes/Notice.php:1564
+#: classes/Notice.php:1614
#, php-format
msgid "RT @%1$s %2$s"
msgstr "RT @%1$s %2$s"
-#: classes/Subscription.php:74 lib/oauthstore.php:465
+#. TRANS: Exception thrown when trying to revoke an existing role for a user that does not exist.
+#. TRANS: %1$s is the role name, %2$s is the user ID (number).
+#: classes/Profile.php:740
+#, php-format
+msgid "Cannot revoke role \"%1$s\" for user #%2$d; does not exist."
+msgstr ""
+"Ðе удаётÑÑ Ð¾Ñ‚Ð¾Ð·Ð²Ð°Ñ‚ÑŒ право «%1%s» Ð´Ð»Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ #%2$d; пользователь не "
+"ÑущеÑтвует."
+
+#. TRANS: Exception thrown when trying to revoke a role for a user with a failing database query.
+#. TRANS: %1$s is the role name, %2$s is the user ID (number).
+#: classes/Profile.php:749
+#, php-format
+msgid "Cannot revoke role \"%1$s\" for user #%2$d; database error."
+msgstr ""
+"Ðе удаётÑÑ Ð¾Ñ‚Ð¾Ð·Ð²Ð°Ñ‚ÑŒ право «%1$s» Ð´Ð»Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ #%2$d; ошибка базы данных."
+
+#. TRANS: Exception thrown when a right for a non-existing user profile is checked.
+#: classes/Remote_profile.php:54
+msgid "Missing profile."
+msgstr "ОтÑутÑтвующий профиль."
+
+#. TRANS: Exception thrown when a tag cannot be saved.
+#: classes/Status_network.php:346
+msgid "Unable to save tag."
+msgstr "Ðе удаётÑÑ Ñохранить тег."
+
+#. TRANS: Exception thrown when trying to subscribe while being banned from subscribing.
+#: classes/Subscription.php:75 lib/oauthstore.php:465
msgid "You have been banned from subscribing."
msgstr "Ð’Ñ‹ заблокированы от подпиÑки."
-#: classes/Subscription.php:78
+#. TRANS: Exception thrown when trying to subscribe while already subscribed.
+#: classes/Subscription.php:80
msgid "Already subscribed!"
msgstr "Уже подпиÑаны!"
-#: classes/Subscription.php:82
+#. TRANS: Exception thrown when trying to subscribe to a user who has blocked the subscribing user.
+#: classes/Subscription.php:85
msgid "User has blocked you."
msgstr "Пользователь заблокировал ВаÑ."
-#: classes/Subscription.php:167
+#. TRANS: Exception thrown when trying to unsibscribe without a subscription.
+#: classes/Subscription.php:171
msgid "Not subscribed!"
msgstr "Ðе подпиÑаны!"
-#: classes/Subscription.php:173
-msgid "Couldn't delete self-subscription."
-msgstr "Ðевозможно удалить ÑамоподпиÑку."
+#. TRANS: Exception thrown when trying to unsubscribe a user from themselves.
+#: classes/Subscription.php:178
+msgid "Could not delete self-subscription."
+msgstr "Ðевозможно удалить подпиÑку на Ñамого ÑебÑ."
-#: classes/Subscription.php:200
-msgid "Couldn't delete subscription OMB token."
+#. TRANS: Exception thrown when the OMB token for a subscription could not deleted on the server.
+#: classes/Subscription.php:206
+msgid "Could not delete subscription OMB token."
msgstr "Ðе удаётÑÑ ÑƒÐ´Ð°Ð»Ð¸Ñ‚ÑŒ подпиÑочный жетон OMB."
-#: classes/Subscription.php:211
-msgid "Couldn't delete subscription."
+#. TRANS: Exception thrown when a subscription could not be deleted on the server.
+#: classes/Subscription.php:218
+msgid "Could not delete subscription."
msgstr "Ðе удаётÑÑ ÑƒÐ´Ð°Ð»Ð¸Ñ‚ÑŒ подпиÑку."
-#: classes/User.php:363
+#. TRANS: Notice given on user registration.
+#. TRANS: %1$s is the sitename, $2$s is the registering user's nickname.
+#: classes/User.php:365
#, php-format
msgid "Welcome to %1$s, @%2$s!"
msgstr "Добро пожаловать на %1$s, @%2$s!"
-#: classes/User_group.php:480
+#. TRANS: Server exception thrown when creating a group failed.
+#: classes/User_group.php:496
msgid "Could not create group."
msgstr "Ðе удаётÑÑ Ñоздать группу."
-#: classes/User_group.php:489
+#. TRANS: Server exception thrown when updating a group URI failed.
+#: classes/User_group.php:506
msgid "Could not set group URI."
msgstr "Ðе удаётÑÑ Ð½Ð°Ð·Ð½Ð°Ñ‡Ð¸Ñ‚ÑŒ URI группы."
-#: classes/User_group.php:510
+#. TRANS: Server exception thrown when setting group membership failed.
+#: classes/User_group.php:529
msgid "Could not set group membership."
msgstr "Ðе удаётÑÑ Ð½Ð°Ð·Ð½Ð°Ñ‡Ð¸Ñ‚ÑŒ членÑтво в группе."
-#: classes/User_group.php:524
+#. TRANS: Server exception thrown when saving local group information failed.
+#: classes/User_group.php:544
msgid "Could not save local group info."
msgstr "Ðе удаётÑÑ Ñохранить информацию о локальной группе."
@@ -6431,9 +6533,9 @@ msgstr ""
"Ð²Ð¾Ð²Ð»ÐµÑ‡ÐµÐ½Ð¸Ñ Ð´Ñ€ÑƒÐ³Ð¸Ñ… пользователей в разговор. СообщениÑ, получаемые от других "
"людей, видите только вы."
-#: lib/mailbox.php:227 lib/noticelist.php:497
+#: lib/mailbox.php:227 lib/noticelist.php:505
msgid "from"
-msgstr "от "
+msgstr "от"
#: lib/mailhandler.php:37
msgid "Could not parse message."
@@ -6489,24 +6591,24 @@ msgstr "Ðе удаётÑÑ Ð·Ð°Ð¿Ð¸Ñать файл на диÑк."
msgid "File upload stopped by extension."
msgstr "Загрузка файла оÑтановлена по раÑширению."
-#: lib/mediafile.php:179 lib/mediafile.php:216
+#: lib/mediafile.php:179 lib/mediafile.php:217
msgid "File exceeds user's quota."
msgstr "Файл превышает пользовательÑкую квоту."
-#: lib/mediafile.php:196 lib/mediafile.php:233
+#: lib/mediafile.php:197 lib/mediafile.php:234
msgid "File could not be moved to destination directory."
msgstr "Файл не может быть перемещён в целевую директорию."
-#: lib/mediafile.php:201 lib/mediafile.php:237
+#: lib/mediafile.php:202 lib/mediafile.php:238
msgid "Could not determine file's MIME type."
msgstr "Ðе удаётÑÑ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ð¸Ñ‚ÑŒ mime-тип файла."
-#: lib/mediafile.php:270
+#: lib/mediafile.php:318
#, php-format
msgid " Try using another %s format."
msgstr " Попробуйте иÑпользовать другой формат %s."
-#: lib/mediafile.php:275
+#: lib/mediafile.php:323
#, php-format
msgid "%s is not a supported file type on this server."
msgstr "Тип файла %s не поддерживаетÑÑ Ð½Ðµ Ñтом Ñервере."
@@ -6562,51 +6664,51 @@ msgstr ""
"времени, чем ожидалоÑÑŒ; повторите попытку позже"
#. TRANS: Used in coordinates as abbreviation of north
-#: lib/noticelist.php:430
+#: lib/noticelist.php:436
msgid "N"
msgstr "Ñ. ш."
#. TRANS: Used in coordinates as abbreviation of south
-#: lib/noticelist.php:432
+#: lib/noticelist.php:438
msgid "S"
msgstr "ю. ш."
#. TRANS: Used in coordinates as abbreviation of east
-#: lib/noticelist.php:434
+#: lib/noticelist.php:440
msgid "E"
msgstr "в. д."
#. TRANS: Used in coordinates as abbreviation of west
-#: lib/noticelist.php:436
+#: lib/noticelist.php:442
msgid "W"
msgstr "з. д."
-#: lib/noticelist.php:438
+#: lib/noticelist.php:444
#, php-format
msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
msgstr "%1$u°%2$u'%3$u\" %4$s %5$u°%6$u'%7$u\" %8$s"
-#: lib/noticelist.php:447
+#: lib/noticelist.php:453
msgid "at"
-msgstr "на"
+msgstr "из"
-#: lib/noticelist.php:559
+#: lib/noticelist.php:567
msgid "in context"
-msgstr "в контекÑте"
+msgstr "перепиÑка"
-#: lib/noticelist.php:594
+#: lib/noticelist.php:602
msgid "Repeated by"
msgstr "Повторено"
-#: lib/noticelist.php:621
+#: lib/noticelist.php:629
msgid "Reply to this notice"
msgstr "Ответить на Ñту запиÑÑŒ"
-#: lib/noticelist.php:622
+#: lib/noticelist.php:630
msgid "Reply"
msgstr "Ответить"
-#: lib/noticelist.php:666
+#: lib/noticelist.php:674
msgid "Notice repeated"
msgstr "ЗапиÑÑŒ повторена"
@@ -6864,8 +6966,8 @@ msgid "This server cannot handle theme uploads without ZIP support."
msgstr "Этот Ñервер не может обработать загруженные темы без поддержки ZIP."
#: lib/themeuploader.php:58 lib/themeuploader.php:61
-msgid "Theme upload missing or failed."
-msgstr "Ошибка при загрузке файла темы."
+msgid "The theme file is missing or the upload failed."
+msgstr "Файл темы отÑутÑтвует или произошёл Ñбой при загрузке."
#: lib/themeuploader.php:91 lib/themeuploader.php:102
#: lib/themeuploader.php:253 lib/themeuploader.php:257
diff --git a/locale/statusnet.pot b/locale/statusnet.pot
index c81149288..961810055 100644
--- a/locale/statusnet.pot
+++ b/locale/statusnet.pot
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-06-21 18:15+0000\n"
+"POT-Creation-Date: 2010-08-03 13:21+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"
@@ -95,7 +95,7 @@ msgstr ""
#: actions/apidirectmessagenew.php:74 actions/apigroupcreate.php:113
#: actions/apigroupismember.php:91 actions/apigroupjoin.php:100
#: actions/apigroupleave.php:100 actions/apigrouplist.php:73
-#: actions/apistatusesupdate.php:228 actions/apisubscriptions.php:87
+#: actions/apistatusesupdate.php:229 actions/apisubscriptions.php:87
#: actions/apitimelinefavorites.php:72 actions/apitimelinefriends.php:174
#: actions/apitimelinehome.php:80 actions/apitimelinementions.php:80
#: actions/apitimelineuser.php:82 actions/avatarbynickname.php:75
@@ -162,15 +162,15 @@ msgstr ""
#: actions/all.php:146
#, 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)."
+"You can try to [nudge %1$s](../%2$s) from their profile or [post something "
+"to them](%%%%action.newnotice%%%%?status_textarea=%3$s)."
msgstr ""
#: actions/all.php:149 actions/replies.php:210 actions/showstream.php:211
#, php-format
msgid ""
"Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
-"post a notice to his or her attention."
+"post a notice to them."
msgstr ""
#. TRANS: H1 text
@@ -203,7 +203,7 @@ msgstr ""
#: actions/apistatusesshow.php:109 actions/apistatusnetconfig.php:141
#: actions/apistatusnetversion.php:93 actions/apisubscriptions.php:111
#: actions/apitimelinefavorites.php:174 actions/apitimelinefriends.php:271
-#: actions/apitimelinegroup.php:152 actions/apitimelinehome.php:175
+#: actions/apitimelinegroup.php:154 actions/apitimelinehome.php:175
#: actions/apitimelinementions.php:174 actions/apitimelinepublic.php:241
#: actions/apitimelineretweetedtome.php:121
#: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161
@@ -251,7 +251,7 @@ msgstr ""
#: actions/apiaccountupdateprofilebackgroundimage.php:108
#: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80
-#: actions/apistatusesupdate.php:211 actions/avatarsettings.php:257
+#: actions/apistatusesupdate.php:212 actions/avatarsettings.php:257
#: actions/designadminpanel.php:123 actions/editapplication.php:118
#: actions/newapplication.php:101 actions/newnotice.php:94
#: lib/designsettings.php:283
@@ -347,7 +347,7 @@ msgid "Could not delete favorite."
msgstr ""
#: actions/apifriendshipscreate.php:109
-msgid "Could not follow user: User not found."
+msgid "Could not follow user: profile not found."
msgstr ""
#: actions/apifriendshipscreate.php:118
@@ -363,8 +363,8 @@ msgstr ""
msgid "You cannot unfollow yourself."
msgstr ""
-#: actions/apifriendshipsexists.php:94
-msgid "Two user ids or screen_names must be supplied."
+#: actions/apifriendshipsexists.php:91
+msgid "Two valid IDs or screen_names must be supplied."
msgstr ""
#: actions/apifriendshipsshow.php:134
@@ -492,6 +492,10 @@ msgstr ""
msgid "groups on %s"
msgstr ""
+#: actions/apimediaupload.php:99
+msgid "Upload failed."
+msgstr ""
+
#: actions/apioauthauthorize.php:101
msgid "No oauth_token parameter provided."
msgstr ""
@@ -630,22 +634,26 @@ msgstr ""
msgid "No status with that ID found."
msgstr ""
-#: actions/apistatusesupdate.php:241 actions/newnotice.php:155
+#: actions/apistatusesupdate.php:221
+msgid "Client must provide a 'status' parameter with a value."
+msgstr ""
+
+#: actions/apistatusesupdate.php:242 actions/newnotice.php:155
#: lib/mailhandler.php:60
#, php-format
msgid "That's too long. Max notice size is %d chars."
msgstr ""
-#: actions/apistatusesupdate.php:282 actions/apiusershow.php:96
+#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96
msgid "Not found."
msgstr ""
-#: actions/apistatusesupdate.php:305 actions/newnotice.php:178
+#: actions/apistatusesupdate.php:306 actions/newnotice.php:178
#, php-format
msgid "Max notice size is %d chars, including attachment URL."
msgstr ""
-#: actions/apisubscriptions.php:231 actions/apisubscriptions.php:261
+#: actions/apisubscriptions.php:232 actions/apisubscriptions.php:262
msgid "Unsupported format."
msgstr ""
@@ -699,6 +707,10 @@ msgstr ""
msgid "Updates tagged with %1$s on %2$s!"
msgstr ""
+#: actions/apitrends.php:87
+msgid "API method under construction."
+msgstr ""
+
#: actions/attachment.php:73
msgid "No such attachment."
msgstr ""
@@ -751,7 +763,7 @@ msgid "Preview"
msgstr ""
#: actions/avatarsettings.php:149 actions/showapplication.php:252
-#: lib/deleteuserform.php:66 lib/noticelist.php:648
+#: lib/deleteuserform.php:66 lib/noticelist.php:656
msgid "Delete"
msgstr ""
@@ -1024,7 +1036,7 @@ msgid "Do not delete this notice"
msgstr ""
#. TRANS: Submit button title for 'Yes' when deleting a notice.
-#: actions/deletenotice.php:158 lib/noticelist.php:648
+#: actions/deletenotice.php:158 lib/noticelist.php:656
msgid "Delete this notice"
msgstr ""
@@ -1298,7 +1310,8 @@ msgstr ""
msgid "Could not update group."
msgstr ""
-#: actions/editgroup.php:264 classes/User_group.php:496
+#. TRANS: Server exception thrown when creating group aliases failed.
+#: actions/editgroup.php:264 classes/User_group.php:514
msgid "Could not create aliases."
msgstr ""
@@ -2367,7 +2380,7 @@ msgstr ""
#: actions/nudge.php:85
msgid ""
-"This user doesn't allow nudges or hasn't confirmed or set his email yet."
+"This user doesn't allow nudges or hasn't confirmed or set their email yet."
msgstr ""
#: actions/nudge.php:94
@@ -2442,8 +2455,8 @@ msgid "Only %s URLs over plain HTTP please."
msgstr ""
#. TRANS: Client error on an API request with an unsupported data format.
-#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1179
-#: lib/apiaction.php:1208 lib/apiaction.php:1325
+#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1204
+#: lib/apiaction.php:1232 lib/apiaction.php:1355
msgid "Not a supported data format."
msgstr ""
@@ -3297,7 +3310,7 @@ msgstr ""
msgid "You already repeated that notice."
msgstr ""
-#: actions/repeat.php:114 lib/noticelist.php:667
+#: actions/repeat.php:114 lib/noticelist.php:675
msgid "Repeated"
msgstr ""
@@ -3335,7 +3348,7 @@ msgstr ""
#, php-format
msgid ""
"This is the timeline showing replies to %1$s but %2$s hasn't received a "
-"notice to his attention yet."
+"notice to them yet."
msgstr ""
#: actions/replies.php:204
@@ -3348,8 +3361,8 @@ msgstr ""
#: actions/replies.php:206
#, php-format
msgid ""
-"You can try to [nudge %1$s](../%2$s) or [post something to his or her "
-"attention](%%%%action.newnotice%%%%?status_textarea=%3$s)."
+"You can try to [nudge %1$s](../%2$s) or [post something to them](%%%%action."
+"newnotice%%%%?status_textarea=%3$s)."
msgstr ""
#: actions/repliesrss.php:72
@@ -3438,7 +3451,7 @@ msgstr ""
msgid "Description"
msgstr ""
-#: actions/showapplication.php:192 actions/showgroup.php:444
+#: actions/showapplication.php:192 actions/showgroup.php:436
#: lib/profileaction.php:187
msgid "Statistics"
msgstr ""
@@ -3523,16 +3536,16 @@ msgstr ""
#: actions/showfavorites.php:208
#, php-format
msgid ""
-"%s hasn't added any notices to his favorites yet. Post something interesting "
-"they would add to their favorites :)"
+"%s hasn't added any favorite notices yet. Post something interesting they "
+"would add to their favorites :)"
msgstr ""
#: actions/showfavorites.php:212
#, php-format
msgid ""
-"%s hasn't added any notices to his favorites yet. Why not [register an "
-"account](%%%%action.register%%%%) and then post something interesting they "
-"would add to their favorites :)"
+"%s hasn't added any favorite notices yet. Why not [register an account](%%%%"
+"action.register%%%%) and then post something interesting they would add to "
+"their favorites :)"
msgstr ""
#: actions/showfavorites.php:243
@@ -3591,7 +3604,7 @@ msgstr ""
msgid "FOAF for %s group"
msgstr ""
-#: actions/showgroup.php:393 actions/showgroup.php:453 lib/groupnav.php:91
+#: actions/showgroup.php:393 actions/showgroup.php:445 lib/groupnav.php:91
msgid "Members"
msgstr ""
@@ -3605,11 +3618,11 @@ msgstr ""
msgid "All members"
msgstr ""
-#: actions/showgroup.php:447
+#: actions/showgroup.php:439
msgid "Created"
msgstr ""
-#: actions/showgroup.php:463
+#: actions/showgroup.php:455
#, php-format
msgid ""
"**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3619,7 +3632,7 @@ msgid ""
"of this group and many more! ([Read more](%%%%doc.help%%%%))"
msgstr ""
-#: actions/showgroup.php:469
+#: actions/showgroup.php:461
#, php-format
msgid ""
"**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3628,7 +3641,7 @@ msgid ""
"their life and interests. "
msgstr ""
-#: actions/showgroup.php:497
+#: actions/showgroup.php:489
msgid "Admins"
msgstr ""
@@ -3703,8 +3716,8 @@ msgstr ""
#: 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)."
+"You can try to nudge %1$s or [post something to them](%%%%action.newnotice%%%"
+"%?status_textarea=%2$s)."
msgstr ""
#: actions/showstream.php:243
@@ -4071,7 +4084,8 @@ msgstr ""
msgid "You are not subscribed to that profile."
msgstr ""
-#: actions/subedit.php:83 classes/Subscription.php:132
+#. TRANS: Exception thrown when a subscription could not be stored on the server.
+#: actions/subedit.php:83 classes/Subscription.php:136
msgid "Could not save subscription."
msgstr ""
@@ -4235,10 +4249,6 @@ msgstr ""
msgid "No such tag."
msgstr ""
-#: actions/twitapitrends.php:85
-msgid "API method under construction."
-msgstr ""
-
#: actions/unblock.php:59
msgid "You haven't blocked that user."
msgstr ""
@@ -4524,146 +4534,239 @@ msgstr ""
msgid "Author(s)"
msgstr ""
-#: classes/File.php:185
+#. TRANS: Server exception thrown when a URL cannot be processed.
+#: classes/File.php:143
+#, php-format
+msgid "Cannot process URL '%s'"
+msgstr ""
+
+#. TRANS: Server exception thrown when... Robin thinks something is impossible!
+#: classes/File.php:175
+msgid "Robin thinks something is impossible."
+msgstr ""
+
+#. TRANS: Message given if an upload is larger than the configured maximum.
+#. TRANS: %1$d is the byte limit for uploads, %2$d is the byte count for the uploaded file.
+#: classes/File.php:190
#, php-format
msgid ""
-"No file may be larger than %d bytes and the file you sent was %d bytes. Try "
-"to upload a smaller version."
+"No file may be larger than %1$d bytes and the file you sent was %2$d bytes. "
+"Try to upload a smaller version."
msgstr ""
-#: classes/File.php:195
+#. TRANS: Message given if an upload would exceed user quota.
+#. TRANS: %d (number) is the user quota in bytes.
+#: classes/File.php:202
#, php-format
msgid "A file this large would exceed your user quota of %d bytes."
msgstr ""
-#: classes/File.php:202
+#. TRANS: Message given id an upload would exceed a user's monthly quota.
+#. TRANS: $d (number) is the monthly user quota in bytes.
+#: classes/File.php:211
#, php-format
msgid "A file this large would exceed your monthly quota of %d bytes."
msgstr ""
-#: classes/Group_member.php:41
+#. TRANS: Client exception thrown if a file upload does not have a valid name.
+#: classes/File.php:248 classes/File.php:263
+msgid "Invalid filename."
+msgstr ""
+
+#. TRANS: Exception thrown when joining a group fails.
+#: classes/Group_member.php:42
msgid "Group join failed."
msgstr ""
-#: classes/Group_member.php:53
+#. TRANS: Exception thrown when trying to leave a group the user is not a member of.
+#: classes/Group_member.php:55
msgid "Not part of group."
msgstr ""
-#: classes/Group_member.php:60
+#. TRANS: Exception thrown when trying to leave a group fails.
+#: classes/Group_member.php:63
msgid "Group leave failed."
msgstr ""
-#: classes/Local_group.php:41
+#. TRANS: Server exception thrown when updating a local group fails.
+#: classes/Local_group.php:42
msgid "Could not update local group."
msgstr ""
-#: classes/Login_token.php:76
+#. TRANS: Exception thrown when trying creating a login token failed.
+#. TRANS: %s is the user nickname for which token creation failed.
+#: classes/Login_token.php:78
#, php-format
msgid "Could not create login token for %s"
msgstr ""
-#: classes/Message.php:45
+#. TRANS: Exception thrown when database name or Data Source Name could not be found.
+#: classes/Memcached_DataObject.php:533
+msgid "No database name or DSN found anywhere."
+msgstr ""
+
+#. TRANS: Client exception thrown when a user tries to send a direct message while being banned from sending them.
+#: classes/Message.php:46
msgid "You are banned from sending direct messages."
msgstr ""
-#: classes/Message.php:61
+#. TRANS: Message given when a message could not be stored on the server.
+#: classes/Message.php:63
msgid "Could not insert message."
msgstr ""
-#: classes/Message.php:71
+#. TRANS: Message given when a message could not be updated on the server.
+#: classes/Message.php:74
msgid "Could not update message with new URI."
msgstr ""
+#. TRANS: Server exception thrown when a user profile for a notice cannot be found.
+#. TRANS: %1$d is a profile ID (number), %2$d is a notice ID (number).
+#: classes/Notice.php:98
+#, php-format
+msgid "No such profile (%1$d) for notice (%2$d)."
+msgstr ""
+
#. TRANS: Server exception. %s are the error details.
-#: classes/Notice.php:182
+#: classes/Notice.php:190
#, php-format
msgid "Database error inserting hashtag: %s"
msgstr ""
-#: classes/Notice.php:251
+#. TRANS: Client exception thrown if a notice contains too many characters.
+#: classes/Notice.php:260
msgid "Problem saving notice. Too long."
msgstr ""
-#: classes/Notice.php:255
+#. TRANS: Client exception thrown when trying to save a notice for an unknown user.
+#: classes/Notice.php:265
msgid "Problem saving notice. Unknown user."
msgstr ""
-#: classes/Notice.php:260
+#. TRANS: Client exception thrown when a user tries to post too many notices in a given time frame.
+#: classes/Notice.php:271
msgid ""
"Too many notices too fast; take a breather and post again in a few minutes."
msgstr ""
-#: classes/Notice.php:266
+#. TRANS: Client exception thrown when a user tries to post too many duplicate notices in a given time frame.
+#: classes/Notice.php:278
msgid ""
"Too many duplicate messages too quickly; take a breather and post again in a "
"few minutes."
msgstr ""
-#: classes/Notice.php:272
+#. TRANS: Client exception thrown when a user tries to post while being banned.
+#: classes/Notice.php:286
msgid "You are banned from posting notices on this site."
msgstr ""
-#: classes/Notice.php:338 classes/Notice.php:364
+#. TRANS: Server exception thrown when a notice cannot be saved.
+#. TRANS: Server exception thrown when a notice cannot be updated.
+#: classes/Notice.php:353 classes/Notice.php:380
msgid "Problem saving notice."
msgstr ""
-#: classes/Notice.php:973
+#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups().
+#: classes/Notice.php:892
+msgid "Bad type provided to saveKnownGroups"
+msgstr ""
+
+#. TRANS: Server exception thrown when an update for a group inbox fails.
+#: classes/Notice.php:991
msgid "Problem saving group inbox."
msgstr ""
#. TRANS: Message used to repeat a notice. RT is the abbreviation of 'retweet'.
#. TRANS: %1$s is the repeated user's name, %2$s is the repeated notice.
-#: classes/Notice.php:1564
+#: classes/Notice.php:1614
#, php-format
msgid "RT @%1$s %2$s"
msgstr ""
-#: classes/Subscription.php:74 lib/oauthstore.php:465
+#. TRANS: Exception thrown when trying to revoke an existing role for a user that does not exist.
+#. TRANS: %1$s is the role name, %2$s is the user ID (number).
+#: classes/Profile.php:740
+#, php-format
+msgid "Cannot revoke role \"%1$s\" for user #%2$d; does not exist."
+msgstr ""
+
+#. TRANS: Exception thrown when trying to revoke a role for a user with a failing database query.
+#. TRANS: %1$s is the role name, %2$s is the user ID (number).
+#: classes/Profile.php:749
+#, php-format
+msgid "Cannot revoke role \"%1$s\" for user #%2$d; database error."
+msgstr ""
+
+#. TRANS: Exception thrown when a right for a non-existing user profile is checked.
+#: classes/Remote_profile.php:54
+msgid "Missing profile."
+msgstr ""
+
+#. TRANS: Exception thrown when a tag cannot be saved.
+#: classes/Status_network.php:346
+msgid "Unable to save tag."
+msgstr ""
+
+#. TRANS: Exception thrown when trying to subscribe while being banned from subscribing.
+#: classes/Subscription.php:75 lib/oauthstore.php:465
msgid "You have been banned from subscribing."
msgstr ""
-#: classes/Subscription.php:78
+#. TRANS: Exception thrown when trying to subscribe while already subscribed.
+#: classes/Subscription.php:80
msgid "Already subscribed!"
msgstr ""
-#: classes/Subscription.php:82
+#. TRANS: Exception thrown when trying to subscribe to a user who has blocked the subscribing user.
+#: classes/Subscription.php:85
msgid "User has blocked you."
msgstr ""
-#: classes/Subscription.php:167
+#. TRANS: Exception thrown when trying to unsibscribe without a subscription.
+#: classes/Subscription.php:171
msgid "Not subscribed!"
msgstr ""
-#: classes/Subscription.php:173
-msgid "Couldn't delete self-subscription."
+#. TRANS: Exception thrown when trying to unsubscribe a user from themselves.
+#: classes/Subscription.php:178
+msgid "Could not delete self-subscription."
msgstr ""
-#: classes/Subscription.php:200
-msgid "Couldn't delete subscription OMB token."
+#. TRANS: Exception thrown when the OMB token for a subscription could not deleted on the server.
+#: classes/Subscription.php:206
+msgid "Could not delete subscription OMB token."
msgstr ""
-#: classes/Subscription.php:211
-msgid "Couldn't delete subscription."
+#. TRANS: Exception thrown when a subscription could not be deleted on the server.
+#: classes/Subscription.php:218
+msgid "Could not delete subscription."
msgstr ""
-#: classes/User.php:363
+#. TRANS: Notice given on user registration.
+#. TRANS: %1$s is the sitename, $2$s is the registering user's nickname.
+#: classes/User.php:365
#, php-format
msgid "Welcome to %1$s, @%2$s!"
msgstr ""
-#: classes/User_group.php:480
+#. TRANS: Server exception thrown when creating a group failed.
+#: classes/User_group.php:496
msgid "Could not create group."
msgstr ""
-#: classes/User_group.php:489
+#. TRANS: Server exception thrown when updating a group URI failed.
+#: classes/User_group.php:506
msgid "Could not set group URI."
msgstr ""
-#: classes/User_group.php:510
+#. TRANS: Server exception thrown when setting group membership failed.
+#: classes/User_group.php:529
msgid "Could not set group membership."
msgstr ""
-#: classes/User_group.php:524
+#. TRANS: Server exception thrown when saving local group information failed.
+#: classes/User_group.php:544
msgid "Could not save local group info."
msgstr ""
@@ -5968,7 +6071,7 @@ msgid ""
"users in conversation. People can send you messages for your eyes only."
msgstr ""
-#: lib/mailbox.php:227 lib/noticelist.php:497
+#: lib/mailbox.php:227 lib/noticelist.php:505
msgid "from"
msgstr ""
@@ -6023,24 +6126,24 @@ msgstr ""
msgid "File upload stopped by extension."
msgstr ""
-#: lib/mediafile.php:179 lib/mediafile.php:216
+#: lib/mediafile.php:179 lib/mediafile.php:217
msgid "File exceeds user's quota."
msgstr ""
-#: lib/mediafile.php:196 lib/mediafile.php:233
+#: lib/mediafile.php:197 lib/mediafile.php:234
msgid "File could not be moved to destination directory."
msgstr ""
-#: lib/mediafile.php:201 lib/mediafile.php:237
+#: lib/mediafile.php:202 lib/mediafile.php:238
msgid "Could not determine file's MIME type."
msgstr ""
-#: lib/mediafile.php:270
+#: lib/mediafile.php:318
#, php-format
msgid " Try using another %s format."
msgstr ""
-#: lib/mediafile.php:275
+#: lib/mediafile.php:323
#, php-format
msgid "%s is not a supported file type on this server."
msgstr ""
@@ -6094,51 +6197,51 @@ msgid ""
msgstr ""
#. TRANS: Used in coordinates as abbreviation of north
-#: lib/noticelist.php:430
+#: lib/noticelist.php:436
msgid "N"
msgstr ""
#. TRANS: Used in coordinates as abbreviation of south
-#: lib/noticelist.php:432
+#: lib/noticelist.php:438
msgid "S"
msgstr ""
#. TRANS: Used in coordinates as abbreviation of east
-#: lib/noticelist.php:434
+#: lib/noticelist.php:440
msgid "E"
msgstr ""
#. TRANS: Used in coordinates as abbreviation of west
-#: lib/noticelist.php:436
+#: lib/noticelist.php:442
msgid "W"
msgstr ""
-#: lib/noticelist.php:438
+#: lib/noticelist.php:444
#, php-format
msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
msgstr ""
-#: lib/noticelist.php:447
+#: lib/noticelist.php:453
msgid "at"
msgstr ""
-#: lib/noticelist.php:559
+#: lib/noticelist.php:567
msgid "in context"
msgstr ""
-#: lib/noticelist.php:594
+#: lib/noticelist.php:602
msgid "Repeated by"
msgstr ""
-#: lib/noticelist.php:621
+#: lib/noticelist.php:629
msgid "Reply to this notice"
msgstr ""
-#: lib/noticelist.php:622
+#: lib/noticelist.php:630
msgid "Reply"
msgstr ""
-#: lib/noticelist.php:666
+#: lib/noticelist.php:674
msgid "Notice repeated"
msgstr ""
diff --git a/locale/sv/LC_MESSAGES/statusnet.po b/locale/sv/LC_MESSAGES/statusnet.po
index 5d8461ca0..68ba9a6a9 100644
--- a/locale/sv/LC_MESSAGES/statusnet.po
+++ b/locale/sv/LC_MESSAGES/statusnet.po
@@ -1,6 +1,7 @@
# Translation of StatusNet to Swedish
#
# Author@translatewiki.net: Jamminjohn
+# Author@translatewiki.net: Kjell
# Author@translatewiki.net: McDutchie
# --
# This file is distributed under the same license as the StatusNet package.
@@ -9,12 +10,12 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-06-16 22:18+0000\n"
-"PO-Revision-Date: 2010-06-21 18:05:03+0000\n"
+"POT-Creation-Date: 2010-08-03 13:21+0000\n"
+"PO-Revision-Date: 2010-08-03 13:22:26+0000\n"
"Language-Team: Swedish\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.17alpha (r68367); Translate extension (2010-06-12)\n"
+"X-Generator: MediaWiki 1.17alpha (r70381); Translate extension (2010-07-21)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: sv\n"
"X-Message-Group: out-statusnet\n"
@@ -99,7 +100,7 @@ msgstr "Ingen sådan sida"
#: actions/apidirectmessagenew.php:74 actions/apigroupcreate.php:113
#: actions/apigroupismember.php:91 actions/apigroupjoin.php:100
#: actions/apigroupleave.php:100 actions/apigrouplist.php:73
-#: actions/apistatusesupdate.php:228 actions/apisubscriptions.php:87
+#: actions/apistatusesupdate.php:229 actions/apisubscriptions.php:87
#: actions/apitimelinefavorites.php:72 actions/apitimelinefriends.php:174
#: actions/apitimelinehome.php:80 actions/apitimelinementions.php:80
#: actions/apitimelineuser.php:82 actions/avatarbynickname.php:75
@@ -166,20 +167,20 @@ msgstr ""
#. TRANS: %1$s is user nickname, %2$s is user nickname, %2$s is user nickname prefixed with "@"
#: actions/all.php:146
-#, php-format
+#, fuzzy, 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)."
+"You can try to [nudge %1$s](../%2$s) from their profile or [post something "
+"to them](%%%%action.newnotice%%%%?status_textarea=%3$s)."
msgstr ""
"Du kan prova att [knuffa %1$s](../%2$s) från dennes profil eller [skriva "
"någonting för hans eller hennes uppmärksamhet](%%%%action.newnotice%%%%?"
"status_textarea=%3$s)."
#: actions/all.php:149 actions/replies.php:210 actions/showstream.php:211
-#, php-format
+#, fuzzy, php-format
msgid ""
"Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
-"post a notice to his or her attention."
+"post a notice to them."
msgstr ""
"Varför inte [registrera ett konto](%%%%action.register%%%%) och sedan knuffa "
"%s eller skriva en notis för hans eller hennes uppmärksamhet."
@@ -214,7 +215,7 @@ msgstr "Uppdateringar från %1$s och vänner på %2$s!"
#: actions/apistatusesshow.php:109 actions/apistatusnetconfig.php:141
#: actions/apistatusnetversion.php:93 actions/apisubscriptions.php:111
#: actions/apitimelinefavorites.php:174 actions/apitimelinefriends.php:271
-#: actions/apitimelinegroup.php:152 actions/apitimelinehome.php:175
+#: actions/apitimelinegroup.php:154 actions/apitimelinehome.php:175
#: actions/apitimelinementions.php:174 actions/apitimelinepublic.php:241
#: actions/apitimelineretweetedtome.php:121
#: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161
@@ -262,7 +263,7 @@ msgstr "Kunde inte spara profil."
#: actions/apiaccountupdateprofilebackgroundimage.php:108
#: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80
-#: actions/apistatusesupdate.php:211 actions/avatarsettings.php:257
+#: actions/apistatusesupdate.php:212 actions/avatarsettings.php:257
#: actions/designadminpanel.php:123 actions/editapplication.php:118
#: actions/newapplication.php:101 actions/newnotice.php:94
#: lib/designsettings.php:283
@@ -360,7 +361,8 @@ msgid "Could not delete favorite."
msgstr "Kunde inte ta bort favoriten."
#: actions/apifriendshipscreate.php:109
-msgid "Could not follow user: User not found."
+#, fuzzy
+msgid "Could not follow user: profile not found."
msgstr "Kunde inte följa användare: användare hittades inte."
#: actions/apifriendshipscreate.php:118
@@ -376,8 +378,9 @@ msgstr "Kunde inte sluta följa användaren: användaren hittades inte."
msgid "You cannot unfollow yourself."
msgstr "Du kan inte sluta följa dig själv."
-#: actions/apifriendshipsexists.php:94
-msgid "Two user ids or screen_names must be supplied."
+#: actions/apifriendshipsexists.php:91
+#, fuzzy
+msgid "Two valid IDs or screen_names must be supplied."
msgstr "Två användar-ID:n eller screen_names måste tillhandahållas."
#: actions/apifriendshipsshow.php:134
@@ -506,6 +509,11 @@ msgstr "%s grupper"
msgid "groups on %s"
msgstr "grupper på %s"
+#: actions/apimediaupload.php:99
+#, fuzzy
+msgid "Upload failed."
+msgstr "Ladda upp fil"
+
#: actions/apioauthauthorize.php:101
msgid "No oauth_token parameter provided."
msgstr "Ingen oauth_token-parameter angiven."
@@ -647,22 +655,26 @@ msgstr "Status borttagen."
msgid "No status with that ID found."
msgstr "Ingen status med det ID:t hittades."
-#: actions/apistatusesupdate.php:241 actions/newnotice.php:155
+#: actions/apistatusesupdate.php:221
+msgid "Client must provide a 'status' parameter with a value."
+msgstr ""
+
+#: actions/apistatusesupdate.php:242 actions/newnotice.php:155
#: lib/mailhandler.php:60
#, php-format
msgid "That's too long. Max notice size is %d chars."
msgstr "Det är för långt. Maximal notisstorlek är %d tecken."
-#: actions/apistatusesupdate.php:282 actions/apiusershow.php:96
+#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96
msgid "Not found."
msgstr "Hittades inte."
-#: actions/apistatusesupdate.php:305 actions/newnotice.php:178
+#: actions/apistatusesupdate.php:306 actions/newnotice.php:178
#, php-format
msgid "Max notice size is %d chars, including attachment URL."
msgstr "Maximal notisstorlek är %d tecken, inklusive webbadress för bilaga."
-#: actions/apisubscriptions.php:231 actions/apisubscriptions.php:261
+#: actions/apisubscriptions.php:232 actions/apisubscriptions.php:262
msgid "Unsupported format."
msgstr "Format som inte stödjs."
@@ -716,6 +728,10 @@ msgstr "Notiser taggade med %s"
msgid "Updates tagged with %1$s on %2$s!"
msgstr "Uppdateringar taggade med %1$s på %2$s!"
+#: actions/apitrends.php:87
+msgid "API method under construction."
+msgstr "API-metoden är under uppbyggnad."
+
#: actions/attachment.php:73
msgid "No such attachment."
msgstr "Ingen sådan bilaga."
@@ -769,7 +785,7 @@ msgid "Preview"
msgstr "Förhandsgranska"
#: actions/avatarsettings.php:149 actions/showapplication.php:252
-#: lib/deleteuserform.php:66 lib/noticelist.php:648
+#: lib/deleteuserform.php:66 lib/noticelist.php:656
msgid "Delete"
msgstr "Ta bort"
@@ -1051,7 +1067,7 @@ msgid "Do not delete this notice"
msgstr "Ta inte bort denna notis"
#. TRANS: Submit button title for 'Yes' when deleting a notice.
-#: actions/deletenotice.php:158 lib/noticelist.php:648
+#: actions/deletenotice.php:158 lib/noticelist.php:656
msgid "Delete this notice"
msgstr "Ta bort denna notis"
@@ -1121,13 +1137,12 @@ msgid "Theme for the site."
msgstr "Tema för webbplatsen."
#: actions/designadminpanel.php:467
-#, fuzzy
msgid "Custom theme"
-msgstr "Webbplatstema"
+msgstr "Anpassat tema"
#: actions/designadminpanel.php:471
msgid "You can upload a custom StatusNet theme as a .ZIP archive."
-msgstr ""
+msgstr "Du kan ladda upp ett eget StatusNet-tema som ett .ZIP-arkiv."
#: actions/designadminpanel.php:486 lib/designsettings.php:101
msgid "Change background image"
@@ -1187,11 +1202,11 @@ msgstr "Länkar"
#: actions/designadminpanel.php:651
msgid "Advanced"
-msgstr ""
+msgstr "Avancerat"
#: actions/designadminpanel.php:655
msgid "Custom CSS"
-msgstr ""
+msgstr "Anpassad CSS"
#: actions/designadminpanel.php:676 lib/designsettings.php:247
msgid "Use defaults"
@@ -1330,7 +1345,8 @@ msgstr "Ogiltigt alias: \"%s\""
msgid "Could not update group."
msgstr "Kunde inte uppdatera grupp."
-#: actions/editgroup.php:264 classes/User_group.php:496
+#. TRANS: Server exception thrown when creating group aliases failed.
+#: actions/editgroup.php:264 classes/User_group.php:514
msgid "Could not create aliases."
msgstr "Kunde inte skapa alias."
@@ -2483,8 +2499,9 @@ msgid "Updates matching search term \"%1$s\" on %2$s!"
msgstr "Uppdateringar som matchar söksträngen \"%1$s\" på %2$s!"
#: actions/nudge.php:85
+#, fuzzy
msgid ""
-"This user doesn't allow nudges or hasn't confirmed or set his email yet."
+"This user doesn't allow nudges or hasn't confirmed or set their email yet."
msgstr ""
"Denna användare har inte tillåtit knuffar eller har inte bekräftat eller "
"angett sitt e-post än."
@@ -2562,8 +2579,8 @@ msgid "Only %s URLs over plain HTTP please."
msgstr "Endast %s-webbadresser över vanlig HTTP."
#. TRANS: Client error on an API request with an unsupported data format.
-#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1179
-#: lib/apiaction.php:1208 lib/apiaction.php:1325
+#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1204
+#: lib/apiaction.php:1232 lib/apiaction.php:1355
msgid "Not a supported data format."
msgstr "Ett dataformat som inte stödjs"
@@ -3475,7 +3492,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:667
+#: actions/repeat.php:114 lib/noticelist.php:675
msgid "Repeated"
msgstr "Upprepad"
@@ -3510,10 +3527,10 @@ msgid "Replies feed for %s (Atom)"
msgstr "Flöde med svar för %s (Atom)"
#: actions/replies.php:199
-#, php-format
+#, fuzzy, php-format
msgid ""
"This is the timeline showing replies to %1$s but %2$s hasn't received a "
-"notice to his attention yet."
+"notice to them yet."
msgstr ""
"Detta är tidslinjen som visar svar till %s1$ men %2$s har inte tagit emot en "
"notis för dennes uppmärksamhet än."
@@ -3528,10 +3545,10 @@ msgstr ""
"personer eller [gå med i grupper](%%action.groups%%)."
#: actions/replies.php:206
-#, php-format
+#, fuzzy, php-format
msgid ""
-"You can try to [nudge %1$s](../%2$s) or [post something to his or her "
-"attention](%%%%action.newnotice%%%%?status_textarea=%3$s)."
+"You can try to [nudge %1$s](../%2$s) or [post something to them](%%%%action."
+"newnotice%%%%?status_textarea=%3$s)."
msgstr ""
"Du kan prova att [knuffa %1$s](../%2$s) eller [posta någonting för hans "
"eller hennes uppmärksamhet](%%%%action.newnotice%%%%?status_textarea=%3$s)."
@@ -3622,7 +3639,7 @@ msgstr "Organisation"
msgid "Description"
msgstr "Beskrivning"
-#: actions/showapplication.php:192 actions/showgroup.php:444
+#: actions/showapplication.php:192 actions/showgroup.php:436
#: lib/profileaction.php:187
msgid "Statistics"
msgstr "Statistik"
@@ -3711,20 +3728,20 @@ msgstr ""
"att sätta strålkastarljuset på."
#: actions/showfavorites.php:208
-#, php-format
+#, fuzzy, php-format
msgid ""
-"%s hasn't added any notices to his favorites yet. Post something interesting "
-"they would add to their favorites :)"
+"%s hasn't added any favorite notices yet. Post something interesting they "
+"would add to their favorites :)"
msgstr ""
"%s har inte lagt till några notiser till sina favoriter ännu. Posta något "
"intressant de skulle lägga till sina favoriter :)"
#: actions/showfavorites.php:212
-#, php-format
+#, fuzzy, php-format
msgid ""
-"%s hasn't added any notices to his favorites yet. Why not [register an "
-"account](%%%%action.register%%%%) and then post something interesting they "
-"would add to their favorites :)"
+"%s hasn't added any favorite notices yet. Why not [register an account](%%%%"
+"action.register%%%%) and then post something interesting they would add to "
+"their favorites :)"
msgstr ""
"%s har inte lagt till några notiser till sina favoriter ännu. Varför inte "
"[registrera ett konto](%%%%action.register%%%%) och posta något intressant "
@@ -3786,7 +3803,7 @@ msgstr "Flöde av notiser för %s grupp (Atom)"
msgid "FOAF for %s group"
msgstr "FOAF för %s grupp"
-#: actions/showgroup.php:393 actions/showgroup.php:453 lib/groupnav.php:91
+#: actions/showgroup.php:393 actions/showgroup.php:445 lib/groupnav.php:91
msgid "Members"
msgstr "Medlemmar"
@@ -3800,11 +3817,11 @@ msgstr "(Ingen)"
msgid "All members"
msgstr "Alla medlemmar"
-#: actions/showgroup.php:447
+#: actions/showgroup.php:439
msgid "Created"
msgstr "Skapad"
-#: actions/showgroup.php:463
+#: actions/showgroup.php:455
#, php-format
msgid ""
"**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3819,7 +3836,7 @@ msgstr ""
"sina liv och intressen. [Gå med nu](%%%%action.register%%%%) för att bli en "
"del av denna grupp och många fler! ([Läs mer](%%%%doc.help%%%%))"
-#: actions/showgroup.php:469
+#: actions/showgroup.php:461
#, php-format
msgid ""
"**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3832,7 +3849,7 @@ msgstr ""
"[StatusNet](http://status.net/). Dess medlemmar delar korta meddelande om "
"sina liv och intressen. "
-#: actions/showgroup.php:497
+#: actions/showgroup.php:489
msgid "Admins"
msgstr "Administratörer"
@@ -3907,10 +3924,10 @@ msgstr ""
"inte börja nu?"
#: actions/showstream.php:207
-#, php-format
+#, fuzzy, php-format
msgid ""
-"You can try to nudge %1$s or [post something to his or her attention](%%%%"
-"action.newnotice%%%%?status_textarea=%2$s)."
+"You can try to nudge %1$s or [post something to them](%%%%action.newnotice%%%"
+"%?status_textarea=%2$s)."
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)."
@@ -4296,7 +4313,8 @@ msgstr "Spara inställningar för ögonblicksbild"
msgid "You are not subscribed to that profile."
msgstr "Du är inte prenumerat hos den profilen."
-#: actions/subedit.php:83 classes/Subscription.php:132
+#. TRANS: Exception thrown when a subscription could not be stored on the server.
+#: actions/subedit.php:83 classes/Subscription.php:136
msgid "Could not save subscription."
msgstr "Kunde inte spara prenumeration."
@@ -4475,10 +4493,6 @@ msgstr ""
msgid "No such tag."
msgstr "Ingen sådan tagg."
-#: actions/twitapitrends.php:85
-msgid "API method under construction."
-msgstr "API-metoden är under uppbyggnad."
-
#: actions/unblock.php:59
msgid "You haven't blocked that user."
msgstr "Du har inte blockerat denna användared."
@@ -4791,80 +4805,128 @@ msgstr "Version"
msgid "Author(s)"
msgstr "Författare"
-#: classes/File.php:185
+#. TRANS: Server exception thrown when a URL cannot be processed.
+#: classes/File.php:143
#, php-format
+msgid "Cannot process URL '%s'"
+msgstr "Webbadressen '%s' kan inte bearbeta"
+
+#. TRANS: Server exception thrown when... Robin thinks something is impossible!
+#: classes/File.php:175
+msgid "Robin thinks something is impossible."
+msgstr "Robin tycker att något är omöjligt"
+
+#. TRANS: Message given if an upload is larger than the configured maximum.
+#. TRANS: %1$d is the byte limit for uploads, %2$d is the byte count for the uploaded file.
+#: classes/File.php:190
+#, fuzzy, php-format
msgid ""
-"No file may be larger than %d bytes and the file you sent was %d bytes. Try "
-"to upload a smaller version."
+"No file may be larger than %1$d bytes and the file you sent was %2$d bytes. "
+"Try to upload a smaller version."
msgstr ""
"Inga filer får vara större än %d byte och filen du skickade var %d byte. "
"Prova att ladda upp en mindre version."
-#: classes/File.php:195
+#. TRANS: Message given if an upload would exceed user quota.
+#. TRANS: %d (number) is the user quota in bytes.
+#: classes/File.php:202
#, php-format
msgid "A file this large would exceed your user quota of %d bytes."
msgstr "En så här stor fil skulle överskrida din användarkvot på %d byte."
-#: classes/File.php:202
+#. TRANS: Message given id an upload would exceed a user's monthly quota.
+#. TRANS: $d (number) is the monthly user quota in bytes.
+#: classes/File.php:211
#, php-format
msgid "A file this large would exceed your monthly quota of %d bytes."
msgstr "En sådan här stor fil skulle överskrida din månatliga kvot på %d byte."
-#: classes/Group_member.php:41
+#. TRANS: Client exception thrown if a file upload does not have a valid name.
+#: classes/File.php:248 classes/File.php:263
+#, fuzzy
+msgid "Invalid filename."
+msgstr "Ogiltig storlek."
+
+#. TRANS: Exception thrown when joining a group fails.
+#: classes/Group_member.php:42
msgid "Group join failed."
msgstr "Gruppanslutning misslyckades."
-#: classes/Group_member.php:53
+#. TRANS: Exception thrown when trying to leave a group the user is not a member of.
+#: classes/Group_member.php:55
msgid "Not part of group."
msgstr "Inte med i grupp."
-#: classes/Group_member.php:60
+#. TRANS: Exception thrown when trying to leave a group fails.
+#: classes/Group_member.php:63
msgid "Group leave failed."
msgstr "Grupputträde misslyckades."
-#: classes/Local_group.php:41
+#. TRANS: Server exception thrown when updating a local group fails.
+#: classes/Local_group.php:42
msgid "Could not update local group."
msgstr "Kunde inte uppdatera lokal grupp."
-#: classes/Login_token.php:76
+#. TRANS: Exception thrown when trying creating a login token failed.
+#. TRANS: %s is the user nickname for which token creation failed.
+#: classes/Login_token.php:78
#, php-format
msgid "Could not create login token for %s"
msgstr "Kunde inte skapa inloggnings-token för %s"
-#: classes/Message.php:45
+#. TRANS: Exception thrown when database name or Data Source Name could not be found.
+#: classes/Memcached_DataObject.php:533
+msgid "No database name or DSN found anywhere."
+msgstr ""
+
+#. TRANS: Client exception thrown when a user tries to send a direct message while being banned from sending them.
+#: classes/Message.php:46
msgid "You are banned from sending direct messages."
msgstr "Du är utestängd från att skicka direktmeddelanden."
-#: classes/Message.php:61
+#. TRANS: Message given when a message could not be stored on the server.
+#: classes/Message.php:63
msgid "Could not insert message."
msgstr "Kunde inte infoga meddelande."
-#: classes/Message.php:71
+#. TRANS: Message given when a message could not be updated on the server.
+#: classes/Message.php:74
msgid "Could not update message with new URI."
msgstr "Kunde inte uppdatera meddelande med ny URI."
+#. TRANS: Server exception thrown when a user profile for a notice cannot be found.
+#. TRANS: %1$d is a profile ID (number), %2$d is a notice ID (number).
+#: classes/Notice.php:98
+#, php-format
+msgid "No such profile (%1$d) for notice (%2$d)."
+msgstr ""
+
#. TRANS: Server exception. %s are the error details.
-#: classes/Notice.php:182
+#: classes/Notice.php:190
#, php-format
msgid "Database error inserting hashtag: %s"
msgstr "Databasfel vid infogning av hashtag: %s"
-#: classes/Notice.php:251
+#. TRANS: Client exception thrown if a notice contains too many characters.
+#: classes/Notice.php:260
msgid "Problem saving notice. Too long."
msgstr "Problem vid sparande av notis. För långt."
-#: classes/Notice.php:255
+#. TRANS: Client exception thrown when trying to save a notice for an unknown user.
+#: classes/Notice.php:265
msgid "Problem saving notice. Unknown user."
msgstr "Problem vid sparande av notis. Okänd användare."
-#: classes/Notice.php:260
+#. TRANS: Client exception thrown when a user tries to post too many notices in a given time frame.
+#: classes/Notice.php:271
msgid ""
"Too many notices too fast; take a breather and post again in a few minutes."
msgstr ""
"För många notiser för snabbt; ta en vilopaus och posta igen om ett par "
"minuter."
-#: classes/Notice.php:266
+#. TRANS: Client exception thrown when a user tries to post too many duplicate notices in a given time frame.
+#: classes/Notice.php:278
msgid ""
"Too many duplicate messages too quickly; take a breather and post again in a "
"few minutes."
@@ -4872,71 +4934,122 @@ msgstr ""
"För många duplicerade meddelanden för snabbt; ta en vilopaus och posta igen "
"om ett par minuter."
-#: classes/Notice.php:272
+#. TRANS: Client exception thrown when a user tries to post while being banned.
+#: classes/Notice.php:286
msgid "You are banned from posting notices on this site."
msgstr "Du är utestängd från att posta notiser på denna webbplats."
-#: classes/Notice.php:338 classes/Notice.php:364
+#. TRANS: Server exception thrown when a notice cannot be saved.
+#. TRANS: Server exception thrown when a notice cannot be updated.
+#: classes/Notice.php:353 classes/Notice.php:380
msgid "Problem saving notice."
msgstr "Problem med att spara notis."
-#: classes/Notice.php:973
+#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups().
+#: classes/Notice.php:892
+msgid "Bad type provided to saveKnownGroups"
+msgstr ""
+
+#. TRANS: Server exception thrown when an update for a group inbox fails.
+#: classes/Notice.php:991
msgid "Problem saving group inbox."
msgstr "Problem med att spara gruppinkorg."
#. TRANS: Message used to repeat a notice. RT is the abbreviation of 'retweet'.
#. TRANS: %1$s is the repeated user's name, %2$s is the repeated notice.
-#: classes/Notice.php:1564
+#: classes/Notice.php:1614
#, php-format
msgid "RT @%1$s %2$s"
msgstr "RT @%1$s %2$s"
-#: classes/Subscription.php:74 lib/oauthstore.php:465
+#. TRANS: Exception thrown when trying to revoke an existing role for a user that does not exist.
+#. TRANS: %1$s is the role name, %2$s is the user ID (number).
+#: classes/Profile.php:740
+#, php-format
+msgid "Cannot revoke role \"%1$s\" for user #%2$d; does not exist."
+msgstr ""
+
+#. TRANS: Exception thrown when trying to revoke a role for a user with a failing database query.
+#. TRANS: %1$s is the role name, %2$s is the user ID (number).
+#: classes/Profile.php:749
+#, php-format
+msgid "Cannot revoke role \"%1$s\" for user #%2$d; database error."
+msgstr ""
+
+#. TRANS: Exception thrown when a right for a non-existing user profile is checked.
+#: classes/Remote_profile.php:54
+#, fuzzy
+msgid "Missing profile."
+msgstr "Användaren har ingen profil."
+
+#. TRANS: Exception thrown when a tag cannot be saved.
+#: classes/Status_network.php:346
+#, fuzzy
+msgid "Unable to save tag."
+msgstr "Kunde inte spara webbplatsnotis."
+
+#. TRANS: Exception thrown when trying to subscribe while being banned from subscribing.
+#: classes/Subscription.php:75 lib/oauthstore.php:465
msgid "You have been banned from subscribing."
msgstr "Du har blivit utestängd från att prenumerera."
-#: classes/Subscription.php:78
+#. TRANS: Exception thrown when trying to subscribe while already subscribed.
+#: classes/Subscription.php:80
msgid "Already subscribed!"
msgstr "Redan prenumerant!"
-#: classes/Subscription.php:82
+#. TRANS: Exception thrown when trying to subscribe to a user who has blocked the subscribing user.
+#: classes/Subscription.php:85
msgid "User has blocked you."
msgstr "Användaren har blockerat dig."
-#: classes/Subscription.php:167
+#. TRANS: Exception thrown when trying to unsibscribe without a subscription.
+#: classes/Subscription.php:171
msgid "Not subscribed!"
msgstr "Inte prenumerant!"
-#: classes/Subscription.php:173
-msgid "Couldn't delete self-subscription."
+#. TRANS: Exception thrown when trying to unsubscribe a user from themselves.
+#: classes/Subscription.php:178
+#, fuzzy
+msgid "Could not delete self-subscription."
msgstr "Kunde inte ta bort själv-prenumeration."
-#: classes/Subscription.php:200
-msgid "Couldn't delete subscription OMB token."
+#. TRANS: Exception thrown when the OMB token for a subscription could not deleted on the server.
+#: classes/Subscription.php:206
+#, fuzzy
+msgid "Could not delete subscription OMB token."
msgstr "Kunde inte radera OMB prenumerations-token."
-#: classes/Subscription.php:211
-msgid "Couldn't delete subscription."
+#. TRANS: Exception thrown when a subscription could not be deleted on the server.
+#: classes/Subscription.php:218
+#, fuzzy
+msgid "Could not delete subscription."
msgstr "Kunde inte ta bort prenumeration."
-#: classes/User.php:363
+#. TRANS: Notice given on user registration.
+#. TRANS: %1$s is the sitename, $2$s is the registering user's nickname.
+#: classes/User.php:365
#, php-format
msgid "Welcome to %1$s, @%2$s!"
msgstr "Välkommen till %1$s, @%2$s!"
-#: classes/User_group.php:480
+#. TRANS: Server exception thrown when creating a group failed.
+#: classes/User_group.php:496
msgid "Could not create group."
msgstr "Kunde inte skapa grupp."
-#: classes/User_group.php:489
+#. TRANS: Server exception thrown when updating a group URI failed.
+#: classes/User_group.php:506
msgid "Could not set group URI."
msgstr "Kunde inte ställa in grupp-URI."
-#: classes/User_group.php:510
+#. TRANS: Server exception thrown when setting group membership failed.
+#: classes/User_group.php:529
msgid "Could not set group membership."
msgstr "Kunde inte ställa in gruppmedlemskap."
-#: classes/User_group.php:524
+#. TRANS: Server exception thrown when saving local group information failed.
+#: classes/User_group.php:544
msgid "Could not save local group info."
msgstr "Kunde inte spara lokal gruppinformation."
@@ -6118,6 +6231,9 @@ msgid ""
"If you believe this account is being used abusively, you can block them from "
"your subscribers list and report as spam to site administrators at %s"
msgstr ""
+"Om du anser att kontot används oriktigt kan du blockera det från listan över "
+"dina prenumeranter och rapportera det som skräppost till administratörer på %"
+"s"
#. TRANS: Main body of new-subscriber notification e-mail
#: lib/mail.php:254
@@ -6394,7 +6510,7 @@ msgstr ""
"engagera andra användare i konversationen. Folk kan skicka meddelanden till "
"dig som bara du ser."
-#: lib/mailbox.php:227 lib/noticelist.php:497
+#: lib/mailbox.php:227 lib/noticelist.php:505
msgid "from"
msgstr "från"
@@ -6453,24 +6569,24 @@ msgstr "Misslyckades att skriva fil till disk."
msgid "File upload stopped by extension."
msgstr "Filuppladdningen stoppad pga filändelse"
-#: lib/mediafile.php:179 lib/mediafile.php:216
+#: lib/mediafile.php:179 lib/mediafile.php:217
msgid "File exceeds user's quota."
msgstr "Fil överstiger användaren kvot."
-#: lib/mediafile.php:196 lib/mediafile.php:233
+#: lib/mediafile.php:197 lib/mediafile.php:234
msgid "File could not be moved to destination directory."
msgstr "Fil kunde inte flyttas till destinationskatalog."
-#: lib/mediafile.php:201 lib/mediafile.php:237
+#: lib/mediafile.php:202 lib/mediafile.php:238
msgid "Could not determine file's MIME type."
msgstr "Kunde inte fastställa filens MIME-typ."
-#: lib/mediafile.php:270
+#: lib/mediafile.php:318
#, php-format
msgid " Try using another %s format."
msgstr "Försök använda ett annat %s-format."
-#: lib/mediafile.php:275
+#: lib/mediafile.php:323
#, php-format
msgid "%s is not a supported file type on this server."
msgstr "%s är en filtyp som saknar stöd på denna server."
@@ -6526,51 +6642,51 @@ msgstr ""
"god försök igen senare"
#. TRANS: Used in coordinates as abbreviation of north
-#: lib/noticelist.php:430
+#: lib/noticelist.php:436
msgid "N"
msgstr "N"
#. TRANS: Used in coordinates as abbreviation of south
-#: lib/noticelist.php:432
+#: lib/noticelist.php:438
msgid "S"
msgstr "S"
#. TRANS: Used in coordinates as abbreviation of east
-#: lib/noticelist.php:434
+#: lib/noticelist.php:440
msgid "E"
msgstr "Ö"
#. TRANS: Used in coordinates as abbreviation of west
-#: lib/noticelist.php:436
+#: lib/noticelist.php:442
msgid "W"
msgstr "V"
-#: lib/noticelist.php:438
+#: lib/noticelist.php:444
#, php-format
msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
msgstr "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
-#: lib/noticelist.php:447
+#: lib/noticelist.php:453
msgid "at"
msgstr "på"
-#: lib/noticelist.php:559
+#: lib/noticelist.php:567
msgid "in context"
msgstr "i sammanhang"
-#: lib/noticelist.php:594
+#: lib/noticelist.php:602
msgid "Repeated by"
msgstr "Upprepad av"
-#: lib/noticelist.php:621
+#: lib/noticelist.php:629
msgid "Reply to this notice"
msgstr "Svara på denna notis"
-#: lib/noticelist.php:622
+#: lib/noticelist.php:630
msgid "Reply"
msgstr "Svara"
-#: lib/noticelist.php:666
+#: lib/noticelist.php:674
msgid "Notice repeated"
msgstr "Notis upprepad"
@@ -6825,48 +6941,48 @@ msgstr "Ingen"
#: lib/themeuploader.php:50
msgid "This server cannot handle theme uploads without ZIP support."
-msgstr ""
+msgstr "Denna server kan inte hantera temauppladdningar utan ZIP-stöd."
#: lib/themeuploader.php:58 lib/themeuploader.php:61
-#, fuzzy
-msgid "Theme upload missing or failed."
-msgstr "Systemfel vid uppladdning av fil."
+msgid "The theme file is missing or the upload failed."
+msgstr "Temafilen saknas eller uppladdningen misslyckades."
#: lib/themeuploader.php:91 lib/themeuploader.php:102
#: lib/themeuploader.php:253 lib/themeuploader.php:257
#: lib/themeuploader.php:265 lib/themeuploader.php:272
-#, fuzzy
msgid "Failed saving theme."
-msgstr "Misslyckades uppdatera avatar."
+msgstr "Kunde inte spara tema."
#: lib/themeuploader.php:139
msgid "Invalid theme: bad directory structure."
-msgstr ""
+msgstr "Ogiltigt tema: dålig katalogstruktur."
#: lib/themeuploader.php:166
#, php-format
msgid "Uploaded theme is too large; must be less than %d bytes uncompressed."
msgstr ""
+"Uppladdat tema är för stort, måste vara mindre än %d byte okomprimerat."
#: lib/themeuploader.php:178
msgid "Invalid theme archive: missing file css/display.css"
-msgstr ""
+msgstr "Ogiltigt temaarkiv: filen css/display.css saknas"
#: lib/themeuploader.php:205
msgid ""
"Theme contains invalid file or folder name. Stick with ASCII letters, "
"digits, underscore, and minus sign."
msgstr ""
+"Tema innehåller ogiltigt fil- eller mappnamn. Använd bara ASCII-bokstäver, "
+"siffror, understreck och minustecken."
#: lib/themeuploader.php:216
#, php-format
msgid "Theme contains file of type '.%s', which is not allowed."
-msgstr ""
+msgstr "Tema innehåller fil av typen '.%s', vilket inte är tillåtet."
#: lib/themeuploader.php:234
-#, fuzzy
msgid "Error opening theme archive."
-msgstr "Fel vid uppdatering av fjärrprofil."
+msgstr "Fel vid öppning temaarkiv."
#: lib/topposterssection.php:74
msgid "Top posters"
diff --git a/locale/te/LC_MESSAGES/statusnet.po b/locale/te/LC_MESSAGES/statusnet.po
index c5d30c58a..e83ab4a30 100644
--- a/locale/te/LC_MESSAGES/statusnet.po
+++ b/locale/te/LC_MESSAGES/statusnet.po
@@ -9,12 +9,12 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-06-16 22:18+0000\n"
-"PO-Revision-Date: 2010-06-21 18:05:08+0000\n"
+"POT-Creation-Date: 2010-08-03 13:21+0000\n"
+"PO-Revision-Date: 2010-08-03 13:22:28+0000\n"
"Language-Team: Telugu\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.17alpha (r68367); Translate extension (2010-06-12)\n"
+"X-Generator: MediaWiki 1.17alpha (r70381); Translate extension (2010-07-21)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: te\n"
"X-Message-Group: out-statusnet\n"
@@ -98,7 +98,7 @@ msgstr "à°…à°Ÿà±à°µà°‚à°Ÿà°¿ పేజీ లేదà±."
#: actions/apidirectmessagenew.php:74 actions/apigroupcreate.php:113
#: actions/apigroupismember.php:91 actions/apigroupjoin.php:100
#: actions/apigroupleave.php:100 actions/apigrouplist.php:73
-#: actions/apistatusesupdate.php:228 actions/apisubscriptions.php:87
+#: actions/apistatusesupdate.php:229 actions/apisubscriptions.php:87
#: actions/apitimelinefavorites.php:72 actions/apitimelinefriends.php:174
#: actions/apitimelinehome.php:80 actions/apitimelinementions.php:80
#: actions/apitimelineuser.php:82 actions/avatarbynickname.php:75
@@ -163,18 +163,19 @@ msgstr "ఇతరà±à°²à°•à°¿ చందా చేరండి, [à°à°¦à±ˆà°¨à°¾
#. TRANS: %1$s is user nickname, %2$s is user nickname, %2$s is user nickname prefixed with "@"
#: actions/all.php:146
-#, php-format
+#, fuzzy, 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)."
+"You can try to [nudge %1$s](../%2$s) from their profile or [post something "
+"to them](%%%%action.newnotice%%%%?status_textarea=%3$s)."
msgstr ""
+"[à°ˆ విషయంపై](%%%%action.newnotice%%%%?status_textarea=%s) à°µà±à°°à°¾à°¸à±‡ మొదటివారౠమీరే à°…à°µà±à°µà°‚à°¡à°¿!"
#: actions/all.php:149 actions/replies.php:210 actions/showstream.php:211
-#, php-format
+#, fuzzy, php-format
msgid ""
"Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
-"post a notice to his or her attention."
-msgstr ""
+"post a notice to them."
+msgstr "[à°’à°• ఖాతాని నమోదà±à°šà±‡à°¸à±à°•à±à°¨à°¿](%%action.register%%) మీరే మొదట à°µà±à°°à°¾à°¸à±‡à°µà°¾à°°à± à°Žà°‚à°¦à±à°•à± కాకూడదà±!"
#. TRANS: H1 text
#: actions/all.php:182
@@ -206,7 +207,7 @@ msgstr "%2$sలో %1$s మరియౠసà±à°¨à±‡à°¹à°¿à°¤à±à°² à°¨à±à°‚à°¡
#: actions/apistatusesshow.php:109 actions/apistatusnetconfig.php:141
#: actions/apistatusnetversion.php:93 actions/apisubscriptions.php:111
#: actions/apitimelinefavorites.php:174 actions/apitimelinefriends.php:271
-#: actions/apitimelinegroup.php:152 actions/apitimelinehome.php:175
+#: actions/apitimelinegroup.php:154 actions/apitimelinehome.php:175
#: actions/apitimelinementions.php:174 actions/apitimelinepublic.php:241
#: actions/apitimelineretweetedtome.php:121
#: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161
@@ -257,7 +258,7 @@ msgstr "à°ªà±à°°à±Šà°«à±ˆà°²à±à°¨à°¿ à°­à°¦à±à°°à°ªà°°à°šà°²à±‡à°•à±à°¨à±à°
#: actions/apiaccountupdateprofilebackgroundimage.php:108
#: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80
-#: actions/apistatusesupdate.php:211 actions/avatarsettings.php:257
+#: actions/apistatusesupdate.php:212 actions/avatarsettings.php:257
#: actions/designadminpanel.php:123 actions/editapplication.php:118
#: actions/newapplication.php:101 actions/newnotice.php:94
#: lib/designsettings.php:283
@@ -354,7 +355,8 @@ msgid "Could not delete favorite."
msgstr "ఇషà±à°Ÿà°¾à°‚శానà±à°¨à°¿ తొలగించలేకపోయాం."
#: actions/apifriendshipscreate.php:109
-msgid "Could not follow user: User not found."
+#, fuzzy
+msgid "Could not follow user: profile not found."
msgstr "వాడà±à°•à°°à°¿à°¨à°¿ à°…à°¨à±à°¸à°°à°¿à°‚చలేకపోయాం: వాడà±à°•à°°à°¿ కనబడలేదà±."
#: actions/apifriendshipscreate.php:118
@@ -371,8 +373,8 @@ msgstr "ఓపెనà±à°à°¡à±€ ఫారమà±à°¨à± సృషà±à°Ÿà°¿à°‚à°šà
msgid "You cannot unfollow yourself."
msgstr "మిమà±à°®à°²à±à°¨à°¿ మీరే అననà±à°¸à°°à°¿à°‚చలేరà±."
-#: actions/apifriendshipsexists.php:94
-msgid "Two user ids or screen_names must be supplied."
+#: actions/apifriendshipsexists.php:91
+msgid "Two valid IDs or screen_names must be supplied."
msgstr ""
#: actions/apifriendshipsshow.php:134
@@ -501,6 +503,11 @@ msgstr "%s à°—à±à°‚à°ªà±à°²à±"
msgid "groups on %s"
msgstr "%s పై à°—à±à°‚à°ªà±à°²à±"
+#: actions/apimediaupload.php:99
+#, fuzzy
+msgid "Upload failed."
+msgstr "ఫైలà±à°¨à°¿ à°Žà°•à±à°•à°¿à°‚à°šà±"
+
#: actions/apioauthauthorize.php:101
msgid "No oauth_token parameter provided."
msgstr ""
@@ -642,22 +649,26 @@ msgstr "à°¸à±à°¥à°¿à°¤à°¿à°¨à°¿ తొలగించాం."
msgid "No status with that ID found."
msgstr "à°† IDతో ఠనోటీసౠకనబడలేదà±."
-#: actions/apistatusesupdate.php:241 actions/newnotice.php:155
+#: actions/apistatusesupdate.php:221
+msgid "Client must provide a 'status' parameter with a value."
+msgstr ""
+
+#: actions/apistatusesupdate.php:242 actions/newnotice.php:155
#: lib/mailhandler.php:60
#, php-format
msgid "That's too long. Max notice size is %d chars."
msgstr "అది చాలా పొడవà±à°‚ది. à°—à°°à°¿à°·à±à°  నోటీసౠపరిమాణం %d à°…à°•à±à°·à°°à°¾à°²à±."
-#: actions/apistatusesupdate.php:282 actions/apiusershow.php:96
+#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96
msgid "Not found."
msgstr "కనబడలేదà±."
-#: actions/apistatusesupdate.php:305 actions/newnotice.php:178
+#: actions/apistatusesupdate.php:306 actions/newnotice.php:178
#, php-format
msgid "Max notice size is %d chars, including attachment URL."
msgstr "à°—à°°à°¿à°·à±à°  నోటీసౠపొడవౠ%d à°…à°•à±à°·à°°à°¾à°²à±, జోడింపౠURLని à°•à°²à±à°ªà±à°•à±à°¨à°¿."
-#: actions/apisubscriptions.php:231 actions/apisubscriptions.php:261
+#: actions/apisubscriptions.php:232 actions/apisubscriptions.php:262
msgid "Unsupported format."
msgstr ""
@@ -711,6 +722,10 @@ msgstr ""
msgid "Updates tagged with %1$s on %2$s!"
msgstr "%2$sలో %1$s అనే à°Ÿà±à°¯à°¾à°—à±à°¤à±‹ ఉనà±à°¨ నోటీసà±à°²à±!"
+#: actions/apitrends.php:87
+msgid "API method under construction."
+msgstr ""
+
#: actions/attachment.php:73
msgid "No such attachment."
msgstr "à°…à°Ÿà±à°µà°‚à°Ÿà°¿ జోడింపౠలేదà±."
@@ -765,7 +780,7 @@ msgid "Preview"
msgstr "à°®à±à°¨à±à°œà±‚à°ªà±"
#: actions/avatarsettings.php:149 actions/showapplication.php:252
-#: lib/deleteuserform.php:66 lib/noticelist.php:648
+#: lib/deleteuserform.php:66 lib/noticelist.php:656
msgid "Delete"
msgstr "తొలగించà±"
@@ -1044,7 +1059,7 @@ msgid "Do not delete this notice"
msgstr "à°ˆ నోటీసà±à°¨à°¿ తొలగించకà±"
#. TRANS: Submit button title for 'Yes' when deleting a notice.
-#: actions/deletenotice.php:158 lib/noticelist.php:648
+#: actions/deletenotice.php:158 lib/noticelist.php:656
msgid "Delete this notice"
msgstr "à°ˆ నోటీసà±à°¨à°¿ తొలగించà±"
@@ -1178,7 +1193,7 @@ msgstr "లంకెలà±"
#: actions/designadminpanel.php:651
msgid "Advanced"
-msgstr ""
+msgstr "ఉనà±à°¨à°¤"
#: actions/designadminpanel.php:655
msgid "Custom CSS"
@@ -1322,7 +1337,8 @@ msgstr "తపà±à°ªà±à°¡à± మారà±à°ªà±‡à°°à±: \"%s\""
msgid "Could not update group."
msgstr "à°—à±à°‚à°ªà±à°¨à°¿ తాజాకరించలేకà±à°¨à±à°¨à°¾à°‚."
-#: actions/editgroup.php:264 classes/User_group.php:496
+#. TRANS: Server exception thrown when creating group aliases failed.
+#: actions/editgroup.php:264 classes/User_group.php:514
msgid "Could not create aliases."
msgstr "మారà±à°ªà±‡à°°à±à°²à°¨à°¿ సృషà±à°Ÿà°¿à°‚చలేకపోయాం."
@@ -2442,7 +2458,7 @@ msgstr "\"%s\"తో సరిపోలే à°…à°¨à±à°¨à°¿ తాజాకరణ
#: actions/nudge.php:85
msgid ""
-"This user doesn't allow nudges or hasn't confirmed or set his email yet."
+"This user doesn't allow nudges or hasn't confirmed or set their email yet."
msgstr ""
#: actions/nudge.php:94
@@ -2517,8 +2533,8 @@ msgid "Only %s URLs over plain HTTP please."
msgstr ""
#. TRANS: Client error on an API request with an unsupported data format.
-#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1179
-#: lib/apiaction.php:1208 lib/apiaction.php:1325
+#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1204
+#: lib/apiaction.php:1232 lib/apiaction.php:1355
msgid "Not a supported data format."
msgstr ""
@@ -3414,7 +3430,7 @@ msgstr "మీ నోటీసà±à°¨à°¿ మీరే à°ªà±à°¨à°°à°¾à°µà±ƒà°¤à°¿
msgid "You already repeated that notice."
msgstr "మీరౠఇపà±à°ªà°Ÿà°¿à°•à±‡ à°† నోటీసà±à°¨à°¿ à°ªà±à°¨à°°à°¾à°µà±ƒà°¤à°¿à°‚చారà±."
-#: actions/repeat.php:114 lib/noticelist.php:667
+#: actions/repeat.php:114 lib/noticelist.php:675
#, fuzzy
msgid "Repeated"
msgstr "సృషà±à°Ÿà°¿à°¤à°‚"
@@ -3451,10 +3467,10 @@ msgid "Replies feed for %s (Atom)"
msgstr "%s కొరకౠసà±à°ªà°‚దనల ఫీడౠ(ఆటమà±)"
#: actions/replies.php:199
-#, php-format
+#, fuzzy, php-format
msgid ""
"This is the timeline showing replies to %1$s but %2$s hasn't received a "
-"notice to his attention yet."
+"notice to them yet."
msgstr "ఇది %1$sà°•à°¿ వచà±à°šà°¿à°¨ à°¸à±à°ªà°‚దనలని చూపించే కాలరేఖ కానీ %2$s దృషà±à°Ÿà°¿à°•à°¿ ఇంకా ఎవరూ à°à°®à±€ పంపించలేదà±."
#: actions/replies.php:204
@@ -3467,11 +3483,12 @@ msgstr ""
"(%%action.groups%%)."
#: actions/replies.php:206
-#, php-format
+#, fuzzy, php-format
msgid ""
-"You can try to [nudge %1$s](../%2$s) or [post something to his or her "
-"attention](%%%%action.newnotice%%%%?status_textarea=%3$s)."
+"You can try to [nudge %1$s](../%2$s) or [post something to them](%%%%action."
+"newnotice%%%%?status_textarea=%3$s)."
msgstr ""
+"[à°ˆ విషయంపై](%%%%action.newnotice%%%%?status_textarea=%s) à°µà±à°°à°¾à°¸à±‡ మొదటివారౠమీరే à°…à°µà±à°µà°‚à°¡à°¿!"
#: actions/repliesrss.php:72
#, php-format
@@ -3563,7 +3580,7 @@ msgstr "సంసà±à°§"
msgid "Description"
msgstr "వివరణ"
-#: actions/showapplication.php:192 actions/showgroup.php:444
+#: actions/showapplication.php:192 actions/showgroup.php:436
#: lib/profileaction.php:187
msgid "Statistics"
msgstr "గణాంకాలà±"
@@ -3650,17 +3667,19 @@ msgstr ""
#: actions/showfavorites.php:208
#, php-format
msgid ""
-"%s hasn't added any notices to his favorites yet. Post something interesting "
-"they would add to their favorites :)"
+"%s hasn't added any favorite notices yet. Post something interesting they "
+"would add to their favorites :)"
msgstr ""
#: actions/showfavorites.php:212
-#, php-format
+#, fuzzy, php-format
msgid ""
-"%s hasn't added any notices to his favorites yet. Why not [register an "
-"account](%%%%action.register%%%%) and then post something interesting they "
-"would add to their favorites :)"
+"%s hasn't added any favorite notices yet. Why not [register an account](%%%%"
+"action.register%%%%) and then post something interesting they would add to "
+"their favorites :)"
msgstr ""
+"%sà°•à°¿ చందాదారà±à°²à± ఎవరూ లేరà±. [à°’à°• ఖాతాని నమోదౠచేసà±à°•à±à°¨à°¿](%%%%action.register%%%%) మీరౠ"
+"à°Žà°‚à°¦à±à°•à± మొదటి చందాదారౠకాకూడదà±?"
#: actions/showfavorites.php:243
msgid "This is a way to share what you like."
@@ -3718,7 +3737,7 @@ msgstr "%s యొకà±à°• సందేశమà±à°² ఫీడà±"
msgid "FOAF for %s group"
msgstr "%s à°—à±à°‚à°ªà±"
-#: actions/showgroup.php:393 actions/showgroup.php:453 lib/groupnav.php:91
+#: actions/showgroup.php:393 actions/showgroup.php:445 lib/groupnav.php:91
msgid "Members"
msgstr "సభà±à°¯à±à°²à±"
@@ -3732,11 +3751,11 @@ msgstr "(à°à°®à±€à°²à±‡à°¦à±)"
msgid "All members"
msgstr "అందరౠసభà±à°¯à±à°²à±‚"
-#: actions/showgroup.php:447
+#: actions/showgroup.php:439
msgid "Created"
msgstr "సృషà±à°Ÿà°¿à°¤à°‚"
-#: actions/showgroup.php:463
+#: actions/showgroup.php:455
#, php-format
msgid ""
"**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3752,7 +3771,7 @@ msgstr ""
"చాల వాటిలో భాగసà±à°¤à±à°²à°µà±à°µà°¡à°¾à°¨à°¿à°•à°¿ [ఇపà±à°ªà±à°¡à±‡ చేరండి](%%%%action.register%%%%)! ([మరింత చదవండి](%%%%"
"doc.help%%%%))"
-#: actions/showgroup.php:469
+#: actions/showgroup.php:461
#, php-format
msgid ""
"**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3761,7 +3780,7 @@ msgid ""
"their life and interests. "
msgstr ""
-#: actions/showgroup.php:497
+#: actions/showgroup.php:489
msgid "Admins"
msgstr "నిరà±à°µà°¾à°¹à°•à±à°²à±"
@@ -3835,11 +3854,12 @@ msgstr ""
"ఈమధà±à°¯à±‡ à°à°¦à±ˆà°¨à°¾ ఆసకà±à°¤à°¿à°•à°°à°®à±ˆà°¨à°¦à°¿ చూసారా? మీరౠఇంకా నోటీసà±à°²à±‡à°®à±€ à°µà±à°°à°¾à°¯à°²à±‡à°¦à±, మొదలà±à°ªà±†à°Ÿà±à°Ÿà°¡à°¾à°¨à°¿à°•à°¿ ఇదే మంచి సమయం :)"
#: actions/showstream.php:207
-#, php-format
+#, fuzzy, php-format
msgid ""
-"You can try to nudge %1$s or [post something to his or her attention](%%%%"
-"action.newnotice%%%%?status_textarea=%2$s)."
+"You can try to nudge %1$s or [post something to them](%%%%action.newnotice%%%"
+"%?status_textarea=%2$s)."
msgstr ""
+"[à°ˆ విషయంపై](%%%%action.newnotice%%%%?status_textarea=%s) à°µà±à°°à°¾à°¸à±‡ మొదటివారౠమీరే à°…à°µà±à°µà°‚à°¡à°¿!"
#: actions/showstream.php:243
#, php-format
@@ -4215,7 +4235,8 @@ msgstr "సైటౠఅమరికలనౠభదà±à°°à°ªà°°à°šà±"
msgid "You are not subscribed to that profile."
msgstr ""
-#: actions/subedit.php:83 classes/Subscription.php:132
+#. TRANS: Exception thrown when a subscription could not be stored on the server.
+#: actions/subedit.php:83 classes/Subscription.php:136
#, fuzzy
msgid "Could not save subscription."
msgstr "చందాని సృషà±à°Ÿà°¿à°‚చలేకపోయాం."
@@ -4385,10 +4406,6 @@ msgstr ""
msgid "No such tag."
msgstr "à°…à°Ÿà±à°µà°‚à°Ÿà°¿ à°Ÿà±à°¯à°¾à°—ౠలేదà±."
-#: actions/twitapitrends.php:85
-msgid "API method under construction."
-msgstr ""
-
#: actions/unblock.php:59
msgid "You haven't blocked that user."
msgstr "మీరౠఆ వాడà±à°•à°°à°¿à°¨à°¿ నిరోధించలేదà±."
@@ -4679,151 +4696,247 @@ msgstr "సంచిక"
msgid "Author(s)"
msgstr "రచయిత(à°²à±)"
-#: classes/File.php:185
+#. TRANS: Server exception thrown when a URL cannot be processed.
+#: classes/File.php:143
+#, php-format
+msgid "Cannot process URL '%s'"
+msgstr ""
+
+#. TRANS: Server exception thrown when... Robin thinks something is impossible!
+#: classes/File.php:175
+msgid "Robin thinks something is impossible."
+msgstr ""
+
+#. TRANS: Message given if an upload is larger than the configured maximum.
+#. TRANS: %1$d is the byte limit for uploads, %2$d is the byte count for the uploaded file.
+#: classes/File.php:190
#, php-format
msgid ""
-"No file may be larger than %d bytes and the file you sent was %d bytes. Try "
-"to upload a smaller version."
+"No file may be larger than %1$d bytes and the file you sent was %2$d bytes. "
+"Try to upload a smaller version."
msgstr ""
-#: classes/File.php:195
+#. TRANS: Message given if an upload would exceed user quota.
+#. TRANS: %d (number) is the user quota in bytes.
+#: classes/File.php:202
#, php-format
msgid "A file this large would exceed your user quota of %d bytes."
msgstr ""
-#: classes/File.php:202
+#. TRANS: Message given id an upload would exceed a user's monthly quota.
+#. TRANS: $d (number) is the monthly user quota in bytes.
+#: classes/File.php:211
#, php-format
msgid "A file this large would exceed your monthly quota of %d bytes."
msgstr ""
-#: classes/Group_member.php:41
+#. TRANS: Client exception thrown if a file upload does not have a valid name.
+#: classes/File.php:248 classes/File.php:263
+msgid "Invalid filename."
+msgstr "తపà±à°ªà±à°¡à± దసà±à°¤à±à°°à°ªà±à°ªà±‡à°°à±.."
+
+#. TRANS: Exception thrown when joining a group fails.
+#: classes/Group_member.php:42
msgid "Group join failed."
msgstr "à°—à±à°‚à°ªà±à°²à±‹ చేరడం విఫలమైంది."
-#: classes/Group_member.php:53
+#. TRANS: Exception thrown when trying to leave a group the user is not a member of.
+#: classes/Group_member.php:55
msgid "Not part of group."
msgstr "à°—à±à°‚à°ªà±à°²à±‹ భాగం కాదà±."
-#: classes/Group_member.php:60
+#. TRANS: Exception thrown when trying to leave a group fails.
+#: classes/Group_member.php:63
msgid "Group leave failed."
msgstr "à°—à±à°‚పౠనà±à°‚à°¡à°¿ వైదొలగడం విఫలమైంది."
-#: classes/Local_group.php:41
+#. TRANS: Server exception thrown when updating a local group fails.
+#: classes/Local_group.php:42
msgid "Could not update local group."
msgstr "à°¸à±à°¥à°¾à°¨à°¿à°• à°—à±à°‚à°ªà±à°¨à°¿ తాజాకరించలేకà±à°¨à±à°¨à°¾à°‚."
-#: classes/Login_token.php:76
+#. TRANS: Exception thrown when trying creating a login token failed.
+#. TRANS: %s is the user nickname for which token creation failed.
+#: classes/Login_token.php:78
#, fuzzy, php-format
msgid "Could not create login token for %s"
msgstr "మారà±à°ªà±‡à°°à±à°²à°¨à°¿ సృషà±à°Ÿà°¿à°‚చలేకపోయాం."
-#: classes/Message.php:45
+#. TRANS: Exception thrown when database name or Data Source Name could not be found.
+#: classes/Memcached_DataObject.php:533
+msgid "No database name or DSN found anywhere."
+msgstr ""
+
+#. TRANS: Client exception thrown when a user tries to send a direct message while being banned from sending them.
+#: classes/Message.php:46
msgid "You are banned from sending direct messages."
msgstr "నేరà±à°—à°¾ సందేశాలౠపంపడం à°¨à±à°‚à°¡à°¿ మిమà±à°®à°²à±à°¨à°¿ నిషేధించారà±."
-#: classes/Message.php:61
+#. TRANS: Message given when a message could not be stored on the server.
+#: classes/Message.php:63
msgid "Could not insert message."
msgstr ""
-#: classes/Message.php:71
+#. TRANS: Message given when a message could not be updated on the server.
+#: classes/Message.php:74
msgid "Could not update message with new URI."
msgstr ""
+#. TRANS: Server exception thrown when a user profile for a notice cannot be found.
+#. TRANS: %1$d is a profile ID (number), %2$d is a notice ID (number).
+#: classes/Notice.php:98
+#, php-format
+msgid "No such profile (%1$d) for notice (%2$d)."
+msgstr ""
+
#. TRANS: Server exception. %s are the error details.
-#: classes/Notice.php:182
+#: classes/Notice.php:190
#, fuzzy, php-format
msgid "Database error inserting hashtag: %s"
msgstr "అవతారానà±à°¨à°¿ పెటà±à°Ÿà°¡à°‚లో పొరపాటà±"
-#: classes/Notice.php:251
+#. TRANS: Client exception thrown if a notice contains too many characters.
+#: classes/Notice.php:260
msgid "Problem saving notice. Too long."
msgstr "నోటీసà±à°¨à°¿ à°­à°¦à±à°°à°ªà°°à°šà°¡à°‚లో పొరపాటà±. చాలా పొడవà±à°—à°¾ ఉంది."
-#: classes/Notice.php:255
+#. TRANS: Client exception thrown when trying to save a notice for an unknown user.
+#: classes/Notice.php:265
msgid "Problem saving notice. Unknown user."
msgstr "నోటీసà±à°¨à°¿ à°­à°¦à±à°°à°ªà°°à°šà°¡à°‚లో పొరపాటà±. à°—à±à°°à±à°¤à±à°¤à±†à°²à°¿à°¯à°¨à°¿ వాడà±à°•à°°à°¿."
-#: classes/Notice.php:260
+#. TRANS: Client exception thrown when a user tries to post too many notices in a given time frame.
+#: classes/Notice.php:271
msgid ""
"Too many notices too fast; take a breather and post again in a few minutes."
msgstr "చాలా à°Žà°•à±à°•à±à°µ నోటీసà±à°²à± à°…à°‚à°¤ వేగంగా; కాసà±à°¤ ఊపిరి తీసà±à°•à±à°¨à°¿ మళà±à°³à±€ కొనà±à°¨à°¿ నిమిషాల తరà±à°µà°¾à°¤ à°µà±à°°à°¾à°¯à°‚à°¡à°¿."
-#: classes/Notice.php:266
+#. TRANS: Client exception thrown when a user tries to post too many duplicate notices in a given time frame.
+#: classes/Notice.php:278
msgid ""
"Too many duplicate messages too quickly; take a breather and post again in a "
"few minutes."
msgstr ""
-#: classes/Notice.php:272
+#. TRANS: Client exception thrown when a user tries to post while being banned.
+#: classes/Notice.php:286
msgid "You are banned from posting notices on this site."
msgstr "à°ˆ సైటà±à°²à±‹ నోటీసà±à°²à± రాయడం à°¨à±à°‚à°¡à°¿ మిమà±à°®à°²à±à°¨à°¿ నిషేధించారà±."
-#: classes/Notice.php:338 classes/Notice.php:364
+#. TRANS: Server exception thrown when a notice cannot be saved.
+#. TRANS: Server exception thrown when a notice cannot be updated.
+#: classes/Notice.php:353 classes/Notice.php:380
msgid "Problem saving notice."
msgstr "సందేశానà±à°¨à°¿ à°­à°¦à±à°°à°ªà°°à°šà°¡à°‚లో పొరపాటà±."
-#: classes/Notice.php:973
+#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups().
+#: classes/Notice.php:892
+msgid "Bad type provided to saveKnownGroups"
+msgstr ""
+
+#. TRANS: Server exception thrown when an update for a group inbox fails.
+#: classes/Notice.php:991
#, fuzzy
msgid "Problem saving group inbox."
msgstr "సందేశానà±à°¨à°¿ à°­à°¦à±à°°à°ªà°°à°šà°¡à°‚లో పొరపాటà±."
#. TRANS: Message used to repeat a notice. RT is the abbreviation of 'retweet'.
#. TRANS: %1$s is the repeated user's name, %2$s is the repeated notice.
-#: classes/Notice.php:1564
+#: classes/Notice.php:1614
#, php-format
msgid "RT @%1$s %2$s"
msgstr "RT @%1$s %2$s"
-#: classes/Subscription.php:74 lib/oauthstore.php:465
+#. TRANS: Exception thrown when trying to revoke an existing role for a user that does not exist.
+#. TRANS: %1$s is the role name, %2$s is the user ID (number).
+#: classes/Profile.php:740
+#, php-format
+msgid "Cannot revoke role \"%1$s\" for user #%2$d; does not exist."
+msgstr ""
+
+#. TRANS: Exception thrown when trying to revoke a role for a user with a failing database query.
+#. TRANS: %1$s is the role name, %2$s is the user ID (number).
+#: classes/Profile.php:749
+#, php-format
+msgid "Cannot revoke role \"%1$s\" for user #%2$d; database error."
+msgstr ""
+
+#. TRANS: Exception thrown when a right for a non-existing user profile is checked.
+#: classes/Remote_profile.php:54
+#, fuzzy
+msgid "Missing profile."
+msgstr "వాడà±à°•à°°à°¿à°•à°¿ à°ªà±à°°à±Šà°«à±ˆà°²à± లేదà±."
+
+#. TRANS: Exception thrown when a tag cannot be saved.
+#: classes/Status_network.php:346
+#, fuzzy
+msgid "Unable to save tag."
+msgstr "సందేశానà±à°¨à°¿ à°­à°¦à±à°°à°ªà°°à°šà°¡à°‚లో పొరపాటà±."
+
+#. TRANS: Exception thrown when trying to subscribe while being banned from subscribing.
+#: classes/Subscription.php:75 lib/oauthstore.php:465
msgid "You have been banned from subscribing."
msgstr "చందాచేరడం à°¨à±à°‚à°¡à°¿ మిమà±à°®à°²à±à°¨à°¿ నిషేధించారà±."
-#: classes/Subscription.php:78
+#. TRANS: Exception thrown when trying to subscribe while already subscribed.
+#: classes/Subscription.php:80
msgid "Already subscribed!"
msgstr "ఇపà±à°ªà°Ÿà°¿à°•à±‡ చందాచేరారà±!"
-#: classes/Subscription.php:82
+#. TRANS: Exception thrown when trying to subscribe to a user who has blocked the subscribing user.
+#: classes/Subscription.php:85
msgid "User has blocked you."
msgstr "వాడà±à°•à°°à°¿ మిమà±à°®à°²à±à°¨à°¿ నిరోధించారà±."
-#: classes/Subscription.php:167
+#. TRANS: Exception thrown when trying to unsibscribe without a subscription.
+#: classes/Subscription.php:171
#, fuzzy
msgid "Not subscribed!"
msgstr "చందాదారà±à°²à±"
-#: classes/Subscription.php:173
+#. TRANS: Exception thrown when trying to unsubscribe a user from themselves.
+#: classes/Subscription.php:178
#, fuzzy
-msgid "Couldn't delete self-subscription."
+msgid "Could not delete self-subscription."
msgstr "చందాని తొలగించలేకపోయాం."
-#: classes/Subscription.php:200
+#. TRANS: Exception thrown when the OMB token for a subscription could not deleted on the server.
+#: classes/Subscription.php:206
#, fuzzy
-msgid "Couldn't delete subscription OMB token."
+msgid "Could not delete subscription OMB token."
msgstr "చందాని తొలగించలేకపోయాం."
-#: classes/Subscription.php:211
-msgid "Couldn't delete subscription."
+#. TRANS: Exception thrown when a subscription could not be deleted on the server.
+#: classes/Subscription.php:218
+#, fuzzy
+msgid "Could not delete subscription."
msgstr "చందాని తొలగించలేకపోయాం."
-#: classes/User.php:363
+#. TRANS: Notice given on user registration.
+#. TRANS: %1$s is the sitename, $2$s is the registering user's nickname.
+#: classes/User.php:365
#, php-format
msgid "Welcome to %1$s, @%2$s!"
msgstr "@%2$s, %1$sà°•à°¿ à°¸à±à°µà°¾à°—తం!"
-#: classes/User_group.php:480
+#. TRANS: Server exception thrown when creating a group failed.
+#: classes/User_group.php:496
msgid "Could not create group."
msgstr "à°—à±à°‚à°ªà±à°¨à°¿ సృషà±à°Ÿà°¿à°‚చలేకపోయాం."
-#: classes/User_group.php:489
+#. TRANS: Server exception thrown when updating a group URI failed.
+#: classes/User_group.php:506
#, fuzzy
msgid "Could not set group URI."
msgstr "à°—à±à°‚పౠసభà±à°¯à°¤à±à°µà°¾à°¨à±à°¨à°¿ అమరà±à°šà°²à±‡à°•à°ªà±‹à°¯à°¾à°‚."
-#: classes/User_group.php:510
+#. TRANS: Server exception thrown when setting group membership failed.
+#: classes/User_group.php:529
msgid "Could not set group membership."
msgstr "à°—à±à°‚పౠసభà±à°¯à°¤à±à°µà°¾à°¨à±à°¨à°¿ అమరà±à°šà°²à±‡à°•à°ªà±‹à°¯à°¾à°‚."
-#: classes/User_group.php:524
+#. TRANS: Server exception thrown when saving local group information failed.
+#: classes/User_group.php:544
#, fuzzy
msgid "Could not save local group info."
msgstr "చందాని సృషà±à°Ÿà°¿à°‚చలేకపోయాం."
@@ -6245,7 +6358,7 @@ msgstr ""
"మీకౠఅంతరంగిక సందేశాలౠలేవà±. ఇతర వాడà±à°•à°°à±à°²à°¤à±‹ సంభాషణకై మీరౠవారికి అంతరంగిక సందేశాలౠ"
"పంపించవచà±à°šà±. మీ à°•à°‚à°Ÿà°¿à°•à°¿ మాతà±à°°à°®à±‡ కనబడేలా వారౠమీకౠసందేశాలౠపంపవచà±à°šà±."
-#: lib/mailbox.php:227 lib/noticelist.php:497
+#: lib/mailbox.php:227 lib/noticelist.php:505
msgid "from"
msgstr "à°¨à±à°‚à°¡à°¿"
@@ -6300,25 +6413,25 @@ msgstr ""
msgid "File upload stopped by extension."
msgstr ""
-#: lib/mediafile.php:179 lib/mediafile.php:216
+#: lib/mediafile.php:179 lib/mediafile.php:217
msgid "File exceeds user's quota."
msgstr ""
-#: lib/mediafile.php:196 lib/mediafile.php:233
+#: lib/mediafile.php:197 lib/mediafile.php:234
msgid "File could not be moved to destination directory."
msgstr ""
-#: lib/mediafile.php:201 lib/mediafile.php:237
+#: lib/mediafile.php:202 lib/mediafile.php:238
#, fuzzy
msgid "Could not determine file's MIME type."
msgstr "వాడà±à°•à°°à°¿à°¨à°¿ తాజాకరించలేకà±à°¨à±à°¨à°¾à°‚."
-#: lib/mediafile.php:270
+#: lib/mediafile.php:318
#, php-format
msgid " Try using another %s format."
msgstr ""
-#: lib/mediafile.php:275
+#: lib/mediafile.php:323
#, php-format
msgid "%s is not a supported file type on this server."
msgstr ""
@@ -6375,52 +6488,52 @@ msgstr ""
"కాసేపాగి à°ªà±à°°à°¯à°¤à±à°¨à°¿à°‚à°šà°‚à°¡à°¿"
#. TRANS: Used in coordinates as abbreviation of north
-#: lib/noticelist.php:430
+#: lib/noticelist.php:436
msgid "N"
msgstr "à°‰"
#. TRANS: Used in coordinates as abbreviation of south
-#: lib/noticelist.php:432
+#: lib/noticelist.php:438
msgid "S"
msgstr "à°¦"
#. TRANS: Used in coordinates as abbreviation of east
-#: lib/noticelist.php:434
+#: lib/noticelist.php:440
msgid "E"
msgstr "తూ"
#. TRANS: Used in coordinates as abbreviation of west
-#: lib/noticelist.php:436
+#: lib/noticelist.php:442
msgid "W"
msgstr "à°ª"
-#: lib/noticelist.php:438
+#: lib/noticelist.php:444
#, php-format
msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
msgstr "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
-#: lib/noticelist.php:447
+#: lib/noticelist.php:453
msgid "at"
msgstr ""
-#: lib/noticelist.php:559
+#: lib/noticelist.php:567
msgid "in context"
msgstr "సందరà±à°­à°‚లో"
-#: lib/noticelist.php:594
+#: lib/noticelist.php:602
#, fuzzy
msgid "Repeated by"
msgstr "సృషà±à°Ÿà°¿à°¤à°‚"
-#: lib/noticelist.php:621
+#: lib/noticelist.php:629
msgid "Reply to this notice"
msgstr "à°ˆ నోటీసà±à°ªà±ˆ à°¸à±à°ªà°‚దించండి"
-#: lib/noticelist.php:622
+#: lib/noticelist.php:630
msgid "Reply"
msgstr "à°¸à±à°ªà°‚దించండి"
-#: lib/noticelist.php:666
+#: lib/noticelist.php:674
msgid "Notice repeated"
msgstr "నోటీసà±à°¨à°¿ à°ªà±à°¨à°°à°¾à°µà±ƒà°¤à°¿à°‚చారà±"
@@ -6684,7 +6797,7 @@ msgid "This server cannot handle theme uploads without ZIP support."
msgstr ""
#: lib/themeuploader.php:58 lib/themeuploader.php:61
-msgid "Theme upload missing or failed."
+msgid "The theme file is missing or the upload failed."
msgstr ""
#: lib/themeuploader.php:91 lib/themeuploader.php:102
diff --git a/locale/tr/LC_MESSAGES/statusnet.po b/locale/tr/LC_MESSAGES/statusnet.po
index 8f59d8476..18140c3e0 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-06-16 22:18+0000\n"
-"PO-Revision-Date: 2010-06-21 18:05:12+0000\n"
+"POT-Creation-Date: 2010-08-03 13:21+0000\n"
+"PO-Revision-Date: 2010-08-03 13:22:29+0000\n"
"Language-Team: Turkish\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.17alpha (r68367); Translate extension (2010-06-12)\n"
+"X-Generator: MediaWiki 1.17alpha (r70381); Translate extension (2010-07-21)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: tr\n"
"X-Message-Group: out-statusnet\n"
@@ -106,7 +106,7 @@ msgstr "Böyle bir durum mesajı yok."
#: actions/apidirectmessagenew.php:74 actions/apigroupcreate.php:113
#: actions/apigroupismember.php:91 actions/apigroupjoin.php:100
#: actions/apigroupleave.php:100 actions/apigrouplist.php:73
-#: actions/apistatusesupdate.php:228 actions/apisubscriptions.php:87
+#: actions/apistatusesupdate.php:229 actions/apisubscriptions.php:87
#: actions/apitimelinefavorites.php:72 actions/apitimelinefriends.php:174
#: actions/apitimelinehome.php:80 actions/apitimelinementions.php:80
#: actions/apitimelineuser.php:82 actions/avatarbynickname.php:75
@@ -173,15 +173,15 @@ msgstr ""
#: actions/all.php:146
#, 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)."
+"You can try to [nudge %1$s](../%2$s) from their profile or [post something "
+"to them](%%%%action.newnotice%%%%?status_textarea=%3$s)."
msgstr ""
#: actions/all.php:149 actions/replies.php:210 actions/showstream.php:211
#, php-format
msgid ""
"Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
-"post a notice to his or her attention."
+"post a notice to them."
msgstr ""
#. TRANS: H1 text
@@ -215,7 +215,7 @@ msgstr ""
#: actions/apistatusesshow.php:109 actions/apistatusnetconfig.php:141
#: actions/apistatusnetversion.php:93 actions/apisubscriptions.php:111
#: actions/apitimelinefavorites.php:174 actions/apitimelinefriends.php:271
-#: actions/apitimelinegroup.php:152 actions/apitimelinehome.php:175
+#: actions/apitimelinegroup.php:154 actions/apitimelinehome.php:175
#: actions/apitimelinementions.php:174 actions/apitimelinepublic.php:241
#: actions/apitimelineretweetedtome.php:121
#: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161
@@ -266,7 +266,7 @@ msgstr "Profil kaydedilemedi."
#: actions/apiaccountupdateprofilebackgroundimage.php:108
#: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80
-#: actions/apistatusesupdate.php:211 actions/avatarsettings.php:257
+#: actions/apistatusesupdate.php:212 actions/avatarsettings.php:257
#: actions/designadminpanel.php:123 actions/editapplication.php:118
#: actions/newapplication.php:101 actions/newnotice.php:94
#: lib/designsettings.php:283
@@ -366,8 +366,9 @@ msgid "Could not delete favorite."
msgstr ""
#: actions/apifriendshipscreate.php:109
-msgid "Could not follow user: User not found."
-msgstr ""
+#, fuzzy
+msgid "Could not follow user: profile not found."
+msgstr "Sunucuya yönlendirme yapılamadı: %s"
#: actions/apifriendshipscreate.php:118
#, php-format
@@ -384,8 +385,8 @@ msgstr "Sunucuya yönlendirme yapılamadı: %s"
msgid "You cannot unfollow yourself."
msgstr "Kullanıcı güncellenemedi."
-#: actions/apifriendshipsexists.php:94
-msgid "Two user ids or screen_names must be supplied."
+#: actions/apifriendshipsexists.php:91
+msgid "Two valid IDs or screen_names must be supplied."
msgstr ""
#: actions/apifriendshipsshow.php:134
@@ -520,6 +521,11 @@ msgstr ""
msgid "groups on %s"
msgstr ""
+#: actions/apimediaupload.php:99
+#, fuzzy
+msgid "Upload failed."
+msgstr "Yükle"
+
#: actions/apioauthauthorize.php:101
msgid "No oauth_token parameter provided."
msgstr ""
@@ -666,24 +672,28 @@ msgstr "Avatar güncellendi."
msgid "No status with that ID found."
msgstr ""
-#: actions/apistatusesupdate.php:241 actions/newnotice.php:155
+#: actions/apistatusesupdate.php:221
+msgid "Client must provide a 'status' parameter with a value."
+msgstr ""
+
+#: actions/apistatusesupdate.php:242 actions/newnotice.php:155
#: lib/mailhandler.php:60
#, fuzzy, php-format
msgid "That's too long. Max notice size is %d chars."
msgstr ""
"Ah, durumunuz biraz uzun kaçtı. Azami 180 karaktere sığdırmaya ne dersiniz?"
-#: actions/apistatusesupdate.php:282 actions/apiusershow.php:96
+#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96
#, fuzzy
msgid "Not found."
msgstr "İstek bulunamadı!"
-#: actions/apistatusesupdate.php:305 actions/newnotice.php:178
+#: actions/apistatusesupdate.php:306 actions/newnotice.php:178
#, php-format
msgid "Max notice size is %d chars, including attachment URL."
msgstr ""
-#: actions/apisubscriptions.php:231 actions/apisubscriptions.php:261
+#: actions/apisubscriptions.php:232 actions/apisubscriptions.php:262
#, fuzzy
msgid "Unsupported format."
msgstr "Desteklenmeyen görüntü dosyası biçemi."
@@ -738,6 +748,10 @@ msgstr ""
msgid "Updates tagged with %1$s on %2$s!"
msgstr "%s adli kullanicinin durum mesajlari"
+#: actions/apitrends.php:87
+msgid "API method under construction."
+msgstr ""
+
#: actions/attachment.php:73
#, fuzzy
msgid "No such attachment."
@@ -793,7 +807,7 @@ msgid "Preview"
msgstr ""
#: actions/avatarsettings.php:149 actions/showapplication.php:252
-#: lib/deleteuserform.php:66 lib/noticelist.php:648
+#: lib/deleteuserform.php:66 lib/noticelist.php:656
msgid "Delete"
msgstr ""
@@ -1085,7 +1099,7 @@ msgid "Do not delete this notice"
msgstr "Böyle bir durum mesajı yok."
#. TRANS: Submit button title for 'Yes' when deleting a notice.
-#: actions/deletenotice.php:158 lib/noticelist.php:648
+#: actions/deletenotice.php:158 lib/noticelist.php:656
msgid "Delete this notice"
msgstr ""
@@ -1382,7 +1396,8 @@ msgstr "%s Geçersiz başlangıç sayfası"
msgid "Could not update group."
msgstr "Kullanıcı güncellenemedi."
-#: actions/editgroup.php:264 classes/User_group.php:496
+#. TRANS: Server exception thrown when creating group aliases failed.
+#: actions/editgroup.php:264 classes/User_group.php:514
#, fuzzy
msgid "Could not create aliases."
msgstr "Avatar bilgisi kaydedilemedi"
@@ -2527,7 +2542,7 @@ msgstr "\"%s\" kelimesinin geçtiği tüm güncellemeler"
#: actions/nudge.php:85
msgid ""
-"This user doesn't allow nudges or hasn't confirmed or set his email yet."
+"This user doesn't allow nudges or hasn't confirmed or set their email yet."
msgstr ""
#: actions/nudge.php:94
@@ -2604,8 +2619,8 @@ msgid "Only %s URLs over plain HTTP please."
msgstr ""
#. TRANS: Client error on an API request with an unsupported data format.
-#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1179
-#: lib/apiaction.php:1208 lib/apiaction.php:1325
+#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1204
+#: lib/apiaction.php:1232 lib/apiaction.php:1355
msgid "Not a supported data format."
msgstr ""
@@ -3505,7 +3520,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:667
+#: actions/repeat.php:114 lib/noticelist.php:675
#, fuzzy
msgid "Repeated"
msgstr "Yarat"
@@ -3545,7 +3560,7 @@ msgstr "%s için durum RSS beslemesi"
#, php-format
msgid ""
"This is the timeline showing replies to %1$s but %2$s hasn't received a "
-"notice to his attention yet."
+"notice to them yet."
msgstr ""
#: actions/replies.php:204
@@ -3558,8 +3573,8 @@ msgstr ""
#: actions/replies.php:206
#, php-format
msgid ""
-"You can try to [nudge %1$s](../%2$s) or [post something to his or her "
-"attention](%%%%action.newnotice%%%%?status_textarea=%3$s)."
+"You can try to [nudge %1$s](../%2$s) or [post something to them](%%%%action."
+"newnotice%%%%?status_textarea=%3$s)."
msgstr ""
#: actions/repliesrss.php:72
@@ -3658,7 +3673,7 @@ msgstr "Yer"
msgid "Description"
msgstr "Abonelikler"
-#: actions/showapplication.php:192 actions/showgroup.php:444
+#: actions/showapplication.php:192 actions/showgroup.php:436
#: lib/profileaction.php:187
msgid "Statistics"
msgstr "Ä°statistikler"
@@ -3743,16 +3758,16 @@ msgstr ""
#: actions/showfavorites.php:208
#, php-format
msgid ""
-"%s hasn't added any notices to his favorites yet. Post something interesting "
-"they would add to their favorites :)"
+"%s hasn't added any favorite notices yet. Post something interesting they "
+"would add to their favorites :)"
msgstr ""
#: actions/showfavorites.php:212
#, php-format
msgid ""
-"%s hasn't added any notices to his favorites yet. Why not [register an "
-"account](%%%%action.register%%%%) and then post something interesting they "
-"would add to their favorites :)"
+"%s hasn't added any favorite notices yet. Why not [register an account](%%%%"
+"action.register%%%%) and then post something interesting they would add to "
+"their favorites :)"
msgstr ""
#: actions/showfavorites.php:243
@@ -3813,7 +3828,7 @@ msgstr "%s için durum RSS beslemesi"
msgid "FOAF for %s group"
msgstr "%s için durum RSS beslemesi"
-#: actions/showgroup.php:393 actions/showgroup.php:453 lib/groupnav.php:91
+#: actions/showgroup.php:393 actions/showgroup.php:445 lib/groupnav.php:91
#, fuzzy
msgid "Members"
msgstr "Üyelik başlangıcı"
@@ -3828,12 +3843,12 @@ msgstr ""
msgid "All members"
msgstr ""
-#: actions/showgroup.php:447
+#: actions/showgroup.php:439
#, fuzzy
msgid "Created"
msgstr "Yarat"
-#: actions/showgroup.php:463
+#: actions/showgroup.php:455
#, php-format
msgid ""
"**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3843,7 +3858,7 @@ msgid ""
"of this group and many more! ([Read more](%%%%doc.help%%%%))"
msgstr ""
-#: actions/showgroup.php:469
+#: actions/showgroup.php:461
#, php-format
msgid ""
"**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3852,7 +3867,7 @@ msgid ""
"their life and interests. "
msgstr ""
-#: actions/showgroup.php:497
+#: actions/showgroup.php:489
msgid "Admins"
msgstr ""
@@ -3928,8 +3943,8 @@ msgstr ""
#: 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)."
+"You can try to nudge %1$s or [post something to them](%%%%action.newnotice%%%"
+"%?status_textarea=%2$s)."
msgstr ""
#: actions/showstream.php:243
@@ -4317,7 +4332,8 @@ msgstr "Ayarlar"
msgid "You are not subscribed to that profile."
msgstr "Bize o profili yollamadınız"
-#: actions/subedit.php:83 classes/Subscription.php:132
+#. TRANS: Exception thrown when a subscription could not be stored on the server.
+#: actions/subedit.php:83 classes/Subscription.php:136
#, fuzzy
msgid "Could not save subscription."
msgstr "Abonelik oluşturulamadı."
@@ -4490,10 +4506,6 @@ msgstr ""
msgid "No such tag."
msgstr "Böyle bir durum mesajı yok."
-#: actions/twitapitrends.php:85
-msgid "API method under construction."
-msgstr ""
-
#: actions/unblock.php:59
#, fuzzy
msgid "You haven't blocked that user."
@@ -4795,160 +4807,257 @@ msgstr "KiÅŸisel"
msgid "Author(s)"
msgstr ""
-#: classes/File.php:185
+#. TRANS: Server exception thrown when a URL cannot be processed.
+#: classes/File.php:143
+#, php-format
+msgid "Cannot process URL '%s'"
+msgstr ""
+
+#. TRANS: Server exception thrown when... Robin thinks something is impossible!
+#: classes/File.php:175
+msgid "Robin thinks something is impossible."
+msgstr ""
+
+#. TRANS: Message given if an upload is larger than the configured maximum.
+#. TRANS: %1$d is the byte limit for uploads, %2$d is the byte count for the uploaded file.
+#: classes/File.php:190
#, php-format
msgid ""
-"No file may be larger than %d bytes and the file you sent was %d bytes. Try "
-"to upload a smaller version."
+"No file may be larger than %1$d bytes and the file you sent was %2$d bytes. "
+"Try to upload a smaller version."
msgstr ""
-#: classes/File.php:195
+#. TRANS: Message given if an upload would exceed user quota.
+#. TRANS: %d (number) is the user quota in bytes.
+#: classes/File.php:202
#, php-format
msgid "A file this large would exceed your user quota of %d bytes."
msgstr ""
-#: classes/File.php:202
+#. TRANS: Message given id an upload would exceed a user's monthly quota.
+#. TRANS: $d (number) is the monthly user quota in bytes.
+#: classes/File.php:211
#, php-format
msgid "A file this large would exceed your monthly quota of %d bytes."
msgstr ""
-#: classes/Group_member.php:41
+#. TRANS: Client exception thrown if a file upload does not have a valid name.
+#: classes/File.php:248 classes/File.php:263
+#, fuzzy
+msgid "Invalid filename."
+msgstr "Geçersiz büyüklük."
+
+#. TRANS: Exception thrown when joining a group fails.
+#: classes/Group_member.php:42
#, fuzzy
msgid "Group join failed."
msgstr "Böyle bir durum mesajı yok."
-#: classes/Group_member.php:53
+#. TRANS: Exception thrown when trying to leave a group the user is not a member of.
+#: classes/Group_member.php:55
#, fuzzy
msgid "Not part of group."
msgstr "Kullanıcı güncellenemedi."
-#: classes/Group_member.php:60
+#. TRANS: Exception thrown when trying to leave a group fails.
+#: classes/Group_member.php:63
#, fuzzy
msgid "Group leave failed."
msgstr "Böyle bir durum mesajı yok."
-#: classes/Local_group.php:41
+#. TRANS: Server exception thrown when updating a local group fails.
+#: classes/Local_group.php:42
#, fuzzy
msgid "Could not update local group."
msgstr "Kullanıcı güncellenemedi."
-#: classes/Login_token.php:76
+#. TRANS: Exception thrown when trying creating a login token failed.
+#. TRANS: %s is the user nickname for which token creation failed.
+#: classes/Login_token.php:78
#, fuzzy, php-format
msgid "Could not create login token for %s"
msgstr "Avatar bilgisi kaydedilemedi"
-#: classes/Message.php:45
+#. TRANS: Exception thrown when database name or Data Source Name could not be found.
+#: classes/Memcached_DataObject.php:533
+msgid "No database name or DSN found anywhere."
+msgstr ""
+
+#. TRANS: Client exception thrown when a user tries to send a direct message while being banned from sending them.
+#: classes/Message.php:46
msgid "You are banned from sending direct messages."
msgstr ""
-#: classes/Message.php:61
+#. TRANS: Message given when a message could not be stored on the server.
+#: classes/Message.php:63
msgid "Could not insert message."
msgstr ""
-#: classes/Message.php:71
+#. TRANS: Message given when a message could not be updated on the server.
+#: classes/Message.php:74
msgid "Could not update message with new URI."
msgstr ""
+#. TRANS: Server exception thrown when a user profile for a notice cannot be found.
+#. TRANS: %1$d is a profile ID (number), %2$d is a notice ID (number).
+#: classes/Notice.php:98
+#, php-format
+msgid "No such profile (%1$d) for notice (%2$d)."
+msgstr ""
+
#. TRANS: Server exception. %s are the error details.
-#: classes/Notice.php:182
+#: classes/Notice.php:190
#, fuzzy, php-format
msgid "Database error inserting hashtag: %s"
msgstr "Cevap eklenirken veritabanı hatası: %s"
-#: classes/Notice.php:251
+#. TRANS: Client exception thrown if a notice contains too many characters.
+#: classes/Notice.php:260
#, fuzzy
msgid "Problem saving notice. Too long."
msgstr "Durum mesajını kaydederken hata oluştu."
-#: classes/Notice.php:255
+#. TRANS: Client exception thrown when trying to save a notice for an unknown user.
+#: classes/Notice.php:265
#, fuzzy
msgid "Problem saving notice. Unknown user."
msgstr "Durum mesajını kaydederken hata oluştu."
-#: classes/Notice.php:260
+#. TRANS: Client exception thrown when a user tries to post too many notices in a given time frame.
+#: classes/Notice.php:271
msgid ""
"Too many notices too fast; take a breather and post again in a few minutes."
msgstr ""
-#: classes/Notice.php:266
+#. TRANS: Client exception thrown when a user tries to post too many duplicate notices in a given time frame.
+#: classes/Notice.php:278
msgid ""
"Too many duplicate messages too quickly; take a breather and post again in a "
"few minutes."
msgstr ""
-#: classes/Notice.php:272
+#. TRANS: Client exception thrown when a user tries to post while being banned.
+#: classes/Notice.php:286
msgid "You are banned from posting notices on this site."
msgstr ""
-#: classes/Notice.php:338 classes/Notice.php:364
+#. TRANS: Server exception thrown when a notice cannot be saved.
+#. TRANS: Server exception thrown when a notice cannot be updated.
+#: classes/Notice.php:353 classes/Notice.php:380
msgid "Problem saving notice."
msgstr "Durum mesajını kaydederken hata oluştu."
-#: classes/Notice.php:973
+#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups().
+#: classes/Notice.php:892
+msgid "Bad type provided to saveKnownGroups"
+msgstr ""
+
+#. TRANS: Server exception thrown when an update for a group inbox fails.
+#: classes/Notice.php:991
#, fuzzy
msgid "Problem saving group inbox."
msgstr "Durum mesajını kaydederken hata oluştu."
#. TRANS: Message used to repeat a notice. RT is the abbreviation of 'retweet'.
#. TRANS: %1$s is the repeated user's name, %2$s is the repeated notice.
-#: classes/Notice.php:1564
+#: classes/Notice.php:1614
#, php-format
msgid "RT @%1$s %2$s"
msgstr ""
-#: classes/Subscription.php:74 lib/oauthstore.php:465
+#. TRANS: Exception thrown when trying to revoke an existing role for a user that does not exist.
+#. TRANS: %1$s is the role name, %2$s is the user ID (number).
+#: classes/Profile.php:740
+#, php-format
+msgid "Cannot revoke role \"%1$s\" for user #%2$d; does not exist."
+msgstr ""
+
+#. TRANS: Exception thrown when trying to revoke a role for a user with a failing database query.
+#. TRANS: %1$s is the role name, %2$s is the user ID (number).
+#: classes/Profile.php:749
+#, php-format
+msgid "Cannot revoke role \"%1$s\" for user #%2$d; database error."
+msgstr ""
+
+#. TRANS: Exception thrown when a right for a non-existing user profile is checked.
+#: classes/Remote_profile.php:54
+#, fuzzy
+msgid "Missing profile."
+msgstr "Kullanıcının profili yok."
+
+#. TRANS: Exception thrown when a tag cannot be saved.
+#: classes/Status_network.php:346
+#, fuzzy
+msgid "Unable to save tag."
+msgstr "Durum mesajını kaydederken hata oluştu."
+
+#. TRANS: Exception thrown when trying to subscribe while being banned from subscribing.
+#: classes/Subscription.php:75 lib/oauthstore.php:465
msgid "You have been banned from subscribing."
msgstr ""
-#: classes/Subscription.php:78
+#. TRANS: Exception thrown when trying to subscribe while already subscribed.
+#: classes/Subscription.php:80
msgid "Already subscribed!"
msgstr ""
-#: classes/Subscription.php:82
+#. TRANS: Exception thrown when trying to subscribe to a user who has blocked the subscribing user.
+#: classes/Subscription.php:85
#, fuzzy
msgid "User has blocked you."
msgstr "Kullanıcının profili yok."
-#: classes/Subscription.php:167
+#. TRANS: Exception thrown when trying to unsibscribe without a subscription.
+#: classes/Subscription.php:171
#, fuzzy
msgid "Not subscribed!"
msgstr "Bu kullanıcıyı zaten takip etmiyorsunuz!"
-#: classes/Subscription.php:173
+#. TRANS: Exception thrown when trying to unsubscribe a user from themselves.
+#: classes/Subscription.php:178
#, fuzzy
-msgid "Couldn't delete self-subscription."
+msgid "Could not delete self-subscription."
msgstr "Abonelik silinemedi."
-#: classes/Subscription.php:200
+#. TRANS: Exception thrown when the OMB token for a subscription could not deleted on the server.
+#: classes/Subscription.php:206
#, fuzzy
-msgid "Couldn't delete subscription OMB token."
+msgid "Could not delete subscription OMB token."
msgstr "Abonelik silinemedi."
-#: classes/Subscription.php:211
-msgid "Couldn't delete subscription."
+#. TRANS: Exception thrown when a subscription could not be deleted on the server.
+#: classes/Subscription.php:218
+#, fuzzy
+msgid "Could not delete subscription."
msgstr "Abonelik silinemedi."
-#: classes/User.php:363
+#. TRANS: Notice given on user registration.
+#. TRANS: %1$s is the sitename, $2$s is the registering user's nickname.
+#: classes/User.php:365
#, php-format
msgid "Welcome to %1$s, @%2$s!"
msgstr ""
-#: classes/User_group.php:480
+#. TRANS: Server exception thrown when creating a group failed.
+#: classes/User_group.php:496
#, fuzzy
msgid "Could not create group."
msgstr "Avatar bilgisi kaydedilemedi"
-#: classes/User_group.php:489
+#. TRANS: Server exception thrown when updating a group URI failed.
+#: classes/User_group.php:506
#, fuzzy
msgid "Could not set group URI."
msgstr "Abonelik oluşturulamadı."
-#: classes/User_group.php:510
+#. TRANS: Server exception thrown when setting group membership failed.
+#: classes/User_group.php:529
#, fuzzy
msgid "Could not set group membership."
msgstr "Abonelik oluşturulamadı."
-#: classes/User_group.php:524
+#. TRANS: Server exception thrown when saving local group information failed.
+#: classes/User_group.php:544
#, fuzzy
msgid "Could not save local group info."
msgstr "Abonelik oluşturulamadı."
@@ -6330,7 +6439,7 @@ msgid ""
"users in conversation. People can send you messages for your eyes only."
msgstr ""
-#: lib/mailbox.php:227 lib/noticelist.php:497
+#: lib/mailbox.php:227 lib/noticelist.php:505
msgid "from"
msgstr ""
@@ -6385,25 +6494,25 @@ msgstr ""
msgid "File upload stopped by extension."
msgstr ""
-#: lib/mediafile.php:179 lib/mediafile.php:216
+#: lib/mediafile.php:179 lib/mediafile.php:217
msgid "File exceeds user's quota."
msgstr ""
-#: lib/mediafile.php:196 lib/mediafile.php:233
+#: lib/mediafile.php:197 lib/mediafile.php:234
msgid "File could not be moved to destination directory."
msgstr ""
-#: lib/mediafile.php:201 lib/mediafile.php:237
+#: lib/mediafile.php:202 lib/mediafile.php:238
#, fuzzy
msgid "Could not determine file's MIME type."
msgstr "Kullanıcı güncellenemedi."
-#: lib/mediafile.php:270
+#: lib/mediafile.php:318
#, php-format
msgid " Try using another %s format."
msgstr ""
-#: lib/mediafile.php:275
+#: lib/mediafile.php:323
#, php-format
msgid "%s is not a supported file type on this server."
msgstr ""
@@ -6462,54 +6571,54 @@ msgid ""
msgstr ""
#. TRANS: Used in coordinates as abbreviation of north
-#: lib/noticelist.php:430
+#: lib/noticelist.php:436
msgid "N"
msgstr ""
#. TRANS: Used in coordinates as abbreviation of south
-#: lib/noticelist.php:432
+#: lib/noticelist.php:438
msgid "S"
msgstr ""
#. TRANS: Used in coordinates as abbreviation of east
-#: lib/noticelist.php:434
+#: lib/noticelist.php:440
msgid "E"
msgstr ""
#. TRANS: Used in coordinates as abbreviation of west
-#: lib/noticelist.php:436
+#: lib/noticelist.php:442
msgid "W"
msgstr ""
-#: lib/noticelist.php:438
+#: lib/noticelist.php:444
#, php-format
msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
msgstr ""
-#: lib/noticelist.php:447
+#: lib/noticelist.php:453
msgid "at"
msgstr ""
-#: lib/noticelist.php:559
+#: lib/noticelist.php:567
#, fuzzy
msgid "in context"
msgstr "İçerik yok!"
-#: lib/noticelist.php:594
+#: lib/noticelist.php:602
#, fuzzy
msgid "Repeated by"
msgstr "Yarat"
-#: lib/noticelist.php:621
+#: lib/noticelist.php:629
msgid "Reply to this notice"
msgstr ""
-#: lib/noticelist.php:622
+#: lib/noticelist.php:630
#, fuzzy
msgid "Reply"
msgstr "cevapla"
-#: lib/noticelist.php:666
+#: lib/noticelist.php:674
#, fuzzy
msgid "Notice repeated"
msgstr "Durum mesajları"
@@ -6779,9 +6888,8 @@ msgid "This server cannot handle theme uploads without ZIP support."
msgstr ""
#: lib/themeuploader.php:58 lib/themeuploader.php:61
-#, fuzzy
-msgid "Theme upload missing or failed."
-msgstr "Dosya yüklemede sistem hatası."
+msgid "The theme file is missing or the upload failed."
+msgstr ""
#: lib/themeuploader.php:91 lib/themeuploader.php:102
#: lib/themeuploader.php:253 lib/themeuploader.php:257
diff --git a/locale/uk/LC_MESSAGES/statusnet.po b/locale/uk/LC_MESSAGES/statusnet.po
index 93ef6b48a..73ae72166 100644
--- a/locale/uk/LC_MESSAGES/statusnet.po
+++ b/locale/uk/LC_MESSAGES/statusnet.po
@@ -11,12 +11,12 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-06-16 22:18+0000\n"
-"PO-Revision-Date: 2010-06-21 18:05:17+0000\n"
+"POT-Creation-Date: 2010-08-03 13:21+0000\n"
+"PO-Revision-Date: 2010-08-03 13:22:31+0000\n"
"Language-Team: Ukrainian\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.17alpha (r68367); Translate extension (2010-06-12)\n"
+"X-Generator: MediaWiki 1.17alpha (r70381); Translate extension (2010-07-21)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: uk\n"
"X-Message-Group: out-statusnet\n"
@@ -103,7 +103,7 @@ msgstr "Ðемає такої Ñторінки."
#: actions/apidirectmessagenew.php:74 actions/apigroupcreate.php:113
#: actions/apigroupismember.php:91 actions/apigroupjoin.php:100
#: actions/apigroupleave.php:100 actions/apigrouplist.php:73
-#: actions/apistatusesupdate.php:228 actions/apisubscriptions.php:87
+#: actions/apistatusesupdate.php:229 actions/apisubscriptions.php:87
#: actions/apitimelinefavorites.php:72 actions/apitimelinefriends.php:174
#: actions/apitimelinehome.php:80 actions/apitimelinementions.php:80
#: actions/apitimelineuser.php:82 actions/avatarbynickname.php:75
@@ -172,8 +172,8 @@ msgstr ""
#: actions/all.php:146
#, 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)."
+"You can try to [nudge %1$s](../%2$s) from their profile or [post something "
+"to them](%%%%action.newnotice%%%%?status_textarea=%3$s)."
msgstr ""
"Ви можете [«розштовхати» %1$s](../%2$s) зі Ñторінки його профілю або [щоÑÑŒ "
"йому напиÑати](%%%%action.newnotice%%%%?status_textarea=%3$s)."
@@ -182,7 +182,7 @@ msgstr ""
#, php-format
msgid ""
"Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
-"post a notice to his or her attention."
+"post a notice to them."
msgstr ""
"Чому б не [зареєÑтруватиÑÑŒ](%%%%action.register%%%%) Ñ– не Ñпробувати "
"«розштовхати» %s або щоÑÑŒ йому напиÑати."
@@ -217,7 +217,7 @@ msgstr "ÐžÐ½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð²Ñ–Ð´ %1$s та друзів на %2$s!"
#: actions/apistatusesshow.php:109 actions/apistatusnetconfig.php:141
#: actions/apistatusnetversion.php:93 actions/apisubscriptions.php:111
#: actions/apitimelinefavorites.php:174 actions/apitimelinefriends.php:271
-#: actions/apitimelinegroup.php:152 actions/apitimelinehome.php:175
+#: actions/apitimelinegroup.php:154 actions/apitimelinehome.php:175
#: actions/apitimelinementions.php:174 actions/apitimelinepublic.php:241
#: actions/apitimelineretweetedtome.php:121
#: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161
@@ -266,7 +266,7 @@ msgstr "Ðе вдалоÑÑ Ð·Ð±ÐµÑ€ÐµÐ³Ñ‚Ð¸ профіль."
#: actions/apiaccountupdateprofilebackgroundimage.php:108
#: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80
-#: actions/apistatusesupdate.php:211 actions/avatarsettings.php:257
+#: actions/apistatusesupdate.php:212 actions/avatarsettings.php:257
#: actions/designadminpanel.php:123 actions/editapplication.php:118
#: actions/newapplication.php:101 actions/newnotice.php:94
#: lib/designsettings.php:283
@@ -365,7 +365,7 @@ msgid "Could not delete favorite."
msgstr "Ðе можна видалити зі ÑпиÑку обраних."
#: actions/apifriendshipscreate.php:109
-msgid "Could not follow user: User not found."
+msgid "Could not follow user: profile not found."
msgstr "Ðе вдалоÑÑ Ð´Ð¾Ð´Ð°Ñ‚Ð¸ кориÑтувача: кориÑтувача не знайдено."
#: actions/apifriendshipscreate.php:118
@@ -381,9 +381,9 @@ msgstr "Ðе вдалоÑÑ Ð²Ñ–Ð´Ð¼Ñ–Ð½Ð¸Ñ‚Ð¸ підпиÑку: кориÑтуÐ
msgid "You cannot unfollow yourself."
msgstr "Ви не можете відпиÑатиÑÑŒ від Ñамого Ñебе."
-#: actions/apifriendshipsexists.php:94
-msgid "Two user ids or screen_names must be supplied."
-msgstr "Два ID або імені_у_мережі повинні підтримуватиÑÑŒ."
+#: actions/apifriendshipsexists.php:91
+msgid "Two valid IDs or screen_names must be supplied."
+msgstr "Два ID або імені у мережі мають бути предÑтавлені."
#: actions/apifriendshipsshow.php:134
msgid "Could not determine source user."
@@ -512,6 +512,10 @@ msgstr "%s групи"
msgid "groups on %s"
msgstr "групи на %s"
+#: actions/apimediaupload.php:99
+msgid "Upload failed."
+msgstr "Збій при завантаженні."
+
#: actions/apioauthauthorize.php:101
msgid "No oauth_token parameter provided."
msgstr "Жодного параметру oauth_token не забезпечено."
@@ -657,24 +661,28 @@ msgstr "Ð¡Ñ‚Ð°Ñ‚ÑƒÑ Ð²Ð¸Ð´Ð°Ð»ÐµÐ½Ð¾."
msgid "No status with that ID found."
msgstr "Ðе знайдено жодних ÑтатуÑів з таким ID."
-#: actions/apistatusesupdate.php:241 actions/newnotice.php:155
+#: actions/apistatusesupdate.php:221
+msgid "Client must provide a 'status' parameter with a value."
+msgstr "Клієнт муÑить надати параметр «ÑтатуÑ» зі значеннÑм."
+
+#: actions/apistatusesupdate.php:242 actions/newnotice.php:155
#: lib/mailhandler.php:60
#, php-format
msgid "That's too long. Max notice size is %d chars."
msgstr "Ðадто довго. МакÑимальний розмір допиÑу — %d знаків."
-#: actions/apistatusesupdate.php:282 actions/apiusershow.php:96
+#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96
msgid "Not found."
msgstr "Ðе знайдено."
-#: actions/apistatusesupdate.php:305 actions/newnotice.php:178
+#: actions/apistatusesupdate.php:306 actions/newnotice.php:178
#, php-format
msgid "Max notice size is %d chars, including attachment URL."
msgstr ""
"МакÑимальна довжина допиÑу Ñтановить %d знаків, включно з URL-адреÑою "
"вкладеннÑ."
-#: actions/apisubscriptions.php:231 actions/apisubscriptions.php:261
+#: actions/apisubscriptions.php:232 actions/apisubscriptions.php:262
msgid "Unsupported format."
msgstr "Формат не підтримуєтьÑÑ."
@@ -728,6 +736,10 @@ msgstr "ДопиÑи позначені з %s"
msgid "Updates tagged with %1$s on %2$s!"
msgstr "ÐžÐ½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð¿Ð¾Ð·Ð½Ð°Ñ‡ÐµÐ½Ñ– з %1$s на %2$s!"
+#: actions/apitrends.php:87
+msgid "API method under construction."
+msgstr "API метод наразі знаходитьÑÑ Ñƒ розробці."
+
#: actions/attachment.php:73
msgid "No such attachment."
msgstr "Такого Ð²ÐºÐ»Ð°Ð´ÐµÐ½Ð½Ñ Ð½ÐµÐ¼Ð°Ñ”."
@@ -780,7 +792,7 @@ msgid "Preview"
msgstr "ПереглÑд"
#: actions/avatarsettings.php:149 actions/showapplication.php:252
-#: lib/deleteuserform.php:66 lib/noticelist.php:648
+#: lib/deleteuserform.php:66 lib/noticelist.php:656
msgid "Delete"
msgstr "Видалити"
@@ -1059,7 +1071,7 @@ msgid "Do not delete this notice"
msgstr "Ðе видалÑти цей допиÑ"
#. TRANS: Submit button title for 'Yes' when deleting a notice.
-#: actions/deletenotice.php:158 lib/noticelist.php:648
+#: actions/deletenotice.php:158 lib/noticelist.php:656
msgid "Delete this notice"
msgstr "Видалити допиÑ"
@@ -1337,7 +1349,8 @@ msgstr "Помилкове додаткове ім’Ñ: «%s»"
msgid "Could not update group."
msgstr "Ðе вдалоÑÑ Ð¾Ð½Ð¾Ð²Ð¸Ñ‚Ð¸ групу."
-#: actions/editgroup.php:264 classes/User_group.php:496
+#. TRANS: Server exception thrown when creating group aliases failed.
+#: actions/editgroup.php:264 classes/User_group.php:514
msgid "Could not create aliases."
msgstr "Ðеможна призначити додаткові імена."
@@ -2493,7 +2506,7 @@ msgstr "Ð’ÑÑ– Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð·Ð° збігом з «%s» на %2$s!"
#: actions/nudge.php:85
msgid ""
-"This user doesn't allow nudges or hasn't confirmed or set his email yet."
+"This user doesn't allow nudges or hasn't confirmed or set their email yet."
msgstr ""
"Цей кориÑтувач не дозволив Ñебе «розштовхувати», або не підтвердив чи не "
"налаштував преференції електронної пошти."
@@ -2571,8 +2584,8 @@ msgid "Only %s URLs over plain HTTP please."
msgstr "URL-адреÑа %s лише в проÑтому HTTP, будь лаÑка."
#. TRANS: Client error on an API request with an unsupported data format.
-#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1179
-#: lib/apiaction.php:1208 lib/apiaction.php:1325
+#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1204
+#: lib/apiaction.php:1232 lib/apiaction.php:1355
msgid "Not a supported data format."
msgstr "Такий формат даних не підтримуєтьÑÑ."
@@ -2598,7 +2611,7 @@ msgstr " (вільний ÑервіÑ)"
#: actions/othersettings.php:116
msgid "Shorten URLs with"
-msgstr "Ð¡ÐºÐ¾Ñ€Ð¾Ñ‡ÐµÐ½Ð½Ñ URL-адреÑ"
+msgstr "Ð¡ÐºÐ¾Ñ€Ð¾Ñ‡ÐµÐ½Ð½Ñ URL"
#: actions/othersettings.php:117
msgid "Automatic shortening service to use."
@@ -3481,7 +3494,7 @@ msgstr "Ви не можете повторювати Ñвої влаÑні до
msgid "You already repeated that notice."
msgstr "Ви вже повторили цей допиÑ."
-#: actions/repeat.php:114 lib/noticelist.php:667
+#: actions/repeat.php:114 lib/noticelist.php:675
msgid "Repeated"
msgstr "Повторено"
@@ -3519,7 +3532,7 @@ msgstr "Стрічка відповідей до %s (Atom)"
#, php-format
msgid ""
"This is the timeline showing replies to %1$s but %2$s hasn't received a "
-"notice to his attention yet."
+"notice to them yet."
msgstr ""
"Ð¦Ñ Ñтрічка допиÑів міÑтить відповіді Ð´Ð»Ñ %1$s, але %2$s поки що нічого не "
"отримав у відповідь."
@@ -3536,8 +3549,8 @@ msgstr ""
#: actions/replies.php:206
#, php-format
msgid ""
-"You can try to [nudge %1$s](../%2$s) or [post something to his or her "
-"attention](%%%%action.newnotice%%%%?status_textarea=%3$s)."
+"You can try to [nudge %1$s](../%2$s) or [post something to them](%%%%action."
+"newnotice%%%%?status_textarea=%3$s)."
msgstr ""
"Ви можете [«розштовхати» %1$s](../%2$s) або [напиÑати дещо варте його уваги](%"
"%%%action.newnotice%%%%?status_textarea=%3$s)."
@@ -3628,7 +3641,7 @@ msgstr "ОрганізаціÑ"
msgid "Description"
msgstr "ОпиÑ"
-#: actions/showapplication.php:192 actions/showgroup.php:444
+#: actions/showapplication.php:192 actions/showgroup.php:436
#: lib/profileaction.php:187
msgid "Statistics"
msgstr "СтатиÑтика"
@@ -3718,20 +3731,20 @@ msgstr ""
#: actions/showfavorites.php:208
#, php-format
msgid ""
-"%s hasn't added any notices to his favorites yet. Post something interesting "
-"they would add to their favorites :)"
+"%s hasn't added any favorite notices yet. Post something interesting they "
+"would add to their favorites :)"
msgstr ""
-"%s поки що не вподобав жодних допиÑів. Може Ви б напиÑали йому щоÑÑŒ "
+"%s поки що не вподобав жодного допиÑу. Може Ви б напиÑали йому щоÑÑŒ "
"цікаве? :)"
#: actions/showfavorites.php:212
#, php-format
msgid ""
-"%s hasn't added any notices to his favorites yet. Why not [register an "
-"account](%%%%action.register%%%%) and then post something interesting they "
-"would add to their favorites :)"
+"%s hasn't added any favorite notices yet. Why not [register an account](%%%%"
+"action.register%%%%) and then post something interesting they would add to "
+"their favorites :)"
msgstr ""
-"%s поки що не вподобав жодних допиÑів. Чому б не [зареєÑтруватиÑÑŒ](%%%%"
+"%s поки що не вподобав жодного допиÑу. Чому б не [зареєÑтруватиÑÑŒ](%%%%"
"action.register%%%%) Ñ– не напиÑати щоÑÑŒ цікаве, що мало б ÑподобатиÑÑŒ цьому "
"кориÑтувачеві :)"
@@ -3791,7 +3804,7 @@ msgstr "Стрічка допиÑів групи %s (Atom)"
msgid "FOAF for %s group"
msgstr "FOAF Ð´Ð»Ñ Ð³Ñ€ÑƒÐ¿Ð¸ %s"
-#: actions/showgroup.php:393 actions/showgroup.php:453 lib/groupnav.php:91
+#: actions/showgroup.php:393 actions/showgroup.php:445 lib/groupnav.php:91
msgid "Members"
msgstr "УчаÑники"
@@ -3805,11 +3818,11 @@ msgstr "(ПуÑто)"
msgid "All members"
msgstr "Ð’ÑÑ– учаÑники"
-#: actions/showgroup.php:447
+#: actions/showgroup.php:439
msgid "Created"
msgstr "Створено"
-#: actions/showgroup.php:463
+#: actions/showgroup.php:455
#, php-format
msgid ""
"**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3825,7 +3838,7 @@ msgstr ""
"%%%%) зараз Ñ– долучітьÑÑ Ð´Ð¾ ÑпілкуваннÑ! ([ДізнатиÑÑ Ð±Ñ–Ð»ÑŒÑˆÐµ](%%%%doc.help%%%"
"%))"
-#: actions/showgroup.php:469
+#: actions/showgroup.php:461
#, php-format
msgid ""
"**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3838,7 +3851,7 @@ msgstr ""
"програмному забезпеченні [StatusNet](http://status.net/). Члени цієї групи "
"роблÑÑ‚ÑŒ короткі допиÑи про Ñвоє Ð¶Ð¸Ñ‚Ñ‚Ñ Ñ‚Ð° інтереÑи. "
-#: actions/showgroup.php:497
+#: actions/showgroup.php:489
msgid "Admins"
msgstr "Ðдміни"
@@ -3915,8 +3928,8 @@ msgstr ""
#: 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)."
+"You can try to nudge %1$s or [post something to them](%%%%action.newnotice%%%"
+"%?status_textarea=%2$s)."
msgstr ""
"Ви можете «розштовхати» %1$s або [щоÑÑŒ йому напиÑати](%%%%action.newnotice%%%"
"%?status_textarea=%2$s)."
@@ -4307,7 +4320,8 @@ msgstr "Зберегти Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð½Ñ–Ð¼ÐºÑƒ"
msgid "You are not subscribed to that profile."
msgstr "Ви не підпиÑані до цього профілю."
-#: actions/subedit.php:83 classes/Subscription.php:132
+#. TRANS: Exception thrown when a subscription could not be stored on the server.
+#: actions/subedit.php:83 classes/Subscription.php:136
msgid "Could not save subscription."
msgstr "Ðе вдалоÑÑ Ð·Ð±ÐµÑ€ÐµÐ³Ñ‚Ð¸ підпиÑку."
@@ -4485,10 +4499,6 @@ msgstr "СкориÑтайтеÑÑŒ цією формою, щоб додати Ñ‚
msgid "No such tag."
msgstr "Такого теґу немає."
-#: actions/twitapitrends.php:85
-msgid "API method under construction."
-msgstr "API метод наразі знаходитьÑÑ Ñƒ розробці."
-
#: actions/unblock.php:59
msgid "You haven't blocked that user."
msgstr "Цього кориÑтувача блокувати неможливо."
@@ -4799,80 +4809,127 @@ msgstr "ВерÑÑ–Ñ"
msgid "Author(s)"
msgstr "Ðвтор(и)"
-#: classes/File.php:185
+#. TRANS: Server exception thrown when a URL cannot be processed.
+#: classes/File.php:143
+#, php-format
+msgid "Cannot process URL '%s'"
+msgstr "Ðеможливо обробити URL «%s»"
+
+#. TRANS: Server exception thrown when... Robin thinks something is impossible!
+#: classes/File.php:175
+msgid "Robin thinks something is impossible."
+msgstr "Робін вважає, що це неможливо."
+
+#. TRANS: Message given if an upload is larger than the configured maximum.
+#. TRANS: %1$d is the byte limit for uploads, %2$d is the byte count for the uploaded file.
+#: classes/File.php:190
#, php-format
msgid ""
-"No file may be larger than %d bytes and the file you sent was %d bytes. Try "
-"to upload a smaller version."
+"No file may be larger than %1$d bytes and the file you sent was %2$d bytes. "
+"Try to upload a smaller version."
msgstr ""
"ÐÑ–, файл не може бути більшим за %d байтів, а те, що Ви хочете надіÑлати, "
-"важить %d байтів. Спробуйте меншу верÑÑ–ÑŽ."
+"важить %d байтів. Спробуйте завантажити меншу верÑÑ–ÑŽ."
-#: classes/File.php:195
+#. TRANS: Message given if an upload would exceed user quota.
+#. TRANS: %d (number) is the user quota in bytes.
+#: classes/File.php:202
#, php-format
msgid "A file this large would exceed your user quota of %d bytes."
msgstr "Розміри цього файлу перевищують Вашу квоту на %d байтів."
-#: classes/File.php:202
+#. TRANS: Message given id an upload would exceed a user's monthly quota.
+#. TRANS: $d (number) is the monthly user quota in bytes.
+#: classes/File.php:211
#, php-format
msgid "A file this large would exceed your monthly quota of %d bytes."
msgstr "Розміри цього файлу перевищують Вашу міÑÑчну квоту на %d байтів."
-#: classes/Group_member.php:41
+#. TRANS: Client exception thrown if a file upload does not have a valid name.
+#: classes/File.php:248 classes/File.php:263
+msgid "Invalid filename."
+msgstr "Ðевірне Ñ–Ð¼â€™Ñ Ñ„Ð°Ð¹Ð»Ñƒ."
+
+#. TRANS: Exception thrown when joining a group fails.
+#: classes/Group_member.php:42
msgid "Group join failed."
msgstr "Ðе вдалоÑÑ Ð¿Ñ€Ð¸Ñ”Ð´Ð½Ð°Ñ‚Ð¸ÑÑŒ до групи."
-#: classes/Group_member.php:53
+#. TRANS: Exception thrown when trying to leave a group the user is not a member of.
+#: classes/Group_member.php:55
msgid "Not part of group."
msgstr "Ðе Ñ” чаÑтиною групи."
-#: classes/Group_member.php:60
+#. TRANS: Exception thrown when trying to leave a group fails.
+#: classes/Group_member.php:63
msgid "Group leave failed."
msgstr "Ðе вдалоÑÑ Ð·Ð°Ð»Ð¸ÑˆÐ¸Ñ‚Ð¸ групу."
-#: classes/Local_group.php:41
+#. TRANS: Server exception thrown when updating a local group fails.
+#: classes/Local_group.php:42
msgid "Could not update local group."
msgstr "Ðе вдаєтьÑÑ Ð¾Ð½Ð¾Ð²Ð¸Ñ‚Ð¸ локальну групу."
-#: classes/Login_token.php:76
+#. TRANS: Exception thrown when trying creating a login token failed.
+#. TRANS: %s is the user nickname for which token creation failed.
+#: classes/Login_token.php:78
#, php-format
msgid "Could not create login token for %s"
msgstr "Ðе вдалоÑÑ Ñтворити токен входу Ð´Ð»Ñ %s"
-#: classes/Message.php:45
+#. TRANS: Exception thrown when database name or Data Source Name could not be found.
+#: classes/Memcached_DataObject.php:533
+msgid "No database name or DSN found anywhere."
+msgstr "Ðемає імені бази даних або DSN ніде не знайдено"
+
+#. TRANS: Client exception thrown when a user tries to send a direct message while being banned from sending them.
+#: classes/Message.php:46
msgid "You are banned from sending direct messages."
msgstr "Вам заборонено надÑилати прÑмі повідомленнÑ."
-#: classes/Message.php:61
+#. TRANS: Message given when a message could not be stored on the server.
+#: classes/Message.php:63
msgid "Could not insert message."
msgstr "Ðе можна долучити повідомленнÑ."
-#: classes/Message.php:71
+#. TRANS: Message given when a message could not be updated on the server.
+#: classes/Message.php:74
msgid "Could not update message with new URI."
msgstr "Ðе можна оновити Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð· новим URI."
+#. TRANS: Server exception thrown when a user profile for a notice cannot be found.
+#. TRANS: %1$d is a profile ID (number), %2$d is a notice ID (number).
+#: classes/Notice.php:98
+#, php-format
+msgid "No such profile (%1$d) for notice (%2$d)."
+msgstr "Ðемає такого профілю (%1$d) Ð´Ð»Ñ Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ (%2$d)."
+
#. TRANS: Server exception. %s are the error details.
-#: classes/Notice.php:182
+#: classes/Notice.php:190
#, php-format
msgid "Database error inserting hashtag: %s"
msgstr "Помилка бази даних при додаванні хеш-теґу: %s"
-#: classes/Notice.php:251
+#. TRANS: Client exception thrown if a notice contains too many characters.
+#: classes/Notice.php:260
msgid "Problem saving notice. Too long."
msgstr "Проблема при збереженні допиÑу. Ðадто довге."
-#: classes/Notice.php:255
+#. TRANS: Client exception thrown when trying to save a notice for an unknown user.
+#: classes/Notice.php:265
msgid "Problem saving notice. Unknown user."
msgstr "Проблема при збереженні допиÑу. Ðевідомий кориÑтувач."
-#: classes/Notice.php:260
+#. TRANS: Client exception thrown when a user tries to post too many notices in a given time frame.
+#: classes/Notice.php:271
msgid ""
"Too many notices too fast; take a breather and post again in a few minutes."
msgstr ""
"Дуже багато допиÑів за короткий термін; ходіть подихайте повітрÑм Ñ– "
"повертайтеÑÑŒ за кілька хвилин."
-#: classes/Notice.php:266
+#. TRANS: Client exception thrown when a user tries to post too many duplicate notices in a given time frame.
+#: classes/Notice.php:278
msgid ""
"Too many duplicate messages too quickly; take a breather and post again in a "
"few minutes."
@@ -4880,71 +4937,118 @@ msgstr ""
"Дуже багато повідомлень за короткий термін; ходіть подихайте повітрÑм Ñ– "
"повертайтеÑÑŒ за кілька хвилин."
-#: classes/Notice.php:272
+#. TRANS: Client exception thrown when a user tries to post while being banned.
+#: classes/Notice.php:286
msgid "You are banned from posting notices on this site."
msgstr "Вам заборонено надÑилати допиÑи до цього Ñайту."
-#: classes/Notice.php:338 classes/Notice.php:364
+#. TRANS: Server exception thrown when a notice cannot be saved.
+#. TRANS: Server exception thrown when a notice cannot be updated.
+#: classes/Notice.php:353 classes/Notice.php:380
msgid "Problem saving notice."
msgstr "Проблема при збереженні допиÑу."
-#: classes/Notice.php:973
+#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups().
+#: classes/Notice.php:892
+msgid "Bad type provided to saveKnownGroups"
+msgstr "ЗадаєтьÑÑ Ð½ÐµÐ²Ñ–Ñ€Ð½Ð¸Ð¹ тип Ð´Ð»Ñ saveKnownGroups"
+
+#. TRANS: Server exception thrown when an update for a group inbox fails.
+#: classes/Notice.php:991
msgid "Problem saving group inbox."
msgstr "Проблема при збереженні вхідних допиÑів Ð´Ð»Ñ Ð³Ñ€ÑƒÐ¿Ð¸."
#. TRANS: Message used to repeat a notice. RT is the abbreviation of 'retweet'.
#. TRANS: %1$s is the repeated user's name, %2$s is the repeated notice.
-#: classes/Notice.php:1564
+#: classes/Notice.php:1614
#, php-format
msgid "RT @%1$s %2$s"
msgstr "RT @%1$s %2$s"
-#: classes/Subscription.php:74 lib/oauthstore.php:465
+#. TRANS: Exception thrown when trying to revoke an existing role for a user that does not exist.
+#. TRANS: %1$s is the role name, %2$s is the user ID (number).
+#: classes/Profile.php:740
+#, php-format
+msgid "Cannot revoke role \"%1$s\" for user #%2$d; does not exist."
+msgstr "Ðе вдалоÑÑ ÑкаÑувати роль «%s» Ð´Ð»Ñ ÐºÐ¾Ñ€Ð¸Ñтувача #%2$s; не Ñ–Ñнує."
+
+#. TRANS: Exception thrown when trying to revoke a role for a user with a failing database query.
+#. TRANS: %1$s is the role name, %2$s is the user ID (number).
+#: classes/Profile.php:749
+#, php-format
+msgid "Cannot revoke role \"%1$s\" for user #%2$d; database error."
+msgstr ""
+"Ðе вдалоÑÑ ÑкаÑувати роль «%1$s» Ð´Ð»Ñ ÐºÐ¾Ñ€Ð¸Ñтувача #%2$s; помилка бази даних."
+
+#. TRANS: Exception thrown when a right for a non-existing user profile is checked.
+#: classes/Remote_profile.php:54
+msgid "Missing profile."
+msgstr "Загублений профіль."
+
+#. TRANS: Exception thrown when a tag cannot be saved.
+#: classes/Status_network.php:346
+msgid "Unable to save tag."
+msgstr "Ðе вдаєтьÑÑ Ð·Ð±ÐµÑ€ÐµÐ³Ñ‚Ð¸ теґ."
+
+#. TRANS: Exception thrown when trying to subscribe while being banned from subscribing.
+#: classes/Subscription.php:75 lib/oauthstore.php:465
msgid "You have been banned from subscribing."
msgstr "Ð’Ð°Ñ Ð¿Ð¾Ð·Ð±Ð°Ð²Ð»ÐµÐ½Ð¾ можливоÑÑ‚Ñ– підпиÑатиÑÑŒ."
-#: classes/Subscription.php:78
+#. TRANS: Exception thrown when trying to subscribe while already subscribed.
+#: classes/Subscription.php:80
msgid "Already subscribed!"
msgstr "Вже підпиÑаний!"
-#: classes/Subscription.php:82
+#. TRANS: Exception thrown when trying to subscribe to a user who has blocked the subscribing user.
+#: classes/Subscription.php:85
msgid "User has blocked you."
msgstr "КориÑтувач заблокував ВаÑ."
-#: classes/Subscription.php:167
+#. TRANS: Exception thrown when trying to unsibscribe without a subscription.
+#: classes/Subscription.php:171
msgid "Not subscribed!"
msgstr "Ðе підпиÑано!"
-#: classes/Subscription.php:173
-msgid "Couldn't delete self-subscription."
+#. TRANS: Exception thrown when trying to unsubscribe a user from themselves.
+#: classes/Subscription.php:178
+msgid "Could not delete self-subscription."
msgstr "Ðе можу видалити ÑамопідпиÑку."
-#: classes/Subscription.php:200
-msgid "Couldn't delete subscription OMB token."
+#. TRANS: Exception thrown when the OMB token for a subscription could not deleted on the server.
+#: classes/Subscription.php:206
+msgid "Could not delete subscription OMB token."
msgstr "Ðе вдаєтьÑÑ Ð²Ð¸Ð´Ð°Ð»Ð¸Ñ‚Ð¸ токен підпиÑки OMB."
-#: classes/Subscription.php:211
-msgid "Couldn't delete subscription."
+#. TRANS: Exception thrown when a subscription could not be deleted on the server.
+#: classes/Subscription.php:218
+msgid "Could not delete subscription."
msgstr "Ðе вдалоÑÑ Ð²Ð¸Ð´Ð°Ð»Ð¸Ñ‚Ð¸ підпиÑку."
-#: classes/User.php:363
+#. TRANS: Notice given on user registration.
+#. TRANS: %1$s is the sitename, $2$s is the registering user's nickname.
+#: classes/User.php:365
#, php-format
msgid "Welcome to %1$s, @%2$s!"
msgstr "Вітаємо на %1$s, @%2$s!"
-#: classes/User_group.php:480
+#. TRANS: Server exception thrown when creating a group failed.
+#: classes/User_group.php:496
msgid "Could not create group."
msgstr "Ðе вдалоÑÑ Ñтворити нову групу."
-#: classes/User_group.php:489
+#. TRANS: Server exception thrown when updating a group URI failed.
+#: classes/User_group.php:506
msgid "Could not set group URI."
msgstr "Ðе вдалоÑÑ Ð²Ñтановити URI групи."
-#: classes/User_group.php:510
+#. TRANS: Server exception thrown when setting group membership failed.
+#: classes/User_group.php:529
msgid "Could not set group membership."
msgstr "Ðе вдалоÑÑ Ð²Ñтановити членÑтво."
-#: classes/User_group.php:524
+#. TRANS: Server exception thrown when saving local group information failed.
+#: classes/User_group.php:544
msgid "Could not save local group info."
msgstr "Ðе вдалоÑÑ Ð·Ð±ÐµÑ€ÐµÐ³Ñ‚Ð¸ інформацію про локальну групу."
@@ -6413,7 +6517,7 @@ msgstr ""
"Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð°Ð±Ð¸ долучити кориÑтувачів до розмови. Такі Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð±Ð°Ñ‡Ð¸Ñ‚Ðµ "
"лише Ви."
-#: lib/mailbox.php:227 lib/noticelist.php:497
+#: lib/mailbox.php:227 lib/noticelist.php:505
msgid "from"
msgstr "від"
@@ -6471,24 +6575,24 @@ msgstr "Ð—Ð°Ð¿Ð¸Ñ Ñ„Ð°Ð¹Ð»Ñƒ на диÑк ÑкаÑовано."
msgid "File upload stopped by extension."
msgstr "Ð—Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñƒ зупинено розширеннÑм."
-#: lib/mediafile.php:179 lib/mediafile.php:216
+#: lib/mediafile.php:179 lib/mediafile.php:217
msgid "File exceeds user's quota."
msgstr "Файл перевищив квоту кориÑтувача."
-#: lib/mediafile.php:196 lib/mediafile.php:233
+#: lib/mediafile.php:197 lib/mediafile.php:234
msgid "File could not be moved to destination directory."
msgstr "Файл не може бути переміщений у директорію призначеннÑ."
-#: lib/mediafile.php:201 lib/mediafile.php:237
+#: lib/mediafile.php:202 lib/mediafile.php:238
msgid "Could not determine file's MIME type."
msgstr "Ðе вдаєтьÑÑ Ð²Ð¸Ð·Ð½Ð°Ñ‡Ð¸Ñ‚Ð¸ MIME-тип файлу."
-#: lib/mediafile.php:270
+#: lib/mediafile.php:318
#, php-format
msgid " Try using another %s format."
msgstr " Спробуйте викориÑтати інший %s формат."
-#: lib/mediafile.php:275
+#: lib/mediafile.php:323
#, php-format
msgid "%s is not a supported file type on this server."
msgstr "%s не підтримуєтьÑÑ Ñк тип файлів на цьому Ñервері."
@@ -6544,51 +6648,51 @@ msgstr ""
"чаÑу, ніж очікувалоÑÑŒ; будь лаÑка, Ñпробуйте пізніше"
#. TRANS: Used in coordinates as abbreviation of north
-#: lib/noticelist.php:430
+#: lib/noticelist.php:436
msgid "N"
msgstr "Півн."
#. TRANS: Used in coordinates as abbreviation of south
-#: lib/noticelist.php:432
+#: lib/noticelist.php:438
msgid "S"
msgstr "Півд."
#. TRANS: Used in coordinates as abbreviation of east
-#: lib/noticelist.php:434
+#: lib/noticelist.php:440
msgid "E"
msgstr "Сх."
#. TRANS: Used in coordinates as abbreviation of west
-#: lib/noticelist.php:436
+#: lib/noticelist.php:442
msgid "W"
msgstr "Зах."
-#: lib/noticelist.php:438
+#: lib/noticelist.php:444
#, php-format
msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
msgstr "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
-#: lib/noticelist.php:447
+#: lib/noticelist.php:453
msgid "at"
msgstr "в"
-#: lib/noticelist.php:559
+#: lib/noticelist.php:567
msgid "in context"
msgstr "в контекÑÑ‚Ñ–"
-#: lib/noticelist.php:594
+#: lib/noticelist.php:602
msgid "Repeated by"
msgstr "Повторено"
-#: lib/noticelist.php:621
+#: lib/noticelist.php:629
msgid "Reply to this notice"
msgstr "ВідповіÑти на цей допиÑ"
-#: lib/noticelist.php:622
+#: lib/noticelist.php:630
msgid "Reply"
msgstr "ВідповіÑти"
-#: lib/noticelist.php:666
+#: lib/noticelist.php:674
msgid "Notice repeated"
msgstr "Ð”Ð¾Ð¿Ð¸Ñ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð¸Ð»Ð¸"
@@ -6692,7 +6796,7 @@ msgstr "РеєÑтраціÑ"
#. TRANS: Average count of posts made per day since account registration
#: lib/profileaction.php:235
msgid "Daily average"
-msgstr "Середньодобове"
+msgstr "За добу"
#: lib/profileaction.php:264
msgid "All groups"
@@ -6846,8 +6950,8 @@ msgid "This server cannot handle theme uploads without ZIP support."
msgstr "Цей Ñервер не може опрацювати Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ñ‚ÐµÐ¼Ð¸ без підтримки ZIP."
#: lib/themeuploader.php:58 lib/themeuploader.php:61
-msgid "Theme upload missing or failed."
-msgstr "Завантажити тему не вдалоÑÑ Ð°Ð±Ð¾ Ð¿Ñ€Ð¾Ñ†ÐµÑ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð¿ÐµÑ€ÐµÑ€Ð²Ð°Ð½Ð¾."
+msgid "The theme file is missing or the upload failed."
+msgstr "Файл теми відÑутній, або ÑтавÑÑ Ð·Ð±Ñ–Ð¹ при завантаженні."
#: lib/themeuploader.php:91 lib/themeuploader.php:102
#: lib/themeuploader.php:253 lib/themeuploader.php:257
diff --git a/locale/vi/LC_MESSAGES/statusnet.po b/locale/vi/LC_MESSAGES/statusnet.po
index cc5899b9e..60164da4d 100644
--- a/locale/vi/LC_MESSAGES/statusnet.po
+++ b/locale/vi/LC_MESSAGES/statusnet.po
@@ -1,5 +1,6 @@
# Translation of StatusNet to Vietnamese
#
+# Author@translatewiki.net: Minh Nguyen
# --
# This file is distributed under the same license as the StatusNet package.
#
@@ -7,12 +8,12 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-06-16 22:18+0000\n"
-"PO-Revision-Date: 2010-06-21 18:05:22+0000\n"
+"POT-Creation-Date: 2010-08-03 13:21+0000\n"
+"PO-Revision-Date: 2010-08-03 13:22:32+0000\n"
"Language-Team: Vietnamese\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.17alpha (r68367); Translate extension (2010-06-12)\n"
+"X-Generator: MediaWiki 1.17alpha (r70381); Translate extension (2010-07-21)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: vi\n"
"X-Message-Group: out-statusnet\n"
@@ -21,9 +22,8 @@ msgstr ""
#. TRANS: Page title
#. TRANS: Menu item for site administration
#: actions/accessadminpanel.php:55 lib/adminpanelaction.php:376
-#, fuzzy
msgid "Access"
-msgstr "Chấp nhận"
+msgstr "Truy cập"
#. TRANS: Page notice
#: actions/accessadminpanel.php:67
@@ -33,7 +33,6 @@ msgstr "Thay đổi hình đại diện"
#. TRANS: Form legend for registration form.
#: actions/accessadminpanel.php:161
-#, fuzzy
msgid "Registration"
msgstr "Äăng ký"
@@ -44,7 +43,6 @@ msgstr ""
#. TRANS: Checkbox label for prohibiting anonymous users from viewing site.
#: actions/accessadminpanel.php:167
-#, fuzzy
msgctxt "LABEL"
msgid "Private"
msgstr "Riêng tư"
@@ -67,9 +65,8 @@ msgstr ""
#. TRANS: Checkbox label for disabling new user registrations.
#: actions/accessadminpanel.php:185
-#, fuzzy
msgid "Closed"
-msgstr "Ban user"
+msgstr "Äóng"
#. TRANS: Title / tooltip for button to save access settings in site admin panel
#: actions/accessadminpanel.php:202
@@ -84,7 +81,6 @@ msgstr "Thay đổi hình đại diện"
#: actions/accessadminpanel.php:203 actions/emailsettings.php:224
#: actions/imsettings.php:184 actions/smssettings.php:209
#: lib/applicationeditform.php:361
-#, fuzzy
msgctxt "BUTTON"
msgid "Save"
msgstr "LÆ°u"
@@ -105,7 +101,7 @@ msgstr "Không có tin nhắn nào."
#: actions/apidirectmessagenew.php:74 actions/apigroupcreate.php:113
#: actions/apigroupismember.php:91 actions/apigroupjoin.php:100
#: actions/apigroupleave.php:100 actions/apigrouplist.php:73
-#: actions/apistatusesupdate.php:228 actions/apisubscriptions.php:87
+#: actions/apistatusesupdate.php:229 actions/apisubscriptions.php:87
#: actions/apitimelinefavorites.php:72 actions/apitimelinefriends.php:174
#: actions/apitimelinehome.php:80 actions/apitimelinementions.php:80
#: actions/apitimelineuser.php:82 actions/avatarbynickname.php:75
@@ -172,22 +168,21 @@ msgstr ""
#: actions/all.php:146
#, 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)."
+"You can try to [nudge %1$s](../%2$s) from their profile or [post something "
+"to them](%%%%action.newnotice%%%%?status_textarea=%3$s)."
msgstr ""
#: actions/all.php:149 actions/replies.php:210 actions/showstream.php:211
#, php-format
msgid ""
"Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
-"post a notice to his or her attention."
+"post a notice to them."
msgstr ""
#. TRANS: H1 text
#: actions/all.php:182
-#, fuzzy
msgid "You and friends"
-msgstr "%s và bạn bè"
+msgstr "Bạn và bạn bè"
#. TRANS: Message is used as link description. %1$s is a username, %2$s is a site name.
#. TRANS: Message is used as a subtitle. %1$s is a user nickname, %2$s is a site name.
@@ -214,7 +209,7 @@ msgstr ""
#: actions/apistatusesshow.php:109 actions/apistatusnetconfig.php:141
#: actions/apistatusnetversion.php:93 actions/apisubscriptions.php:111
#: actions/apitimelinefavorites.php:174 actions/apitimelinefriends.php:271
-#: actions/apitimelinegroup.php:152 actions/apitimelinehome.php:175
+#: actions/apitimelinegroup.php:154 actions/apitimelinehome.php:175
#: actions/apitimelinementions.php:174 actions/apitimelinepublic.php:241
#: actions/apitimelineretweetedtome.php:121
#: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161
@@ -265,7 +260,7 @@ msgstr "Không thể lưu hồ sơ cá nhân."
#: actions/apiaccountupdateprofilebackgroundimage.php:108
#: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80
-#: actions/apistatusesupdate.php:211 actions/avatarsettings.php:257
+#: actions/apistatusesupdate.php:212 actions/avatarsettings.php:257
#: actions/designadminpanel.php:123 actions/editapplication.php:118
#: actions/newapplication.php:101 actions/newnotice.php:94
#: lib/designsettings.php:283
@@ -370,7 +365,7 @@ msgstr "Không thể tạo favorite."
#: actions/apifriendshipscreate.php:109
#, fuzzy
-msgid "Could not follow user: User not found."
+msgid "Could not follow user: profile not found."
msgstr "Không thể theo bạn này: %s đã có trong danh sách bạn bè của bạn rồi."
#: actions/apifriendshipscreate.php:118
@@ -388,8 +383,8 @@ msgstr "Không thể theo bạn này: %s đã có trong danh sách bạn bè cá»
msgid "You cannot unfollow yourself."
msgstr "Không thể cập nhật thành viên."
-#: actions/apifriendshipsexists.php:94
-msgid "Two user ids or screen_names must be supplied."
+#: actions/apifriendshipsexists.php:91
+msgid "Two valid IDs or screen_names must be supplied."
msgstr ""
#: actions/apifriendshipsshow.php:134
@@ -470,9 +465,8 @@ msgstr ""
#: actions/apigroupismember.php:96 actions/apigroupjoin.php:105
#: actions/apigroupleave.php:105 actions/apigroupmembership.php:92
#: actions/apigroupshow.php:83 actions/apitimelinegroup.php:92
-#, fuzzy
msgid "Group not found."
-msgstr "Phương thức API không tìm thấy!"
+msgstr "Không tìm thấy nhóm."
#: actions/apigroupjoin.php:111 actions/joingroup.php:100
#, fuzzy
@@ -522,6 +516,11 @@ msgstr "%s và nhóm"
msgid "groups on %s"
msgstr "Mã nhóm"
+#: actions/apimediaupload.php:99
+#, fuzzy
+msgid "Upload failed."
+msgstr "Tải file"
+
#: actions/apioauthauthorize.php:101
msgid "No oauth_token parameter provided."
msgstr ""
@@ -606,9 +605,8 @@ msgstr ""
#. TRANS: Main menu option when logged in for access to user settings
#: actions/apioauthauthorize.php:310 lib/action.php:450
-#, fuzzy
msgid "Account"
-msgstr "Giới thiệu"
+msgstr "Tài khoản"
#: actions/apioauthauthorize.php:313 actions/login.php:252
#: actions/profilesettings.php:106 actions/register.php:431
@@ -668,23 +666,26 @@ msgstr "Hình đại diện đã được cập nhật."
msgid "No status with that ID found."
msgstr "Không tìm thấy trạng thái nào tương ứng với ID đó."
-#: actions/apistatusesupdate.php:241 actions/newnotice.php:155
+#: actions/apistatusesupdate.php:221
+msgid "Client must provide a 'status' parameter with a value."
+msgstr ""
+
+#: actions/apistatusesupdate.php:242 actions/newnotice.php:155
#: lib/mailhandler.php:60
#, fuzzy, php-format
msgid "That's too long. Max notice size is %d chars."
msgstr "Quá dài. Tối đa là 140 ký tự."
-#: actions/apistatusesupdate.php:282 actions/apiusershow.php:96
-#, fuzzy
+#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96
msgid "Not found."
-msgstr "Không tìm thấy"
+msgstr "Không tìm thấy."
-#: actions/apistatusesupdate.php:305 actions/newnotice.php:178
+#: actions/apistatusesupdate.php:306 actions/newnotice.php:178
#, php-format
msgid "Max notice size is %d chars, including attachment URL."
msgstr ""
-#: actions/apisubscriptions.php:231 actions/apisubscriptions.php:261
+#: actions/apisubscriptions.php:232 actions/apisubscriptions.php:262
#, fuzzy
msgid "Unsupported format."
msgstr "Không hỗ trợ kiểu file ảnh này."
@@ -739,6 +740,10 @@ msgstr "Thông báo được gắn thẻ %s"
msgid "Updates tagged with %1$s on %2$s!"
msgstr "Dòng tin nhắn cho %s"
+#: actions/apitrends.php:87
+msgid "API method under construction."
+msgstr "Phương thức API dưới cấu trúc có sẵn."
+
#: actions/attachment.php:73
#, fuzzy
msgid "No such attachment."
@@ -795,10 +800,9 @@ msgid "Preview"
msgstr "Xem trÆ°á»›c"
#: actions/avatarsettings.php:149 actions/showapplication.php:252
-#: lib/deleteuserform.php:66 lib/noticelist.php:648
-#, fuzzy
+#: lib/deleteuserform.php:66 lib/noticelist.php:656
msgid "Delete"
-msgstr "Xóa tin nhắn"
+msgstr "Xóa"
#: actions/avatarsettings.php:166 actions/grouplogo.php:236
msgid "Upload"
@@ -841,9 +845,8 @@ msgid "You already blocked that user."
msgstr "Bạn đã theo những ngÆ°á»i này:"
#: actions/block.php:107 actions/block.php:136 actions/groupblock.php:158
-#, fuzzy
msgid "Block user"
-msgstr "Ban user"
+msgstr "Chặn ngÆ°á»i dùng"
#: actions/block.php:138
msgid ""
@@ -1091,7 +1094,7 @@ msgid "Do not delete this notice"
msgstr "Không thể xóa tin nhắn này."
#. TRANS: Submit button title for 'Yes' when deleting a notice.
-#: actions/deletenotice.php:158 lib/noticelist.php:648
+#: actions/deletenotice.php:158 lib/noticelist.php:656
#, fuzzy
msgid "Delete this notice"
msgstr "Xóa tin nhắn"
@@ -1401,7 +1404,8 @@ msgstr "Trang chủ '%s' không hợp lệ"
msgid "Could not update group."
msgstr "Không thể cập nhật thành viên."
-#: actions/editgroup.php:264 classes/User_group.php:496
+#. TRANS: Server exception thrown when creating group aliases failed.
+#: actions/editgroup.php:264 classes/User_group.php:514
#, fuzzy
msgid "Could not create aliases."
msgstr "Không thể tạo favorite."
@@ -2614,7 +2618,7 @@ msgstr "Các thay đổi phù hợp với từ \"%s\""
#: actions/nudge.php:85
msgid ""
-"This user doesn't allow nudges or hasn't confirmed or set his email yet."
+"This user doesn't allow nudges or hasn't confirmed or set their email yet."
msgstr ""
#: actions/nudge.php:94
@@ -2694,8 +2698,8 @@ msgid "Only %s URLs over plain HTTP please."
msgstr ""
#. TRANS: Client error on an API request with an unsupported data format.
-#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1179
-#: lib/apiaction.php:1208 lib/apiaction.php:1325
+#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1204
+#: lib/apiaction.php:1232 lib/apiaction.php:1355
msgid "Not a supported data format."
msgstr "Không hỗ trợ định dạng dữ liệu này."
@@ -3625,7 +3629,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:667
+#: actions/repeat.php:114 lib/noticelist.php:675
#, fuzzy
msgid "Repeated"
msgstr "Tạo"
@@ -3665,7 +3669,7 @@ msgstr "Dòng tin nhắn cho %s"
#, php-format
msgid ""
"This is the timeline showing replies to %1$s but %2$s hasn't received a "
-"notice to his attention yet."
+"notice to them yet."
msgstr ""
#: actions/replies.php:204
@@ -3678,8 +3682,8 @@ msgstr ""
#: actions/replies.php:206
#, php-format
msgid ""
-"You can try to [nudge %1$s](../%2$s) or [post something to his or her "
-"attention](%%%%action.newnotice%%%%?status_textarea=%3$s)."
+"You can try to [nudge %1$s](../%2$s) or [post something to them](%%%%action."
+"newnotice%%%%?status_textarea=%3$s)."
msgstr ""
#: actions/repliesrss.php:72
@@ -3778,7 +3782,7 @@ msgstr "ThÆ° má»i đã gá»­i"
msgid "Description"
msgstr "Mô tả"
-#: actions/showapplication.php:192 actions/showgroup.php:444
+#: actions/showapplication.php:192 actions/showgroup.php:436
#: lib/profileaction.php:187
msgid "Statistics"
msgstr "Số liệu thống kê"
@@ -3864,16 +3868,16 @@ msgstr ""
#: actions/showfavorites.php:208
#, php-format
msgid ""
-"%s hasn't added any notices to his favorites yet. Post something interesting "
-"they would add to their favorites :)"
+"%s hasn't added any favorite notices yet. Post something interesting they "
+"would add to their favorites :)"
msgstr ""
#: actions/showfavorites.php:212
#, php-format
msgid ""
-"%s hasn't added any notices to his favorites yet. Why not [register an "
-"account](%%%%action.register%%%%) and then post something interesting they "
-"would add to their favorites :)"
+"%s hasn't added any favorite notices yet. Why not [register an account](%%%%"
+"action.register%%%%) and then post something interesting they would add to "
+"their favorites :)"
msgstr ""
#: actions/showfavorites.php:243
@@ -3935,7 +3939,7 @@ msgstr "Dòng tin nhắn cho %s"
msgid "FOAF for %s group"
msgstr "Hộp thư đi của %s"
-#: actions/showgroup.php:393 actions/showgroup.php:453 lib/groupnav.php:91
+#: actions/showgroup.php:393 actions/showgroup.php:445 lib/groupnav.php:91
msgid "Members"
msgstr "Thành viên"
@@ -3950,12 +3954,12 @@ msgstr ""
msgid "All members"
msgstr "Thành viên"
-#: actions/showgroup.php:447
+#: actions/showgroup.php:439
#, fuzzy
msgid "Created"
msgstr "Tạo"
-#: actions/showgroup.php:463
+#: actions/showgroup.php:455
#, php-format
msgid ""
"**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3965,7 +3969,7 @@ msgid ""
"of this group and many more! ([Read more](%%%%doc.help%%%%))"
msgstr ""
-#: actions/showgroup.php:469
+#: actions/showgroup.php:461
#, php-format
msgid ""
"**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3974,7 +3978,7 @@ msgid ""
"their life and interests. "
msgstr ""
-#: actions/showgroup.php:497
+#: actions/showgroup.php:489
msgid "Admins"
msgstr ""
@@ -4051,8 +4055,8 @@ msgstr ""
#: 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)."
+"You can try to nudge %1$s or [post something to them](%%%%action.newnotice%%%"
+"%?status_textarea=%2$s)."
msgstr ""
#: actions/showstream.php:243
@@ -4458,7 +4462,8 @@ msgstr "Thay đổi hình đại diện"
msgid "You are not subscribed to that profile."
msgstr "Bạn chưa cập nhật thông tin riêng"
-#: actions/subedit.php:83 classes/Subscription.php:132
+#. TRANS: Exception thrown when a subscription could not be stored on the server.
+#: actions/subedit.php:83 classes/Subscription.php:136
#, fuzzy
msgid "Could not save subscription."
msgstr "Không thể tạo đăng nhận."
@@ -4632,10 +4637,6 @@ msgstr ""
msgid "No such tag."
msgstr "Không có tin nhắn nào."
-#: actions/twitapitrends.php:85
-msgid "API method under construction."
-msgstr "Phương thức API dưới cấu trúc có sẵn."
-
#: actions/unblock.php:59
#, fuzzy
msgid "You haven't blocked that user."
@@ -4946,163 +4947,260 @@ msgstr "Cá nhân"
msgid "Author(s)"
msgstr ""
-#: classes/File.php:185
+#. TRANS: Server exception thrown when a URL cannot be processed.
+#: classes/File.php:143
+#, php-format
+msgid "Cannot process URL '%s'"
+msgstr ""
+
+#. TRANS: Server exception thrown when... Robin thinks something is impossible!
+#: classes/File.php:175
+msgid "Robin thinks something is impossible."
+msgstr ""
+
+#. TRANS: Message given if an upload is larger than the configured maximum.
+#. TRANS: %1$d is the byte limit for uploads, %2$d is the byte count for the uploaded file.
+#: classes/File.php:190
#, php-format
msgid ""
-"No file may be larger than %d bytes and the file you sent was %d bytes. Try "
-"to upload a smaller version."
+"No file may be larger than %1$d bytes and the file you sent was %2$d bytes. "
+"Try to upload a smaller version."
msgstr ""
-#: classes/File.php:195
+#. TRANS: Message given if an upload would exceed user quota.
+#. TRANS: %d (number) is the user quota in bytes.
+#: classes/File.php:202
#, php-format
msgid "A file this large would exceed your user quota of %d bytes."
msgstr ""
-#: classes/File.php:202
+#. TRANS: Message given id an upload would exceed a user's monthly quota.
+#. TRANS: $d (number) is the monthly user quota in bytes.
+#: classes/File.php:211
#, php-format
msgid "A file this large would exceed your monthly quota of %d bytes."
msgstr ""
-#: classes/Group_member.php:41
+#. TRANS: Client exception thrown if a file upload does not have a valid name.
+#: classes/File.php:248 classes/File.php:263
+#, fuzzy
+msgid "Invalid filename."
+msgstr "Kích thước không hợp lệ."
+
+#. TRANS: Exception thrown when joining a group fails.
+#: classes/Group_member.php:42
#, fuzzy
msgid "Group join failed."
msgstr "Thông tin nhóm"
-#: classes/Group_member.php:53
+#. TRANS: Exception thrown when trying to leave a group the user is not a member of.
+#: classes/Group_member.php:55
#, fuzzy
msgid "Not part of group."
msgstr "Không thể cập nhật thành viên."
-#: classes/Group_member.php:60
+#. TRANS: Exception thrown when trying to leave a group fails.
+#: classes/Group_member.php:63
#, fuzzy
msgid "Group leave failed."
msgstr "Thông tin nhóm"
-#: classes/Local_group.php:41
+#. TRANS: Server exception thrown when updating a local group fails.
+#: classes/Local_group.php:42
#, fuzzy
msgid "Could not update local group."
msgstr "Không thể cập nhật thành viên."
-#: classes/Login_token.php:76
+#. TRANS: Exception thrown when trying creating a login token failed.
+#. TRANS: %s is the user nickname for which token creation failed.
+#: classes/Login_token.php:78
#, fuzzy, php-format
msgid "Could not create login token for %s"
msgstr "Không thể tạo favorite."
-#: classes/Message.php:45
+#. TRANS: Exception thrown when database name or Data Source Name could not be found.
+#: classes/Memcached_DataObject.php:533
+msgid "No database name or DSN found anywhere."
+msgstr ""
+
+#. TRANS: Client exception thrown when a user tries to send a direct message while being banned from sending them.
+#: classes/Message.php:46
#, fuzzy
msgid "You are banned from sending direct messages."
msgstr "Thư bạn đã gửi"
-#: classes/Message.php:61
+#. TRANS: Message given when a message could not be stored on the server.
+#: classes/Message.php:63
#, fuzzy
msgid "Could not insert message."
msgstr "Không thể chèn thêm vào đăng nhận."
-#: classes/Message.php:71
+#. TRANS: Message given when a message could not be updated on the server.
+#: classes/Message.php:74
#, fuzzy
msgid "Could not update message with new URI."
msgstr "Không thể cập nhật thông tin user với địa chỉ email đã được xác nhận."
+#. TRANS: Server exception thrown when a user profile for a notice cannot be found.
+#. TRANS: %1$d is a profile ID (number), %2$d is a notice ID (number).
+#: classes/Notice.php:98
+#, php-format
+msgid "No such profile (%1$d) for notice (%2$d)."
+msgstr ""
+
#. TRANS: Server exception. %s are the error details.
-#: classes/Notice.php:182
+#: classes/Notice.php:190
#, fuzzy, php-format
msgid "Database error inserting hashtag: %s"
msgstr "Lá»—i cÆ¡ sở dữ liệu khi chèn trả lá»i: %s"
-#: classes/Notice.php:251
+#. TRANS: Client exception thrown if a notice contains too many characters.
+#: classes/Notice.php:260
#, fuzzy
msgid "Problem saving notice. Too long."
msgstr "Có lỗi xảy ra khi lưu tin nhắn."
-#: classes/Notice.php:255
+#. TRANS: Client exception thrown when trying to save a notice for an unknown user.
+#: classes/Notice.php:265
#, fuzzy
msgid "Problem saving notice. Unknown user."
msgstr "Có lỗi xảy ra khi lưu tin nhắn."
-#: classes/Notice.php:260
+#. TRANS: Client exception thrown when a user tries to post too many notices in a given time frame.
+#: classes/Notice.php:271
msgid ""
"Too many notices too fast; take a breather and post again in a few minutes."
msgstr ""
-#: classes/Notice.php:266
+#. TRANS: Client exception thrown when a user tries to post too many duplicate notices in a given time frame.
+#: classes/Notice.php:278
msgid ""
"Too many duplicate messages too quickly; take a breather and post again in a "
"few minutes."
msgstr ""
-#: classes/Notice.php:272
+#. TRANS: Client exception thrown when a user tries to post while being banned.
+#: classes/Notice.php:286
msgid "You are banned from posting notices on this site."
msgstr ""
-#: classes/Notice.php:338 classes/Notice.php:364
+#. TRANS: Server exception thrown when a notice cannot be saved.
+#. TRANS: Server exception thrown when a notice cannot be updated.
+#: classes/Notice.php:353 classes/Notice.php:380
msgid "Problem saving notice."
msgstr "Có lỗi xảy ra khi lưu tin nhắn."
-#: classes/Notice.php:973
+#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups().
+#: classes/Notice.php:892
+msgid "Bad type provided to saveKnownGroups"
+msgstr ""
+
+#. TRANS: Server exception thrown when an update for a group inbox fails.
+#: classes/Notice.php:991
#, fuzzy
msgid "Problem saving group inbox."
msgstr "Có lỗi xảy ra khi lưu tin nhắn."
#. TRANS: Message used to repeat a notice. RT is the abbreviation of 'retweet'.
#. TRANS: %1$s is the repeated user's name, %2$s is the repeated notice.
-#: classes/Notice.php:1564
+#: classes/Notice.php:1614
#, fuzzy, php-format
msgid "RT @%1$s %2$s"
msgstr "%s (%s)"
-#: classes/Subscription.php:74 lib/oauthstore.php:465
+#. TRANS: Exception thrown when trying to revoke an existing role for a user that does not exist.
+#. TRANS: %1$s is the role name, %2$s is the user ID (number).
+#: classes/Profile.php:740
+#, php-format
+msgid "Cannot revoke role \"%1$s\" for user #%2$d; does not exist."
+msgstr ""
+
+#. TRANS: Exception thrown when trying to revoke a role for a user with a failing database query.
+#. TRANS: %1$s is the role name, %2$s is the user ID (number).
+#: classes/Profile.php:749
+#, php-format
+msgid "Cannot revoke role \"%1$s\" for user #%2$d; database error."
+msgstr ""
+
+#. TRANS: Exception thrown when a right for a non-existing user profile is checked.
+#: classes/Remote_profile.php:54
+#, fuzzy
+msgid "Missing profile."
+msgstr "NgÆ°á»i dùng không có thông tin."
+
+#. TRANS: Exception thrown when a tag cannot be saved.
+#: classes/Status_network.php:346
+#, fuzzy
+msgid "Unable to save tag."
+msgstr "Không thể lưu thông tin Twitter của bạn!"
+
+#. TRANS: Exception thrown when trying to subscribe while being banned from subscribing.
+#: classes/Subscription.php:75 lib/oauthstore.php:465
msgid "You have been banned from subscribing."
msgstr ""
-#: classes/Subscription.php:78
+#. TRANS: Exception thrown when trying to subscribe while already subscribed.
+#: classes/Subscription.php:80
msgid "Already subscribed!"
msgstr ""
-#: classes/Subscription.php:82
+#. TRANS: Exception thrown when trying to subscribe to a user who has blocked the subscribing user.
+#: classes/Subscription.php:85
#, fuzzy
msgid "User has blocked you."
msgstr "NgÆ°á»i dùng không có thông tin."
-#: classes/Subscription.php:167
+#. TRANS: Exception thrown when trying to unsibscribe without a subscription.
+#: classes/Subscription.php:171
#, fuzzy
msgid "Not subscribed!"
msgstr "Chưa đăng nhận!"
-#: classes/Subscription.php:173
+#. TRANS: Exception thrown when trying to unsubscribe a user from themselves.
+#: classes/Subscription.php:178
#, fuzzy
-msgid "Couldn't delete self-subscription."
+msgid "Could not delete self-subscription."
msgstr "Không thể xóa đăng nhận."
-#: classes/Subscription.php:200
+#. TRANS: Exception thrown when the OMB token for a subscription could not deleted on the server.
+#: classes/Subscription.php:206
#, fuzzy
-msgid "Couldn't delete subscription OMB token."
+msgid "Could not delete subscription OMB token."
msgstr "Không thể xóa đăng nhận."
-#: classes/Subscription.php:211
-msgid "Couldn't delete subscription."
+#. TRANS: Exception thrown when a subscription could not be deleted on the server.
+#: classes/Subscription.php:218
+#, fuzzy
+msgid "Could not delete subscription."
msgstr "Không thể xóa đăng nhận."
-#: classes/User.php:363
+#. TRANS: Notice given on user registration.
+#. TRANS: %1$s is the sitename, $2$s is the registering user's nickname.
+#: classes/User.php:365
#, fuzzy, php-format
msgid "Welcome to %1$s, @%2$s!"
msgstr "%s chào mừng bạn "
-#: classes/User_group.php:480
+#. TRANS: Server exception thrown when creating a group failed.
+#: classes/User_group.php:496
#, fuzzy
msgid "Could not create group."
msgstr "Không thể tạo favorite."
-#: classes/User_group.php:489
+#. TRANS: Server exception thrown when updating a group URI failed.
+#: classes/User_group.php:506
#, fuzzy
msgid "Could not set group URI."
msgstr "Không thể tạo đăng nhận."
-#: classes/User_group.php:510
+#. TRANS: Server exception thrown when setting group membership failed.
+#: classes/User_group.php:529
#, fuzzy
msgid "Could not set group membership."
msgstr "Không thể tạo đăng nhận."
-#: classes/User_group.php:524
+#. TRANS: Server exception thrown when saving local group information failed.
+#: classes/User_group.php:544
#, fuzzy
msgid "Could not save local group info."
msgstr "Không thể tạo đăng nhận."
@@ -6553,7 +6651,7 @@ msgid ""
"users in conversation. People can send you messages for your eyes only."
msgstr ""
-#: lib/mailbox.php:227 lib/noticelist.php:497
+#: lib/mailbox.php:227 lib/noticelist.php:505
#, fuzzy
msgid "from"
msgstr " từ "
@@ -6610,25 +6708,25 @@ msgstr ""
msgid "File upload stopped by extension."
msgstr ""
-#: lib/mediafile.php:179 lib/mediafile.php:216
+#: lib/mediafile.php:179 lib/mediafile.php:217
msgid "File exceeds user's quota."
msgstr ""
-#: lib/mediafile.php:196 lib/mediafile.php:233
+#: lib/mediafile.php:197 lib/mediafile.php:234
msgid "File could not be moved to destination directory."
msgstr ""
-#: lib/mediafile.php:201 lib/mediafile.php:237
+#: lib/mediafile.php:202 lib/mediafile.php:238
#, fuzzy
msgid "Could not determine file's MIME type."
msgstr "Không thể lấy lại các tin nhắn ưa thích"
-#: lib/mediafile.php:270
+#: lib/mediafile.php:318
#, php-format
msgid " Try using another %s format."
msgstr ""
-#: lib/mediafile.php:275
+#: lib/mediafile.php:323
#, php-format
msgid "%s is not a supported file type on this server."
msgstr ""
@@ -6688,55 +6786,55 @@ msgid ""
msgstr ""
#. TRANS: Used in coordinates as abbreviation of north
-#: lib/noticelist.php:430
+#: lib/noticelist.php:436
#, fuzzy
msgid "N"
msgstr "Không"
#. TRANS: Used in coordinates as abbreviation of south
-#: lib/noticelist.php:432
+#: lib/noticelist.php:438
msgid "S"
msgstr ""
#. TRANS: Used in coordinates as abbreviation of east
-#: lib/noticelist.php:434
+#: lib/noticelist.php:440
msgid "E"
msgstr ""
#. TRANS: Used in coordinates as abbreviation of west
-#: lib/noticelist.php:436
+#: lib/noticelist.php:442
msgid "W"
msgstr ""
-#: lib/noticelist.php:438
+#: lib/noticelist.php:444
#, php-format
msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
msgstr ""
-#: lib/noticelist.php:447
+#: lib/noticelist.php:453
msgid "at"
msgstr ""
-#: lib/noticelist.php:559
+#: lib/noticelist.php:567
#, fuzzy
msgid "in context"
msgstr "Không có nội dung!"
-#: lib/noticelist.php:594
+#: lib/noticelist.php:602
#, fuzzy
msgid "Repeated by"
msgstr "Tạo"
-#: lib/noticelist.php:621
+#: lib/noticelist.php:629
#, fuzzy
msgid "Reply to this notice"
msgstr "Trả lá»i tin nhắn này"
-#: lib/noticelist.php:622
+#: lib/noticelist.php:630
msgid "Reply"
msgstr "Trả lá»i"
-#: lib/noticelist.php:666
+#: lib/noticelist.php:674
#, fuzzy
msgid "Notice repeated"
msgstr "Tin đã gửi"
@@ -7018,9 +7116,8 @@ msgid "This server cannot handle theme uploads without ZIP support."
msgstr ""
#: lib/themeuploader.php:58 lib/themeuploader.php:61
-#, fuzzy
-msgid "Theme upload missing or failed."
-msgstr "Hệ thống xảy ra lỗi trong khi tải file."
+msgid "The theme file is missing or the upload failed."
+msgstr ""
#: lib/themeuploader.php:91 lib/themeuploader.php:102
#: lib/themeuploader.php:253 lib/themeuploader.php:257
diff --git a/locale/zh_CN/LC_MESSAGES/statusnet.po b/locale/zh_CN/LC_MESSAGES/statusnet.po
index d9afdf9e9..bd331de65 100644
--- a/locale/zh_CN/LC_MESSAGES/statusnet.po
+++ b/locale/zh_CN/LC_MESSAGES/statusnet.po
@@ -1,5 +1,6 @@
# Translation of StatusNet to Simplified Chinese
#
+# Author@translatewiki.net: Chenxiaoqino
# Author@translatewiki.net: Shizhao
# --
# Messages of identi.ca
@@ -10,12 +11,12 @@ msgid ""
msgstr ""
"Project-Id-Version: StatusNet\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-06-16 22:18+0000\n"
-"PO-Revision-Date: 2010-06-21 18:05:26+0000\n"
+"POT-Creation-Date: 2010-08-03 13:21+0000\n"
+"PO-Revision-Date: 2010-08-03 13:22:34+0000\n"
"Language-Team: Simplified Chinese\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.17alpha (r68367); Translate extension (2010-06-12)\n"
+"X-Generator: MediaWiki 1.17alpha (r70381); Translate extension (2010-07-21)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: zh-hans\n"
"X-Message-Group: out-statusnet\n"
@@ -108,7 +109,7 @@ msgstr "没有该页é¢"
#: actions/apidirectmessagenew.php:74 actions/apigroupcreate.php:113
#: actions/apigroupismember.php:91 actions/apigroupjoin.php:100
#: actions/apigroupleave.php:100 actions/apigrouplist.php:73
-#: actions/apistatusesupdate.php:228 actions/apisubscriptions.php:87
+#: actions/apistatusesupdate.php:229 actions/apisubscriptions.php:87
#: actions/apitimelinefavorites.php:72 actions/apitimelinefriends.php:174
#: actions/apitimelinehome.php:80 actions/apitimelinementions.php:80
#: actions/apitimelineuser.php:82 actions/avatarbynickname.php:75
@@ -175,15 +176,15 @@ msgstr ""
#: actions/all.php:146
#, 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)."
+"You can try to [nudge %1$s](../%2$s) from their profile or [post something "
+"to them](%%%%action.newnotice%%%%?status_textarea=%3$s)."
msgstr ""
#: actions/all.php:149 actions/replies.php:210 actions/showstream.php:211
#, php-format
msgid ""
"Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
-"post a notice to his or her attention."
+"post a notice to them."
msgstr ""
#. TRANS: H1 text
@@ -216,7 +217,7 @@ msgstr "æ¥è‡ª%2$s 上 %1$s 和好å‹çš„æ›´æ–°ï¼"
#: actions/apistatusesshow.php:109 actions/apistatusnetconfig.php:141
#: actions/apistatusnetversion.php:93 actions/apisubscriptions.php:111
#: actions/apitimelinefavorites.php:174 actions/apitimelinefriends.php:271
-#: actions/apitimelinegroup.php:152 actions/apitimelinehome.php:175
+#: actions/apitimelinegroup.php:154 actions/apitimelinehome.php:175
#: actions/apitimelinementions.php:174 actions/apitimelinepublic.php:241
#: actions/apitimelineretweetedtome.php:121
#: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161
@@ -267,7 +268,7 @@ msgstr "无法ä¿å­˜ä¸ªäººä¿¡æ¯ã€‚"
#: actions/apiaccountupdateprofilebackgroundimage.php:108
#: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80
-#: actions/apistatusesupdate.php:211 actions/avatarsettings.php:257
+#: actions/apistatusesupdate.php:212 actions/avatarsettings.php:257
#: actions/designadminpanel.php:123 actions/editapplication.php:118
#: actions/newapplication.php:101 actions/newnotice.php:94
#: lib/designsettings.php:283
@@ -368,7 +369,8 @@ msgid "Could not delete favorite."
msgstr "无法删除收è—。"
#: actions/apifriendshipscreate.php:109
-msgid "Could not follow user: User not found."
+#, fuzzy
+msgid "Could not follow user: profile not found."
msgstr "无法订阅用户:未找到。"
#: actions/apifriendshipscreate.php:118
@@ -386,8 +388,9 @@ msgstr "无法订阅用户:未找到。"
msgid "You cannot unfollow yourself."
msgstr "无法更新用户。"
-#: actions/apifriendshipsexists.php:94
-msgid "Two user ids or screen_names must be supplied."
+#: actions/apifriendshipsexists.php:91
+#, fuzzy
+msgid "Two valid IDs or screen_names must be supplied."
msgstr "å¿…é¡»æ供两个用户å¸å·æˆ–昵称。"
#: actions/apifriendshipsshow.php:134
@@ -435,7 +438,7 @@ msgstr "å…¨å过长(ä¸èƒ½è¶…过 255 个字符)。"
#: actions/newapplication.php:172
#, fuzzy, php-format
msgid "Description is too long (max %d chars)."
-msgstr "æ述过长(ä¸èƒ½è¶…过140字符)。"
+msgstr "æ述过长(ä¸èƒ½è¶…过%d 个字符)。"
#: actions/apigroupcreate.php:227 actions/editgroup.php:208
#: actions/newgroup.php:148 actions/profilesettings.php:232
@@ -447,7 +450,7 @@ msgstr "ä½ç½®è¿‡é•¿(ä¸èƒ½è¶…过255个字符)。"
#: actions/newgroup.php:159
#, php-format
msgid "Too many aliases! Maximum %d."
-msgstr ""
+msgstr "太多化å了ï¼æœ€å¤š%d 个。"
#: actions/apigroupcreate.php:267
#, fuzzy, php-format
@@ -458,19 +461,18 @@ msgstr "主页'%s'ä¸æ­£ç¡®"
#: actions/newgroup.php:172
#, fuzzy, php-format
msgid "Alias \"%s\" already in use. Try another one."
-msgstr "昵称已被使用,æ¢ä¸€ä¸ªå§ã€‚"
+msgstr "昵称%s已被使用,æ¢ä¸€ä¸ªå§ã€‚"
#: actions/apigroupcreate.php:289 actions/editgroup.php:238
#: actions/newgroup.php:178
msgid "Alias can't be the same as nickname."
-msgstr ""
+msgstr "昵称ä¸èƒ½å’ŒåŒ–å相åŒã€‚"
#: actions/apigroupismember.php:96 actions/apigroupjoin.php:105
#: actions/apigroupleave.php:105 actions/apigroupmembership.php:92
#: actions/apigroupshow.php:83 actions/apitimelinegroup.php:92
-#, fuzzy
msgid "Group not found."
-msgstr "API 方法未实现ï¼"
+msgstr "å°ç»„未找到。"
#: actions/apigroupjoin.php:111 actions/joingroup.php:100
#, fuzzy
@@ -520,6 +522,11 @@ msgstr "%s 群组"
msgid "groups on %s"
msgstr "组动作"
+#: actions/apimediaupload.php:99
+#, fuzzy
+msgid "Upload failed."
+msgstr "上传"
+
#: actions/apioauthauthorize.php:101
msgid "No oauth_token parameter provided."
msgstr ""
@@ -666,23 +673,27 @@ msgstr "头åƒå·²æ›´æ–°ã€‚"
msgid "No status with that ID found."
msgstr "没有找到此IDçš„ä¿¡æ¯ã€‚"
-#: actions/apistatusesupdate.php:241 actions/newnotice.php:155
+#: actions/apistatusesupdate.php:221
+msgid "Client must provide a 'status' parameter with a value."
+msgstr ""
+
+#: actions/apistatusesupdate.php:242 actions/newnotice.php:155
#: lib/mailhandler.php:60
#, fuzzy, php-format
msgid "That's too long. Max notice size is %d chars."
msgstr "超出长度é™åˆ¶ã€‚ä¸èƒ½è¶…过 140 个字符。"
-#: actions/apistatusesupdate.php:282 actions/apiusershow.php:96
+#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96
#, fuzzy
msgid "Not found."
msgstr "未找到"
-#: actions/apistatusesupdate.php:305 actions/newnotice.php:178
+#: actions/apistatusesupdate.php:306 actions/newnotice.php:178
#, php-format
msgid "Max notice size is %d chars, including attachment URL."
msgstr ""
-#: actions/apisubscriptions.php:231 actions/apisubscriptions.php:261
+#: actions/apisubscriptions.php:232 actions/apisubscriptions.php:262
#, fuzzy
msgid "Unsupported format."
msgstr "ä¸æ”¯æŒè¿™ç§å›¾åƒæ ¼å¼ã€‚"
@@ -737,6 +748,10 @@ msgstr "带 %s 标签的通告"
msgid "Updates tagged with %1$s on %2$s!"
msgstr "%2$s 上 %1$s çš„æ›´æ–°ï¼"
+#: actions/apitrends.php:87
+msgid "API method under construction."
+msgstr "API 方法尚未实现。"
+
#: actions/attachment.php:73
#, fuzzy
msgid "No such attachment."
@@ -791,7 +806,7 @@ msgid "Preview"
msgstr "预览"
#: actions/avatarsettings.php:149 actions/showapplication.php:252
-#: lib/deleteuserform.php:66 lib/noticelist.php:648
+#: lib/deleteuserform.php:66 lib/noticelist.php:656
#, fuzzy
msgid "Delete"
msgstr "删除"
@@ -1089,7 +1104,7 @@ msgid "Do not delete this notice"
msgstr "无法删除通告。"
#. TRANS: Submit button title for 'Yes' when deleting a notice.
-#: actions/deletenotice.php:158 lib/noticelist.php:648
+#: actions/deletenotice.php:158 lib/noticelist.php:656
#, fuzzy
msgid "Delete this notice"
msgstr "删除通告"
@@ -1391,7 +1406,8 @@ msgstr "主页'%s'ä¸æ­£ç¡®"
msgid "Could not update group."
msgstr "无法更新组"
-#: actions/editgroup.php:264 classes/User_group.php:496
+#. TRANS: Server exception thrown when creating group aliases failed.
+#: actions/editgroup.php:264 classes/User_group.php:514
#, fuzzy
msgid "Could not create aliases."
msgstr "无法创建收è—。"
@@ -2566,8 +2582,9 @@ msgid "Updates matching search term \"%1$s\" on %2$s!"
msgstr "所有匹é…æœç´¢æ¡ä»¶\"%s\"的消æ¯"
#: actions/nudge.php:85
+#, fuzzy
msgid ""
-"This user doesn't allow nudges or hasn't confirmed or set his email yet."
+"This user doesn't allow nudges or hasn't confirmed or set their email yet."
msgstr "此用户ä¸å…许振铃呼å«æˆ–者还没有确认或设置TA的电å­é‚®ä»¶ã€‚"
#: actions/nudge.php:94
@@ -2646,8 +2663,8 @@ msgid "Only %s URLs over plain HTTP please."
msgstr ""
#. TRANS: Client error on an API request with an unsupported data format.
-#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1179
-#: lib/apiaction.php:1208 lib/apiaction.php:1325
+#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1204
+#: lib/apiaction.php:1232 lib/apiaction.php:1355
msgid "Not a supported data format."
msgstr "ä¸æ”¯æŒçš„æ•°æ®æ ¼å¼ã€‚"
@@ -3561,7 +3578,7 @@ msgstr "您必须åŒæ„此授æƒæ–¹å¯æ³¨å†Œã€‚"
msgid "You already repeated that notice."
msgstr "您已æˆåŠŸé˜»æ­¢è¯¥ç”¨æˆ·ï¼š"
-#: actions/repeat.php:114 lib/noticelist.php:667
+#: actions/repeat.php:114 lib/noticelist.php:675
#, fuzzy
msgid "Repeated"
msgstr "创建"
@@ -3601,7 +3618,7 @@ msgstr "%s 的通告èšåˆ"
#, fuzzy, php-format
msgid ""
"This is the timeline showing replies to %1$s but %2$s hasn't received a "
-"notice to his attention yet."
+"notice to them yet."
msgstr "这是 %s 和好å‹çš„时间线,但是没有任何人å‘布内容。"
#: actions/replies.php:204
@@ -3614,8 +3631,8 @@ msgstr ""
#: actions/replies.php:206
#, php-format
msgid ""
-"You can try to [nudge %1$s](../%2$s) or [post something to his or her "
-"attention](%%%%action.newnotice%%%%?status_textarea=%3$s)."
+"You can try to [nudge %1$s](../%2$s) or [post something to them](%%%%action."
+"newnotice%%%%?status_textarea=%3$s)."
msgstr ""
#: actions/repliesrss.php:72
@@ -3715,7 +3732,7 @@ msgstr "分页"
msgid "Description"
msgstr "æè¿°"
-#: actions/showapplication.php:192 actions/showgroup.php:444
+#: actions/showapplication.php:192 actions/showgroup.php:436
#: lib/profileaction.php:187
msgid "Statistics"
msgstr "统计"
@@ -3801,16 +3818,16 @@ msgstr ""
#: actions/showfavorites.php:208
#, php-format
msgid ""
-"%s hasn't added any notices to his favorites yet. Post something interesting "
-"they would add to their favorites :)"
+"%s hasn't added any favorite notices yet. Post something interesting they "
+"would add to their favorites :)"
msgstr ""
#: actions/showfavorites.php:212
#, php-format
msgid ""
-"%s hasn't added any notices to his favorites yet. Why not [register an "
-"account](%%%%action.register%%%%) and then post something interesting they "
-"would add to their favorites :)"
+"%s hasn't added any favorite notices yet. Why not [register an account](%%%%"
+"action.register%%%%) and then post something interesting they would add to "
+"their favorites :)"
msgstr ""
#: actions/showfavorites.php:243
@@ -3871,7 +3888,7 @@ msgstr "%s 的通告èšåˆ"
msgid "FOAF for %s group"
msgstr "%s çš„å‘件箱"
-#: actions/showgroup.php:393 actions/showgroup.php:453 lib/groupnav.php:91
+#: actions/showgroup.php:393 actions/showgroup.php:445 lib/groupnav.php:91
#, fuzzy
msgid "Members"
msgstr "注册于"
@@ -3886,12 +3903,12 @@ msgstr "(没有)"
msgid "All members"
msgstr "所有æˆå‘˜"
-#: actions/showgroup.php:447
+#: actions/showgroup.php:439
#, fuzzy
msgid "Created"
msgstr "创建"
-#: actions/showgroup.php:463
+#: actions/showgroup.php:455
#, php-format
msgid ""
"**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3901,7 +3918,7 @@ msgid ""
"of this group and many more! ([Read more](%%%%doc.help%%%%))"
msgstr ""
-#: actions/showgroup.php:469
+#: actions/showgroup.php:461
#, fuzzy, php-format
msgid ""
"**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3912,7 +3929,7 @@ msgstr ""
"**%s** 是一个 %%%%site.name%%%% 的用户组,一个微åšå®¢æœåŠ¡ [micro-blogging]"
"(http://en.wikipedia.org/wiki/Micro-blogging)"
-#: actions/showgroup.php:497
+#: actions/showgroup.php:489
#, fuzzy
msgid "Admins"
msgstr "admin管ç†å‘˜"
@@ -3989,8 +4006,8 @@ msgstr ""
#: 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)."
+"You can try to nudge %1$s or [post something to them](%%%%action.newnotice%%%"
+"%?status_textarea=%2$s)."
msgstr ""
#: actions/showstream.php:243
@@ -4389,7 +4406,8 @@ msgstr "头åƒè®¾ç½®"
msgid "You are not subscribed to that profile."
msgstr "您未告知此个人信æ¯"
-#: actions/subedit.php:83 classes/Subscription.php:132
+#. TRANS: Exception thrown when a subscription could not be stored on the server.
+#: actions/subedit.php:83 classes/Subscription.php:136
#, fuzzy
msgid "Could not save subscription."
msgstr "无法删除订阅。"
@@ -4564,10 +4582,6 @@ msgstr "使用这个表格给你的关注者或你的订阅加注标签。"
msgid "No such tag."
msgstr "未找到此消æ¯ã€‚"
-#: actions/twitapitrends.php:85
-msgid "API method under construction."
-msgstr "API 方法尚未实现。"
-
#: actions/unblock.php:59
#, fuzzy
msgid "You haven't blocked that user."
@@ -4876,162 +4890,259 @@ msgstr "个人"
msgid "Author(s)"
msgstr ""
-#: classes/File.php:185
+#. TRANS: Server exception thrown when a URL cannot be processed.
+#: classes/File.php:143
+#, php-format
+msgid "Cannot process URL '%s'"
+msgstr ""
+
+#. TRANS: Server exception thrown when... Robin thinks something is impossible!
+#: classes/File.php:175
+msgid "Robin thinks something is impossible."
+msgstr ""
+
+#. TRANS: Message given if an upload is larger than the configured maximum.
+#. TRANS: %1$d is the byte limit for uploads, %2$d is the byte count for the uploaded file.
+#: classes/File.php:190
#, php-format
msgid ""
-"No file may be larger than %d bytes and the file you sent was %d bytes. Try "
-"to upload a smaller version."
+"No file may be larger than %1$d bytes and the file you sent was %2$d bytes. "
+"Try to upload a smaller version."
msgstr ""
-#: classes/File.php:195
+#. TRANS: Message given if an upload would exceed user quota.
+#. TRANS: %d (number) is the user quota in bytes.
+#: classes/File.php:202
#, php-format
msgid "A file this large would exceed your user quota of %d bytes."
msgstr ""
-#: classes/File.php:202
+#. TRANS: Message given id an upload would exceed a user's monthly quota.
+#. TRANS: $d (number) is the monthly user quota in bytes.
+#: classes/File.php:211
#, php-format
msgid "A file this large would exceed your monthly quota of %d bytes."
msgstr ""
-#: classes/Group_member.php:41
+#. TRANS: Client exception thrown if a file upload does not have a valid name.
+#: classes/File.php:248 classes/File.php:263
+#, fuzzy
+msgid "Invalid filename."
+msgstr "大å°ä¸æ­£ç¡®ã€‚"
+
+#. TRANS: Exception thrown when joining a group fails.
+#: classes/Group_member.php:42
#, fuzzy
msgid "Group join failed."
msgstr "组资料"
-#: classes/Group_member.php:53
+#. TRANS: Exception thrown when trying to leave a group the user is not a member of.
+#: classes/Group_member.php:55
#, fuzzy
msgid "Not part of group."
msgstr "无法更新组"
-#: classes/Group_member.php:60
+#. TRANS: Exception thrown when trying to leave a group fails.
+#: classes/Group_member.php:63
#, fuzzy
msgid "Group leave failed."
msgstr "组资料"
-#: classes/Local_group.php:41
+#. TRANS: Server exception thrown when updating a local group fails.
+#: classes/Local_group.php:42
#, fuzzy
msgid "Could not update local group."
msgstr "无法更新组"
-#: classes/Login_token.php:76
+#. TRANS: Exception thrown when trying creating a login token failed.
+#. TRANS: %s is the user nickname for which token creation failed.
+#: classes/Login_token.php:78
#, fuzzy, php-format
msgid "Could not create login token for %s"
msgstr "无法创建收è—。"
-#: classes/Message.php:45
+#. TRANS: Exception thrown when database name or Data Source Name could not be found.
+#: classes/Memcached_DataObject.php:533
+msgid "No database name or DSN found anywhere."
+msgstr ""
+
+#. TRANS: Client exception thrown when a user tries to send a direct message while being banned from sending them.
+#: classes/Message.php:46
#, fuzzy
msgid "You are banned from sending direct messages."
msgstr "å‘é€æ¶ˆæ¯å‡ºé”™ã€‚"
-#: classes/Message.php:61
+#. TRANS: Message given when a message could not be stored on the server.
+#: classes/Message.php:63
msgid "Could not insert message."
msgstr "无法添加信æ¯ã€‚"
-#: classes/Message.php:71
+#. TRANS: Message given when a message could not be updated on the server.
+#: classes/Message.php:74
msgid "Could not update message with new URI."
msgstr "无法添加新URIçš„ä¿¡æ¯ã€‚"
+#. TRANS: Server exception thrown when a user profile for a notice cannot be found.
+#. TRANS: %1$d is a profile ID (number), %2$d is a notice ID (number).
+#: classes/Notice.php:98
+#, php-format
+msgid "No such profile (%1$d) for notice (%2$d)."
+msgstr ""
+
#. TRANS: Server exception. %s are the error details.
-#: classes/Notice.php:182
+#: classes/Notice.php:190
#, fuzzy, php-format
msgid "Database error inserting hashtag: %s"
msgstr "添加标签时数æ®åº“出错:%s"
-#: classes/Notice.php:251
+#. TRANS: Client exception thrown if a notice contains too many characters.
+#: classes/Notice.php:260
#, fuzzy
msgid "Problem saving notice. Too long."
msgstr "ä¿å­˜é€šå‘Šæ—¶å‡ºé”™ã€‚"
-#: classes/Notice.php:255
+#. TRANS: Client exception thrown when trying to save a notice for an unknown user.
+#: classes/Notice.php:265
#, fuzzy
msgid "Problem saving notice. Unknown user."
msgstr "ä¿å­˜é€šå‘Šæ—¶å‡ºé”™ã€‚"
-#: classes/Notice.php:260
+#. TRANS: Client exception thrown when a user tries to post too many notices in a given time frame.
+#: classes/Notice.php:271
msgid ""
"Too many notices too fast; take a breather and post again in a few minutes."
msgstr "你在短时间里å‘布了过多的消æ¯ï¼Œè¯·æ·±å‘¼å¸ï¼Œè¿‡å‡ åˆ†é’Ÿå†å‘消æ¯ã€‚"
-#: classes/Notice.php:266
+#. TRANS: Client exception thrown when a user tries to post too many duplicate notices in a given time frame.
+#: classes/Notice.php:278
#, fuzzy
msgid ""
"Too many duplicate messages too quickly; take a breather and post again in a "
"few minutes."
msgstr "你在短时间里å‘布了过多的消æ¯ï¼Œè¯·æ·±å‘¼å¸ï¼Œè¿‡å‡ åˆ†é’Ÿå†å‘消æ¯ã€‚"
-#: classes/Notice.php:272
+#. TRANS: Client exception thrown when a user tries to post while being banned.
+#: classes/Notice.php:286
msgid "You are banned from posting notices on this site."
msgstr "在这个网站你被ç¦æ­¢å‘布消æ¯ã€‚"
-#: classes/Notice.php:338 classes/Notice.php:364
+#. TRANS: Server exception thrown when a notice cannot be saved.
+#. TRANS: Server exception thrown when a notice cannot be updated.
+#: classes/Notice.php:353 classes/Notice.php:380
msgid "Problem saving notice."
msgstr "ä¿å­˜é€šå‘Šæ—¶å‡ºé”™ã€‚"
-#: classes/Notice.php:973
+#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups().
+#: classes/Notice.php:892
+msgid "Bad type provided to saveKnownGroups"
+msgstr ""
+
+#. TRANS: Server exception thrown when an update for a group inbox fails.
+#: classes/Notice.php:991
#, fuzzy
msgid "Problem saving group inbox."
msgstr "ä¿å­˜é€šå‘Šæ—¶å‡ºé”™ã€‚"
#. TRANS: Message used to repeat a notice. RT is the abbreviation of 'retweet'.
#. TRANS: %1$s is the repeated user's name, %2$s is the repeated notice.
-#: classes/Notice.php:1564
+#: classes/Notice.php:1614
#, fuzzy, php-format
msgid "RT @%1$s %2$s"
msgstr "%1$s (%2$s)"
-#: classes/Subscription.php:74 lib/oauthstore.php:465
+#. TRANS: Exception thrown when trying to revoke an existing role for a user that does not exist.
+#. TRANS: %1$s is the role name, %2$s is the user ID (number).
+#: classes/Profile.php:740
+#, php-format
+msgid "Cannot revoke role \"%1$s\" for user #%2$d; does not exist."
+msgstr ""
+
+#. TRANS: Exception thrown when trying to revoke a role for a user with a failing database query.
+#. TRANS: %1$s is the role name, %2$s is the user ID (number).
+#: classes/Profile.php:749
+#, php-format
+msgid "Cannot revoke role \"%1$s\" for user #%2$d; database error."
+msgstr ""
+
+#. TRANS: Exception thrown when a right for a non-existing user profile is checked.
+#: classes/Remote_profile.php:54
+#, fuzzy
+msgid "Missing profile."
+msgstr "用户没有个人信æ¯ã€‚"
+
+#. TRANS: Exception thrown when a tag cannot be saved.
+#: classes/Status_network.php:346
+#, fuzzy
+msgid "Unable to save tag."
+msgstr "无法ä¿å­˜ Twitter 设置ï¼"
+
+#. TRANS: Exception thrown when trying to subscribe while being banned from subscribing.
+#: classes/Subscription.php:75 lib/oauthstore.php:465
#, fuzzy
msgid "You have been banned from subscribing."
msgstr "那个用户阻止了你的订阅。"
-#: classes/Subscription.php:78
+#. TRANS: Exception thrown when trying to subscribe while already subscribed.
+#: classes/Subscription.php:80
msgid "Already subscribed!"
msgstr ""
-#: classes/Subscription.php:82
+#. TRANS: Exception thrown when trying to subscribe to a user who has blocked the subscribing user.
+#: classes/Subscription.php:85
#, fuzzy
msgid "User has blocked you."
msgstr "用户没有个人信æ¯ã€‚"
-#: classes/Subscription.php:167
+#. TRANS: Exception thrown when trying to unsibscribe without a subscription.
+#: classes/Subscription.php:171
#, fuzzy
msgid "Not subscribed!"
msgstr "未订阅ï¼"
-#: classes/Subscription.php:173
+#. TRANS: Exception thrown when trying to unsubscribe a user from themselves.
+#: classes/Subscription.php:178
#, fuzzy
-msgid "Couldn't delete self-subscription."
+msgid "Could not delete self-subscription."
msgstr "无法删除订阅。"
-#: classes/Subscription.php:200
+#. TRANS: Exception thrown when the OMB token for a subscription could not deleted on the server.
+#: classes/Subscription.php:206
#, fuzzy
-msgid "Couldn't delete subscription OMB token."
+msgid "Could not delete subscription OMB token."
msgstr "无法删除订阅。"
-#: classes/Subscription.php:211
-msgid "Couldn't delete subscription."
+#. TRANS: Exception thrown when a subscription could not be deleted on the server.
+#: classes/Subscription.php:218
+#, fuzzy
+msgid "Could not delete subscription."
msgstr "无法删除订阅。"
-#: classes/User.php:363
+#. TRANS: Notice given on user registration.
+#. TRANS: %1$s is the sitename, $2$s is the registering user's nickname.
+#: classes/User.php:365
#, fuzzy, php-format
msgid "Welcome to %1$s, @%2$s!"
msgstr "å‘é€ç»™ %1$s çš„ %2$s 消æ¯"
-#: classes/User_group.php:480
+#. TRANS: Server exception thrown when creating a group failed.
+#: classes/User_group.php:496
msgid "Could not create group."
msgstr "无法创建组。"
-#: classes/User_group.php:489
+#. TRANS: Server exception thrown when updating a group URI failed.
+#: classes/User_group.php:506
#, fuzzy
msgid "Could not set group URI."
msgstr "无法删除订阅。"
-#: classes/User_group.php:510
+#. TRANS: Server exception thrown when setting group membership failed.
+#: classes/User_group.php:529
#, fuzzy
msgid "Could not set group membership."
msgstr "无法删除订阅。"
-#: classes/User_group.php:524
+#. TRANS: Server exception thrown when saving local group information failed.
+#: classes/User_group.php:544
#, fuzzy
msgid "Could not save local group info."
msgstr "无法删除订阅。"
@@ -6430,7 +6541,7 @@ msgid ""
"users in conversation. People can send you messages for your eyes only."
msgstr ""
-#: lib/mailbox.php:227 lib/noticelist.php:497
+#: lib/mailbox.php:227 lib/noticelist.php:505
#, fuzzy
msgid "from"
msgstr " 从 "
@@ -6486,25 +6597,25 @@ msgstr ""
msgid "File upload stopped by extension."
msgstr ""
-#: lib/mediafile.php:179 lib/mediafile.php:216
+#: lib/mediafile.php:179 lib/mediafile.php:217
msgid "File exceeds user's quota."
msgstr ""
-#: lib/mediafile.php:196 lib/mediafile.php:233
+#: lib/mediafile.php:197 lib/mediafile.php:234
msgid "File could not be moved to destination directory."
msgstr ""
-#: lib/mediafile.php:201 lib/mediafile.php:237
+#: lib/mediafile.php:202 lib/mediafile.php:238
#, fuzzy
msgid "Could not determine file's MIME type."
msgstr "无法获å–收è—的通告。"
-#: lib/mediafile.php:270
+#: lib/mediafile.php:318
#, php-format
msgid " Try using another %s format."
msgstr ""
-#: lib/mediafile.php:275
+#: lib/mediafile.php:323
#, php-format
msgid "%s is not a supported file type on this server."
msgstr ""
@@ -6564,56 +6675,56 @@ msgid ""
msgstr ""
#. TRANS: Used in coordinates as abbreviation of north
-#: lib/noticelist.php:430
+#: lib/noticelist.php:436
#, fuzzy
msgid "N"
msgstr "å¦"
#. TRANS: Used in coordinates as abbreviation of south
-#: lib/noticelist.php:432
+#: lib/noticelist.php:438
msgid "S"
msgstr ""
#. TRANS: Used in coordinates as abbreviation of east
-#: lib/noticelist.php:434
+#: lib/noticelist.php:440
msgid "E"
msgstr ""
#. TRANS: Used in coordinates as abbreviation of west
-#: lib/noticelist.php:436
+#: lib/noticelist.php:442
msgid "W"
msgstr ""
-#: lib/noticelist.php:438
+#: lib/noticelist.php:444
#, php-format
msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
msgstr ""
-#: lib/noticelist.php:447
+#: lib/noticelist.php:453
msgid "at"
msgstr ""
-#: lib/noticelist.php:559
+#: lib/noticelist.php:567
#, fuzzy
msgid "in context"
msgstr "没有内容ï¼"
-#: lib/noticelist.php:594
+#: lib/noticelist.php:602
#, fuzzy
msgid "Repeated by"
msgstr "创建"
-#: lib/noticelist.php:621
+#: lib/noticelist.php:629
#, fuzzy
msgid "Reply to this notice"
msgstr "无法删除通告。"
-#: lib/noticelist.php:622
+#: lib/noticelist.php:630
#, fuzzy
msgid "Reply"
msgstr "回å¤"
-#: lib/noticelist.php:666
+#: lib/noticelist.php:674
#, fuzzy
msgid "Notice repeated"
msgstr "消æ¯å·²å‘布。"
@@ -6890,9 +7001,8 @@ msgid "This server cannot handle theme uploads without ZIP support."
msgstr ""
#: lib/themeuploader.php:58 lib/themeuploader.php:61
-#, fuzzy
-msgid "Theme upload missing or failed."
-msgstr "上传文件时出错。"
+msgid "The theme file is missing or the upload failed."
+msgstr ""
#: lib/themeuploader.php:91 lib/themeuploader.php:102
#: lib/themeuploader.php:253 lib/themeuploader.php:257
diff --git a/locale/zh_TW/LC_MESSAGES/statusnet.po b/locale/zh_TW/LC_MESSAGES/statusnet.po
index e002fd55d..1e5b44ae6 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-06-16 22:18+0000\n"
-"PO-Revision-Date: 2010-06-21 18:05:30+0000\n"
+"POT-Creation-Date: 2010-08-03 13:21+0000\n"
+"PO-Revision-Date: 2010-08-03 13:22:35+0000\n"
"Language-Team: Traditional Chinese\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: MediaWiki 1.17alpha (r68367); Translate extension (2010-06-12)\n"
+"X-Generator: MediaWiki 1.17alpha (r70381); Translate extension (2010-07-21)\n"
"X-Translation-Project: translatewiki.net at http://translatewiki.net\n"
"X-Language-Code: zh-hant\n"
"X-Message-Group: out-statusnet\n"
@@ -102,7 +102,7 @@ msgstr "無此通知"
#: actions/apidirectmessagenew.php:74 actions/apigroupcreate.php:113
#: actions/apigroupismember.php:91 actions/apigroupjoin.php:100
#: actions/apigroupleave.php:100 actions/apigrouplist.php:73
-#: actions/apistatusesupdate.php:228 actions/apisubscriptions.php:87
+#: actions/apistatusesupdate.php:229 actions/apisubscriptions.php:87
#: actions/apitimelinefavorites.php:72 actions/apitimelinefriends.php:174
#: actions/apitimelinehome.php:80 actions/apitimelinementions.php:80
#: actions/apitimelineuser.php:82 actions/avatarbynickname.php:75
@@ -169,15 +169,15 @@ msgstr ""
#: actions/all.php:146
#, 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)."
+"You can try to [nudge %1$s](../%2$s) from their profile or [post something "
+"to them](%%%%action.newnotice%%%%?status_textarea=%3$s)."
msgstr ""
#: actions/all.php:149 actions/replies.php:210 actions/showstream.php:211
#, php-format
msgid ""
"Why not [register an account](%%%%action.register%%%%) and then nudge %s or "
-"post a notice to his or her attention."
+"post a notice to them."
msgstr ""
#. TRANS: H1 text
@@ -211,7 +211,7 @@ msgstr ""
#: actions/apistatusesshow.php:109 actions/apistatusnetconfig.php:141
#: actions/apistatusnetversion.php:93 actions/apisubscriptions.php:111
#: actions/apitimelinefavorites.php:174 actions/apitimelinefriends.php:271
-#: actions/apitimelinegroup.php:152 actions/apitimelinehome.php:175
+#: actions/apitimelinegroup.php:154 actions/apitimelinehome.php:175
#: actions/apitimelinementions.php:174 actions/apitimelinepublic.php:241
#: actions/apitimelineretweetedtome.php:121
#: actions/apitimelineretweetsofme.php:152 actions/apitimelinetag.php:161
@@ -262,7 +262,7 @@ msgstr "無法儲存個人資料"
#: actions/apiaccountupdateprofilebackgroundimage.php:108
#: actions/apiaccountupdateprofileimage.php:97 actions/apimediaupload.php:80
-#: actions/apistatusesupdate.php:211 actions/avatarsettings.php:257
+#: actions/apistatusesupdate.php:212 actions/avatarsettings.php:257
#: actions/designadminpanel.php:123 actions/editapplication.php:118
#: actions/newapplication.php:101 actions/newnotice.php:94
#: lib/designsettings.php:283
@@ -360,8 +360,9 @@ msgid "Could not delete favorite."
msgstr ""
#: actions/apifriendshipscreate.php:109
-msgid "Could not follow user: User not found."
-msgstr ""
+#, fuzzy
+msgid "Could not follow user: profile not found."
+msgstr "無法連çµåˆ°ä¼ºæœå™¨:%s"
#: actions/apifriendshipscreate.php:118
#, php-format
@@ -378,8 +379,8 @@ msgstr "無法連çµåˆ°ä¼ºæœå™¨:%s"
msgid "You cannot unfollow yourself."
msgstr "無法更新使用者"
-#: actions/apifriendshipsexists.php:94
-msgid "Two user ids or screen_names must be supplied."
+#: actions/apifriendshipsexists.php:91
+msgid "Two valid IDs or screen_names must be supplied."
msgstr ""
#: actions/apifriendshipsshow.php:134
@@ -511,6 +512,11 @@ msgstr ""
msgid "groups on %s"
msgstr ""
+#: actions/apimediaupload.php:99
+#, fuzzy
+msgid "Upload failed."
+msgstr "無此通知"
+
#: actions/apioauthauthorize.php:101
msgid "No oauth_token parameter provided."
msgstr ""
@@ -657,23 +663,27 @@ msgstr "更新個人圖åƒ"
msgid "No status with that ID found."
msgstr ""
-#: actions/apistatusesupdate.php:241 actions/newnotice.php:155
+#: actions/apistatusesupdate.php:221
+msgid "Client must provide a 'status' parameter with a value."
+msgstr ""
+
+#: actions/apistatusesupdate.php:242 actions/newnotice.php:155
#: lib/mailhandler.php:60
#, php-format
msgid "That's too long. Max notice size is %d chars."
msgstr ""
-#: actions/apistatusesupdate.php:282 actions/apiusershow.php:96
+#: actions/apistatusesupdate.php:283 actions/apiusershow.php:96
#, fuzzy
msgid "Not found."
msgstr "ç›®å‰ç„¡è«‹æ±‚"
-#: actions/apistatusesupdate.php:305 actions/newnotice.php:178
+#: actions/apistatusesupdate.php:306 actions/newnotice.php:178
#, php-format
msgid "Max notice size is %d chars, including attachment URL."
msgstr ""
-#: actions/apisubscriptions.php:231 actions/apisubscriptions.php:261
+#: actions/apisubscriptions.php:232 actions/apisubscriptions.php:262
msgid "Unsupported format."
msgstr ""
@@ -727,6 +737,10 @@ msgstr ""
msgid "Updates tagged with %1$s on %2$s!"
msgstr "&s的微型部è½æ ¼"
+#: actions/apitrends.php:87
+msgid "API method under construction."
+msgstr ""
+
#: actions/attachment.php:73
#, fuzzy
msgid "No such attachment."
@@ -781,7 +795,7 @@ msgid "Preview"
msgstr ""
#: actions/avatarsettings.php:149 actions/showapplication.php:252
-#: lib/deleteuserform.php:66 lib/noticelist.php:648
+#: lib/deleteuserform.php:66 lib/noticelist.php:656
msgid "Delete"
msgstr ""
@@ -1071,7 +1085,7 @@ msgid "Do not delete this notice"
msgstr "無此通知"
#. TRANS: Submit button title for 'Yes' when deleting a notice.
-#: actions/deletenotice.php:158 lib/noticelist.php:648
+#: actions/deletenotice.php:158 lib/noticelist.php:656
msgid "Delete this notice"
msgstr ""
@@ -1366,7 +1380,8 @@ msgstr "個人首é é€£çµ%s無效"
msgid "Could not update group."
msgstr "無法更新使用者"
-#: actions/editgroup.php:264 classes/User_group.php:496
+#. TRANS: Server exception thrown when creating group aliases failed.
+#: actions/editgroup.php:264 classes/User_group.php:514
#, fuzzy
msgid "Could not create aliases."
msgstr "無法存å–個人圖åƒè³‡æ–™"
@@ -2477,7 +2492,7 @@ msgstr "æ‰€æœ‰ç¬¦åˆ \"%s\"çš„æ›´æ–°"
#: actions/nudge.php:85
msgid ""
-"This user doesn't allow nudges or hasn't confirmed or set his email yet."
+"This user doesn't allow nudges or hasn't confirmed or set their email yet."
msgstr ""
#: actions/nudge.php:94
@@ -2554,8 +2569,8 @@ msgid "Only %s URLs over plain HTTP please."
msgstr ""
#. TRANS: Client error on an API request with an unsupported data format.
-#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1179
-#: lib/apiaction.php:1208 lib/apiaction.php:1325
+#: actions/oembed.php:184 actions/oembed.php:203 lib/apiaction.php:1204
+#: lib/apiaction.php:1232 lib/apiaction.php:1355
msgid "Not a supported data format."
msgstr ""
@@ -3432,7 +3447,7 @@ msgstr ""
msgid "You already repeated that notice."
msgstr "無此使用者"
-#: actions/repeat.php:114 lib/noticelist.php:667
+#: actions/repeat.php:114 lib/noticelist.php:675
#, fuzzy
msgid "Repeated"
msgstr "新增"
@@ -3472,7 +3487,7 @@ msgstr "發é€çµ¦%s好å‹çš„訂閱"
#, php-format
msgid ""
"This is the timeline showing replies to %1$s but %2$s hasn't received a "
-"notice to his attention yet."
+"notice to them yet."
msgstr ""
#: actions/replies.php:204
@@ -3485,8 +3500,8 @@ msgstr ""
#: actions/replies.php:206
#, php-format
msgid ""
-"You can try to [nudge %1$s](../%2$s) or [post something to his or her "
-"attention](%%%%action.newnotice%%%%?status_textarea=%3$s)."
+"You can try to [nudge %1$s](../%2$s) or [post something to them](%%%%action."
+"newnotice%%%%?status_textarea=%3$s)."
msgstr ""
#: actions/repliesrss.php:72
@@ -3582,7 +3597,7 @@ msgstr "地點"
msgid "Description"
msgstr "所有訂閱"
-#: actions/showapplication.php:192 actions/showgroup.php:444
+#: actions/showapplication.php:192 actions/showgroup.php:436
#: lib/profileaction.php:187
msgid "Statistics"
msgstr ""
@@ -3667,16 +3682,16 @@ msgstr ""
#: actions/showfavorites.php:208
#, php-format
msgid ""
-"%s hasn't added any notices to his favorites yet. Post something interesting "
-"they would add to their favorites :)"
+"%s hasn't added any favorite notices yet. Post something interesting they "
+"would add to their favorites :)"
msgstr ""
#: actions/showfavorites.php:212
#, php-format
msgid ""
-"%s hasn't added any notices to his favorites yet. Why not [register an "
-"account](%%%%action.register%%%%) and then post something interesting they "
-"would add to their favorites :)"
+"%s hasn't added any favorite notices yet. Why not [register an account](%%%%"
+"action.register%%%%) and then post something interesting they would add to "
+"their favorites :)"
msgstr ""
#: actions/showfavorites.php:243
@@ -3736,7 +3751,7 @@ msgstr ""
msgid "FOAF for %s group"
msgstr "無此通知"
-#: actions/showgroup.php:393 actions/showgroup.php:453 lib/groupnav.php:91
+#: actions/showgroup.php:393 actions/showgroup.php:445 lib/groupnav.php:91
#, fuzzy
msgid "Members"
msgstr "何時加入會員的呢?"
@@ -3751,12 +3766,12 @@ msgstr ""
msgid "All members"
msgstr ""
-#: actions/showgroup.php:447
+#: actions/showgroup.php:439
#, fuzzy
msgid "Created"
msgstr "新增"
-#: actions/showgroup.php:463
+#: actions/showgroup.php:455
#, php-format
msgid ""
"**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3766,7 +3781,7 @@ msgid ""
"of this group and many more! ([Read more](%%%%doc.help%%%%))"
msgstr ""
-#: actions/showgroup.php:469
+#: actions/showgroup.php:461
#, php-format
msgid ""
"**%s** is a user group on %%%%site.name%%%%, a [micro-blogging](http://en."
@@ -3775,7 +3790,7 @@ msgid ""
"their life and interests. "
msgstr ""
-#: actions/showgroup.php:497
+#: actions/showgroup.php:489
msgid "Admins"
msgstr ""
@@ -3851,8 +3866,8 @@ msgstr ""
#: 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)."
+"You can try to nudge %1$s or [post something to them](%%%%action.newnotice%%%"
+"%?status_textarea=%2$s)."
msgstr ""
#: actions/showstream.php:243
@@ -4235,7 +4250,8 @@ msgstr "線上å³æ™‚通設定"
msgid "You are not subscribed to that profile."
msgstr ""
-#: actions/subedit.php:83 classes/Subscription.php:132
+#. TRANS: Exception thrown when a subscription could not be stored on the server.
+#: actions/subedit.php:83 classes/Subscription.php:136
#, fuzzy
msgid "Could not save subscription."
msgstr "註冊失敗"
@@ -4407,10 +4423,6 @@ msgstr ""
msgid "No such tag."
msgstr "無此通知"
-#: actions/twitapitrends.php:85
-msgid "API method under construction."
-msgstr ""
-
#: actions/unblock.php:59
#, fuzzy
msgid "You haven't blocked that user."
@@ -4703,159 +4715,256 @@ msgstr "地點"
msgid "Author(s)"
msgstr ""
-#: classes/File.php:185
+#. TRANS: Server exception thrown when a URL cannot be processed.
+#: classes/File.php:143
+#, php-format
+msgid "Cannot process URL '%s'"
+msgstr ""
+
+#. TRANS: Server exception thrown when... Robin thinks something is impossible!
+#: classes/File.php:175
+msgid "Robin thinks something is impossible."
+msgstr ""
+
+#. TRANS: Message given if an upload is larger than the configured maximum.
+#. TRANS: %1$d is the byte limit for uploads, %2$d is the byte count for the uploaded file.
+#: classes/File.php:190
#, php-format
msgid ""
-"No file may be larger than %d bytes and the file you sent was %d bytes. Try "
-"to upload a smaller version."
+"No file may be larger than %1$d bytes and the file you sent was %2$d bytes. "
+"Try to upload a smaller version."
msgstr ""
-#: classes/File.php:195
+#. TRANS: Message given if an upload would exceed user quota.
+#. TRANS: %d (number) is the user quota in bytes.
+#: classes/File.php:202
#, php-format
msgid "A file this large would exceed your user quota of %d bytes."
msgstr ""
-#: classes/File.php:202
+#. TRANS: Message given id an upload would exceed a user's monthly quota.
+#. TRANS: $d (number) is the monthly user quota in bytes.
+#: classes/File.php:211
#, php-format
msgid "A file this large would exceed your monthly quota of %d bytes."
msgstr ""
-#: classes/Group_member.php:41
+#. TRANS: Client exception thrown if a file upload does not have a valid name.
+#: classes/File.php:248 classes/File.php:263
+#, fuzzy
+msgid "Invalid filename."
+msgstr "尺寸錯誤"
+
+#. TRANS: Exception thrown when joining a group fails.
+#: classes/Group_member.php:42
#, fuzzy
msgid "Group join failed."
msgstr "無此通知"
-#: classes/Group_member.php:53
+#. TRANS: Exception thrown when trying to leave a group the user is not a member of.
+#: classes/Group_member.php:55
#, fuzzy
msgid "Not part of group."
msgstr "無法更新使用者"
-#: classes/Group_member.php:60
+#. TRANS: Exception thrown when trying to leave a group fails.
+#: classes/Group_member.php:63
#, fuzzy
msgid "Group leave failed."
msgstr "無此通知"
-#: classes/Local_group.php:41
+#. TRANS: Server exception thrown when updating a local group fails.
+#: classes/Local_group.php:42
#, fuzzy
msgid "Could not update local group."
msgstr "無法更新使用者"
-#: classes/Login_token.php:76
+#. TRANS: Exception thrown when trying creating a login token failed.
+#. TRANS: %s is the user nickname for which token creation failed.
+#: classes/Login_token.php:78
#, fuzzy, php-format
msgid "Could not create login token for %s"
msgstr "無法存å–個人圖åƒè³‡æ–™"
-#: classes/Message.php:45
+#. TRANS: Exception thrown when database name or Data Source Name could not be found.
+#: classes/Memcached_DataObject.php:533
+msgid "No database name or DSN found anywhere."
+msgstr ""
+
+#. TRANS: Client exception thrown when a user tries to send a direct message while being banned from sending them.
+#: classes/Message.php:46
msgid "You are banned from sending direct messages."
msgstr ""
-#: classes/Message.php:61
+#. TRANS: Message given when a message could not be stored on the server.
+#: classes/Message.php:63
msgid "Could not insert message."
msgstr ""
-#: classes/Message.php:71
+#. TRANS: Message given when a message could not be updated on the server.
+#: classes/Message.php:74
msgid "Could not update message with new URI."
msgstr ""
+#. TRANS: Server exception thrown when a user profile for a notice cannot be found.
+#. TRANS: %1$d is a profile ID (number), %2$d is a notice ID (number).
+#: classes/Notice.php:98
+#, php-format
+msgid "No such profile (%1$d) for notice (%2$d)."
+msgstr ""
+
#. TRANS: Server exception. %s are the error details.
-#: classes/Notice.php:182
+#: classes/Notice.php:190
#, fuzzy, php-format
msgid "Database error inserting hashtag: %s"
msgstr "增加回覆時,資料庫發生錯誤: %s"
-#: classes/Notice.php:251
+#. TRANS: Client exception thrown if a notice contains too many characters.
+#: classes/Notice.php:260
#, fuzzy
msgid "Problem saving notice. Too long."
msgstr "儲存使用者發生錯誤"
-#: classes/Notice.php:255
+#. TRANS: Client exception thrown when trying to save a notice for an unknown user.
+#: classes/Notice.php:265
#, fuzzy
msgid "Problem saving notice. Unknown user."
msgstr "儲存使用者發生錯誤"
-#: classes/Notice.php:260
+#. TRANS: Client exception thrown when a user tries to post too many notices in a given time frame.
+#: classes/Notice.php:271
msgid ""
"Too many notices too fast; take a breather and post again in a few minutes."
msgstr ""
-#: classes/Notice.php:266
+#. TRANS: Client exception thrown when a user tries to post too many duplicate notices in a given time frame.
+#: classes/Notice.php:278
msgid ""
"Too many duplicate messages too quickly; take a breather and post again in a "
"few minutes."
msgstr ""
-#: classes/Notice.php:272
+#. TRANS: Client exception thrown when a user tries to post while being banned.
+#: classes/Notice.php:286
msgid "You are banned from posting notices on this site."
msgstr ""
-#: classes/Notice.php:338 classes/Notice.php:364
+#. TRANS: Server exception thrown when a notice cannot be saved.
+#. TRANS: Server exception thrown when a notice cannot be updated.
+#: classes/Notice.php:353 classes/Notice.php:380
msgid "Problem saving notice."
msgstr ""
-#: classes/Notice.php:973
+#. TRANS: Server exception thrown when no array is provided to the method saveKnownGroups().
+#: classes/Notice.php:892
+msgid "Bad type provided to saveKnownGroups"
+msgstr ""
+
+#. TRANS: Server exception thrown when an update for a group inbox fails.
+#: classes/Notice.php:991
#, fuzzy
msgid "Problem saving group inbox."
msgstr "儲存使用者發生錯誤"
#. TRANS: Message used to repeat a notice. RT is the abbreviation of 'retweet'.
#. TRANS: %1$s is the repeated user's name, %2$s is the repeated notice.
-#: classes/Notice.php:1564
+#: classes/Notice.php:1614
#, php-format
msgid "RT @%1$s %2$s"
msgstr ""
-#: classes/Subscription.php:74 lib/oauthstore.php:465
+#. TRANS: Exception thrown when trying to revoke an existing role for a user that does not exist.
+#. TRANS: %1$s is the role name, %2$s is the user ID (number).
+#: classes/Profile.php:740
+#, php-format
+msgid "Cannot revoke role \"%1$s\" for user #%2$d; does not exist."
+msgstr ""
+
+#. TRANS: Exception thrown when trying to revoke a role for a user with a failing database query.
+#. TRANS: %1$s is the role name, %2$s is the user ID (number).
+#: classes/Profile.php:749
+#, php-format
+msgid "Cannot revoke role \"%1$s\" for user #%2$d; database error."
+msgstr ""
+
+#. TRANS: Exception thrown when a right for a non-existing user profile is checked.
+#: classes/Remote_profile.php:54
+#, fuzzy
+msgid "Missing profile."
+msgstr "無此通知"
+
+#. TRANS: Exception thrown when a tag cannot be saved.
+#: classes/Status_network.php:346
+#, fuzzy
+msgid "Unable to save tag."
+msgstr "新訊æ¯"
+
+#. TRANS: Exception thrown when trying to subscribe while being banned from subscribing.
+#: classes/Subscription.php:75 lib/oauthstore.php:465
msgid "You have been banned from subscribing."
msgstr ""
-#: classes/Subscription.php:78
+#. TRANS: Exception thrown when trying to subscribe while already subscribed.
+#: classes/Subscription.php:80
msgid "Already subscribed!"
msgstr ""
-#: classes/Subscription.php:82
+#. TRANS: Exception thrown when trying to subscribe to a user who has blocked the subscribing user.
+#: classes/Subscription.php:85
msgid "User has blocked you."
msgstr ""
-#: classes/Subscription.php:167
+#. TRANS: Exception thrown when trying to unsibscribe without a subscription.
+#: classes/Subscription.php:171
#, fuzzy
msgid "Not subscribed!"
msgstr "此帳號已註冊"
-#: classes/Subscription.php:173
+#. TRANS: Exception thrown when trying to unsubscribe a user from themselves.
+#: classes/Subscription.php:178
#, fuzzy
-msgid "Couldn't delete self-subscription."
+msgid "Could not delete self-subscription."
msgstr "無法刪除帳號"
-#: classes/Subscription.php:200
+#. TRANS: Exception thrown when the OMB token for a subscription could not deleted on the server.
+#: classes/Subscription.php:206
#, fuzzy
-msgid "Couldn't delete subscription OMB token."
+msgid "Could not delete subscription OMB token."
msgstr "無法刪除帳號"
-#: classes/Subscription.php:211
-msgid "Couldn't delete subscription."
+#. TRANS: Exception thrown when a subscription could not be deleted on the server.
+#: classes/Subscription.php:218
+#, fuzzy
+msgid "Could not delete subscription."
msgstr "無法刪除帳號"
-#: classes/User.php:363
+#. TRANS: Notice given on user registration.
+#. TRANS: %1$s is the sitename, $2$s is the registering user's nickname.
+#: classes/User.php:365
#, php-format
msgid "Welcome to %1$s, @%2$s!"
msgstr ""
-#: classes/User_group.php:480
+#. TRANS: Server exception thrown when creating a group failed.
+#: classes/User_group.php:496
#, fuzzy
msgid "Could not create group."
msgstr "無法存å–個人圖åƒè³‡æ–™"
-#: classes/User_group.php:489
+#. TRANS: Server exception thrown when updating a group URI failed.
+#: classes/User_group.php:506
#, fuzzy
msgid "Could not set group URI."
msgstr "註冊失敗"
-#: classes/User_group.php:510
+#. TRANS: Server exception thrown when setting group membership failed.
+#: classes/User_group.php:529
#, fuzzy
msgid "Could not set group membership."
msgstr "註冊失敗"
-#: classes/User_group.php:524
+#. TRANS: Server exception thrown when saving local group information failed.
+#: classes/User_group.php:544
#, fuzzy
msgid "Could not save local group info."
msgstr "註冊失敗"
@@ -6214,7 +6323,7 @@ msgid ""
"users in conversation. People can send you messages for your eyes only."
msgstr ""
-#: lib/mailbox.php:227 lib/noticelist.php:497
+#: lib/mailbox.php:227 lib/noticelist.php:505
msgid "from"
msgstr ""
@@ -6269,25 +6378,25 @@ msgstr ""
msgid "File upload stopped by extension."
msgstr ""
-#: lib/mediafile.php:179 lib/mediafile.php:216
+#: lib/mediafile.php:179 lib/mediafile.php:217
msgid "File exceeds user's quota."
msgstr ""
-#: lib/mediafile.php:196 lib/mediafile.php:233
+#: lib/mediafile.php:197 lib/mediafile.php:234
msgid "File could not be moved to destination directory."
msgstr ""
-#: lib/mediafile.php:201 lib/mediafile.php:237
+#: lib/mediafile.php:202 lib/mediafile.php:238
#, fuzzy
msgid "Could not determine file's MIME type."
msgstr "無法更新使用者"
-#: lib/mediafile.php:270
+#: lib/mediafile.php:318
#, php-format
msgid " Try using another %s format."
msgstr ""
-#: lib/mediafile.php:275
+#: lib/mediafile.php:323
#, php-format
msgid "%s is not a supported file type on this server."
msgstr ""
@@ -6345,53 +6454,53 @@ msgid ""
msgstr ""
#. TRANS: Used in coordinates as abbreviation of north
-#: lib/noticelist.php:430
+#: lib/noticelist.php:436
msgid "N"
msgstr ""
#. TRANS: Used in coordinates as abbreviation of south
-#: lib/noticelist.php:432
+#: lib/noticelist.php:438
msgid "S"
msgstr ""
#. TRANS: Used in coordinates as abbreviation of east
-#: lib/noticelist.php:434
+#: lib/noticelist.php:440
msgid "E"
msgstr ""
#. TRANS: Used in coordinates as abbreviation of west
-#: lib/noticelist.php:436
+#: lib/noticelist.php:442
msgid "W"
msgstr ""
-#: lib/noticelist.php:438
+#: lib/noticelist.php:444
#, php-format
msgid "%1$u°%2$u'%3$u\"%4$s %5$u°%6$u'%7$u\"%8$s"
msgstr ""
-#: lib/noticelist.php:447
+#: lib/noticelist.php:453
msgid "at"
msgstr ""
-#: lib/noticelist.php:559
+#: lib/noticelist.php:567
#, fuzzy
msgid "in context"
msgstr "無內容"
-#: lib/noticelist.php:594
+#: lib/noticelist.php:602
#, fuzzy
msgid "Repeated by"
msgstr "新增"
-#: lib/noticelist.php:621
+#: lib/noticelist.php:629
msgid "Reply to this notice"
msgstr ""
-#: lib/noticelist.php:622
+#: lib/noticelist.php:630
msgid "Reply"
msgstr ""
-#: lib/noticelist.php:666
+#: lib/noticelist.php:674
#, fuzzy
msgid "Notice repeated"
msgstr "更新個人圖åƒ"
@@ -6658,7 +6767,7 @@ msgid "This server cannot handle theme uploads without ZIP support."
msgstr ""
#: lib/themeuploader.php:58 lib/themeuploader.php:61
-msgid "Theme upload missing or failed."
+msgid "The theme file is missing or the upload failed."
msgstr ""
#: lib/themeuploader.php:91 lib/themeuploader.php:102
diff --git a/plugins/Adsense/AdsensePlugin.php b/plugins/Adsense/AdsensePlugin.php
index ab2b9a6fb..cd6fc3503 100644
--- a/plugins/Adsense/AdsensePlugin.php
+++ b/plugins/Adsense/AdsensePlugin.php
@@ -83,6 +83,21 @@ class AdsensePlugin extends UAPPlugin
public $adScript = 'http://pagead2.googlesyndication.com/pagead/show_ads.js';
public $client = null;
+ function initialize()
+ {
+ parent::initialize();
+
+ // A little bit of chicanery so we avoid overwriting values that
+ // are passed in with the constructor
+
+ foreach (array('mediumRectangle', 'rectangle', 'leaderboard', 'wideSkyscraper', 'adScript', 'client') as $setting) {
+ $value = common_config('adsense', strtolower($setting));
+ if (!empty($value)) { // not found
+ $this->$setting = $value;
+ }
+ }
+ }
+
/**
* Show a medium rectangle 'ad'
*
@@ -157,4 +172,37 @@ class AdsensePlugin extends UAPPlugin
$action->script($this->adScript);
}
+
+ function onRouterInitialized($m)
+ {
+ $m->connect('admin/adsense',
+ array('action' => 'adsenseadminpanel'));
+
+ return true;
+ }
+
+ function onAutoload($cls)
+ {
+ $dir = dirname(__FILE__);
+
+ switch ($cls)
+ {
+ case 'AdsenseadminpanelAction':
+ require_once $dir . '/' . strtolower(mb_substr($cls, 0, -6)) . '.php';
+ return false;
+ default:
+ return true;
+ }
+ }
+
+ function onEndAdminPanelNav($menu) {
+ if (AdminPanelAction::canAdmin('adsense')) {
+ // TRANS: Menu item title/tooltip
+ $menu_title = _('Adsense configuration');
+ // TRANS: Menu item for site administration
+ $menu->out->menuItem(common_local_url('adsenseadminpanel'), _('Adsense'),
+ $menu_title, $action_name == 'adsenseadminpanel', 'nav_adsense_admin_panel');
+ }
+ return true;
+ }
} \ No newline at end of file
diff --git a/plugins/Adsense/adsenseadminpanel.php b/plugins/Adsense/adsenseadminpanel.php
new file mode 100644
index 000000000..7b99cf805
--- /dev/null
+++ b/plugins/Adsense/adsenseadminpanel.php
@@ -0,0 +1,223 @@
+<?php
+/**
+ * StatusNet, the distributed open-source microblogging tool
+ *
+ * Adsense administration panel
+ *
+ * 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 Adsense
+ * @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);
+}
+
+/**
+ * Administer adsense settings
+ *
+ * @category Adsense
+ * @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 AdsenseadminpanelAction extends AdminPanelAction
+{
+ /**
+ * Returns the page title
+ *
+ * @return string page title
+ */
+
+ function title()
+ {
+ return _('Adsense');
+ }
+
+ /**
+ * Instructions for using this form.
+ *
+ * @return string instructions
+ */
+
+ function getInstructions()
+ {
+ return _('Adsense settings for this StatusNet site');
+ }
+
+ /**
+ * Show the site admin panel form
+ *
+ * @return void
+ */
+
+ function showForm()
+ {
+ $form = new AdsenseAdminPanelForm($this);
+ $form->show();
+ return;
+ }
+
+ /**
+ * Save settings from the form
+ *
+ * @return void
+ */
+
+ function saveSettings()
+ {
+ static $settings = array('adsense' => array('adScript', 'client', 'mediumRectangle', 'rectangle', 'leaderboard', 'wideSkyscraper'));
+
+ $values = array();
+
+ foreach ($settings as $section => $parts) {
+ foreach ($parts as $setting) {
+ $values[$section][$setting] = $this->trimmed($setting);
+ }
+ }
+
+ // This throws an exception on validation errors
+
+ $this->validate($values);
+
+ // assert(all values are valid);
+
+ $config = new Config();
+
+ $config->query('BEGIN');
+
+ foreach ($settings as $section => $parts) {
+ foreach ($parts as $setting) {
+ Config::save($section, $setting, $values[$section][$setting]);
+ }
+ }
+
+ $config->query('COMMIT');
+
+ return;
+ }
+
+ function validate(&$values)
+ {
+ }
+}
+
+/**
+ * Form for the adsense admin panel
+ */
+
+class AdsenseAdminPanelForm extends AdminForm
+{
+ /**
+ * ID of the form
+ *
+ * @return int ID of the form
+ */
+
+ function id()
+ {
+ return 'form_adsense_admin_panel';
+ }
+
+ /**
+ * class of the form
+ *
+ * @return string class of the form
+ */
+
+ function formClass()
+ {
+ return 'form_adsense';
+ }
+
+ /**
+ * Action of the form
+ *
+ * @return string URL of the action
+ */
+
+ function action()
+ {
+ return common_local_url('adsenseadminpanel');
+ }
+
+ /**
+ * Data elements of the form
+ *
+ * @return void
+ */
+
+ function formData()
+ {
+ $this->out->elementStart('fieldset', array('id' => 'adsense_admin'));
+ $this->out->elementStart('ul', 'form_data');
+ $this->li();
+ $this->input('client',
+ _('Client ID'),
+ _('Google client ID'),
+ 'adsense');
+ $this->unli();
+ $this->li();
+ $this->input('adScript',
+ _('Ad Script URL'),
+ _('Script URL (advanced)'),
+ 'adsense');
+ $this->unli();
+ $this->li();
+ $this->input('mediumRectangle',
+ _('Medium rectangle'),
+ _('Medium rectangle slot code'),
+ 'adsense');
+ $this->unli();
+ $this->li();
+ $this->input('rectangle',
+ _('Rectangle'),
+ _('Rectangle slot code'),
+ 'adsense');
+ $this->unli();
+ $this->li();
+ $this->input('leaderboard',
+ _('Leaderboard'),
+ _('Leaderboard slot code'),
+ 'adsense');
+ $this->unli();
+ $this->li();
+ $this->input('wideSkyscraper',
+ _('Skyscraper'),
+ _('Wide skyscraper slot code'),
+ 'adsense');
+ $this->unli();
+ $this->out->elementEnd('ul');
+ }
+
+ /**
+ * Action elements
+ *
+ * @return void
+ */
+
+ function formActions()
+ {
+ $this->out->submit('submit', _('Save'), 'submit', null, _('Save AdSense settings'));
+ }
+}
diff --git a/plugins/MobileProfile/mp-screen.css b/plugins/MobileProfile/mp-screen.css
index 0fc801612..1f70b5612 100644
--- a/plugins/MobileProfile/mp-screen.css
+++ b/plugins/MobileProfile/mp-screen.css
@@ -2,7 +2,7 @@
*
* @package StatusNet
* @author Sarven Capadisli <csarven@status.net>
- * @copyright 2009 StatusNet, Inc.
+ * @copyright 2009-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/
*/
@@ -195,10 +195,6 @@ width:43px;
margin-right:1%;
}
-.notice-options form {
-width:16px;
-height:16px;
-}
.notice-options form.processing {
background-image:none;
}
diff --git a/plugins/OStatus/OStatusPlugin.php b/plugins/OStatus/OStatusPlugin.php
index c61e2cc5f..70971c5b3 100644
--- a/plugins/OStatus/OStatusPlugin.php
+++ b/plugins/OStatus/OStatusPlugin.php
@@ -158,6 +158,9 @@ class OStatusPlugin extends Plugin
// Also, we'll add in the salmon link
$salmon = common_local_url($salmonAction, array('id' => $id));
+ $feed->addLink($salmon, array('rel' => Salmon::REL_SALMON));
+
+ // XXX: these are deprecated
$feed->addLink($salmon, array('rel' => Salmon::NS_REPLIES));
$feed->addLink($salmon, array('rel' => Salmon::NS_MENTIONS));
}
@@ -953,4 +956,16 @@ class OStatusPlugin extends Plugin
}
return false;
}
+
+ public function onStartProfileGetAtomFeed($profile, &$feed)
+ {
+ $oprofile = Ostatus_profile::staticGet('profile_id', $profile->id);
+
+ if (empty($oprofile)) {
+ return true;
+ }
+
+ $feed = $oprofile->feeduri;
+ return false;
+ }
}
diff --git a/plugins/OStatus/actions/hostmeta.php b/plugins/OStatus/actions/hostmeta.php
index 6d35ada6c..8ca07f916 100644
--- a/plugins/OStatus/actions/hostmeta.php
+++ b/plugins/OStatus/actions/hostmeta.php
@@ -36,13 +36,12 @@ class HostMetaAction extends Action
$url.= '?uri={uri}';
$xrd = new XRD();
-
- $xrd = new XRD();
$xrd->host = $domain;
$xrd->links[] = array('rel' => Discovery::LRDD_REL,
'template' => $url,
'title' => array('Resource Descriptor'));
+ header('Content-type: application/xrd+xml');
print $xrd->toXML();
}
}
diff --git a/plugins/OStatus/actions/ostatusgroup.php b/plugins/OStatus/actions/ostatusgroup.php
index f325ba053..1b368de63 100644
--- a/plugins/OStatus/actions/ostatusgroup.php
+++ b/plugins/OStatus/actions/ostatusgroup.php
@@ -104,7 +104,7 @@ class OStatusGroupAction extends OStatusSubAction
}
$this->showEntity($group,
- $group->getProfileUrl(),
+ $group->homeUrl(),
$group->homepage_logo,
$group->description);
return $ok;
diff --git a/plugins/OStatus/lib/hubprepqueuehandler.php b/plugins/OStatus/lib/hubprepqueuehandler.php
new file mode 100644
index 000000000..0d585938f
--- /dev/null
+++ b/plugins/OStatus/lib/hubprepqueuehandler.php
@@ -0,0 +1,87 @@
+<?php
+/*
+ * StatusNet - the distributed open-source microblogging tool
+ * Copyright (C) 2010, StatusNet, Inc.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/**
+ * When we have a large batch of PuSH consumers, we break the data set
+ * into smaller chunks. Enqueue final destinations...
+ *
+ * @package Hub
+ * @author Brion Vibber <brion@status.net>
+ */
+class HubPrepQueueHandler extends QueueHandler
+{
+ // Enqueue this many low-level distributions before re-queueing the rest
+ // of the batch to be processed later. Helps to keep latency down for other
+ // things happening during a particularly long OStatus delivery session.
+ //
+ // [Could probably ditch this if we had working message delivery priorities
+ // for queueing, but this isn't supported in ActiveMQ 5.3.]
+ const ROLLING_BATCH = 20;
+
+ function transport()
+ {
+ return 'hubprep';
+ }
+
+ function handle($data)
+ {
+ $topic = $data['topic'];
+ $atom = $data['atom'];
+ $pushCallbacks = $data['pushCallbacks'];
+
+ assert(is_string($atom));
+ assert(is_string($topic));
+ assert(is_array($pushCallbacks));
+
+ // Set up distribution for the first n subscribing sites...
+ // If we encounter an uncatchable error, queue handling should
+ // automatically re-run the batch, which could lead to some dupe
+ // distributions.
+ //
+ // Worst case is if one of these hubprep entries dies too many
+ // times and gets dropped; the rest of the batch won't get processed.
+ try {
+ $n = 0;
+ while (count($pushCallbacks) && $n < self::ROLLING_BATCH) {
+ $n++;
+ $callback = array_shift($pushCallbacks);
+ $sub = HubSub::staticGet($topic, $callback);
+ if (!$sub) {
+ common_log(LOG_ERR, "Skipping PuSH delivery for deleted(?) consumer $callback on $topic");
+ continue;
+ }
+
+ $sub->distribute($atom);
+ }
+ } catch (Exception $e) {
+ common_log(LOG_ERR, "Exception during PuSH batch out: " .
+ $e->getMessage() .
+ " prepping $topic to $callback");
+ }
+
+ // And re-queue the rest of the batch!
+ if (count($pushCallbacks) > 0) {
+ $sub = new HubSub();
+ $sub->topic = $topic;
+ $sub->bulkDistribute($atom, $pushCallbacks);
+ }
+
+ return true;
+ }
+}
diff --git a/plugins/OStatus/lib/magicenvelope.php b/plugins/OStatus/lib/magicenvelope.php
index f39686b71..3bdf24b31 100644
--- a/plugins/OStatus/lib/magicenvelope.php
+++ b/plugins/OStatus/lib/magicenvelope.php
@@ -97,24 +97,18 @@ class MagicEnvelope
}
public function toXML($env) {
- $dom = new DOMDocument();
-
- $envelope = $dom->createElementNS(MagicEnvelope::NS, 'me:env');
- $envelope->setAttribute('xmlns:me', MagicEnvelope::NS);
- $data = $dom->createElementNS(MagicEnvelope::NS, 'me:data', $env['data']);
- $data->setAttribute('type', $env['data_type']);
- $envelope->appendChild($data);
- $enc = $dom->createElementNS(MagicEnvelope::NS, 'me:encoding', $env['encoding']);
- $envelope->appendChild($enc);
- $alg = $dom->createElementNS(MagicEnvelope::NS, 'me:alg', $env['alg']);
- $envelope->appendChild($alg);
- $sig = $dom->createElementNS(MagicEnvelope::NS, 'me:sig', $env['sig']);
- $envelope->appendChild($sig);
-
- $dom->appendChild($envelope);
+ $xs = new XMLStringer();
+ $xs->startXML();
+ $xs->elementStart('me:env', array('xmlns:me' => MagicEnvelope::NS));
+ $xs->element('me:data', array('type' => $env['data_type']), $env['data']);
+ $xs->element('me:encoding', null, $env['encoding']);
+ $xs->element('me:alg', null, $env['alg']);
+ $xs->element('me:sig', null, $env['sig']);
+ $xs->elementEnd('me:env');
-
- return $dom->saveXML();
+ $string = $xs->getString();
+ common_debug($string);
+ return $string;
}
diff --git a/plugins/OStatus/lib/salmon.php b/plugins/OStatus/lib/salmon.php
index 3d3341bc6..ef7719a40 100644
--- a/plugins/OStatus/lib/salmon.php
+++ b/plugins/OStatus/lib/salmon.php
@@ -28,9 +28,11 @@
*/
class Salmon
{
+ const REL_SALMON = 'salmon';
+ const REL_MENTIONED = 'mentioned';
+ // XXX: these are deprecated
const NS_REPLIES = "http://salmon-protocol.org/ns/salmon-replies";
-
const NS_MENTIONS = "http://salmon-protocol.org/ns/salmon-mention";
/**
diff --git a/plugins/OStatus/lib/xrd.php b/plugins/OStatus/lib/xrd.php
index 34b28790b..a10b9f427 100644
--- a/plugins/OStatus/lib/xrd.php
+++ b/plugins/OStatus/lib/xrd.php
@@ -106,44 +106,43 @@ class XRD
public function toXML()
{
- $dom = new DOMDocument('1.0', 'UTF-8');
- $dom->formatOutput = true;
-
- $xrd_dom = $dom->createElementNS(XRD::XRD_NS, 'XRD');
- $dom->appendChild($xrd_dom);
+ $xs = new XMLStringer();
+
+ $xs->startXML();
+ $xs->elementStart('XRD', array('xmlns' => XRD::XRD_NS));
if ($this->host) {
- $host_dom = $dom->createElement('hm:Host', $this->host);
- $xrd_dom->setAttributeNS(XRD::XML_NS, 'xmlns:hm', XRD::HOST_META_NS);
- $xrd_dom->appendChild($host_dom);
+ $xs->element('hm:Host', array('xmlns:hm' => XRD::HOST_META_NS), $this->host);
}
- if ($this->expires) {
- $expires_dom = $dom->createElement('Expires', $this->expires);
- $xrd_dom->appendChild($expires_dom);
- }
-
- if ($this->subject) {
- $subject_dom = $dom->createElement('Subject', $this->subject);
- $xrd_dom->appendChild($subject_dom);
- }
-
- foreach ($this->alias as $alias) {
- $alias_dom = $dom->createElement('Alias', $alias);
- $xrd_dom->appendChild($alias_dom);
- }
-
- foreach ($this->types as $type) {
- $type_dom = $dom->createElement('Type', $type);
- $xrd_dom->appendChild($type_dom);
- }
-
- foreach ($this->links as $link) {
- $link_dom = $this->saveLink($dom, $link);
- $xrd_dom->appendChild($link_dom);
- }
-
- return $dom->saveXML();
+ if ($this->expires) {
+ $xs->element('Expires', null, $this->expires);
+ }
+
+ if ($this->subject) {
+ $xs->element('Subject', null, $this->subject);
+ }
+
+ foreach ($this->alias as $alias) {
+ $xs->element('Alias', null, $alias);
+ }
+
+ foreach ($this->links as $link) {
+ $titles = array();
+ if (isset($link['title'])) {
+ $titles = $link['title'];
+ unset($link['title']);
+ }
+ $xs->elementStart('Link', $link);
+ foreach ($titles as $title) {
+ $xs->element('Title', null, $title);
+ }
+ $xs->elementEnd('Link');
+ }
+
+ $xs->elementEnd('XRD');
+
+ return $xs->getString();
}
function parseType($element)
@@ -169,32 +168,5 @@ class XRD
return $link;
}
-
- function saveLink($doc, $link)
- {
- $link_element = $doc->createElement('Link');
- if (!empty($link['rel'])) {
- $link_element->setAttribute('rel', $link['rel']);
- }
- if (!empty($link['type'])) {
- $link_element->setAttribute('type', $link['type']);
- }
- if (!empty($link['href'])) {
- $link_element->setAttribute('href', $link['href']);
- }
- if (!empty($link['template'])) {
- $link_element->setAttribute('template', $link['template']);
- }
-
- if (!empty($link['title']) && is_array($link['title'])) {
- foreach($link['title'] as $title) {
- $title = $doc->createElement('Title', $title);
- $link_element->appendChild($title);
- }
- }
-
-
- return $link_element;
- }
}
diff --git a/plugins/OStatus/lib/xrdaction.php b/plugins/OStatus/lib/xrdaction.php
index f1a56e0a8..d8cf648d6 100644
--- a/plugins/OStatus/lib/xrdaction.php
+++ b/plugins/OStatus/lib/xrdaction.php
@@ -76,6 +76,9 @@ class XrdAction extends Action
$salmon_url = common_local_url('usersalmon',
array('id' => $this->user->id));
+ $xrd->links[] = array('rel' => Salmon::REL_SALMON,
+ 'href' => $salmon_url);
+ // XXX : Deprecated - to be removed.
$xrd->links[] = array('rel' => Salmon::NS_REPLIES,
'href' => $salmon_url);
@@ -98,7 +101,7 @@ class XrdAction extends Action
$xrd->links[] = array('rel' => 'http://ostatus.org/schema/1.0/subscribe',
'template' => $url );
- header('Content-type: text/xml');
+ header('Content-type: application/xrd+xml');
print $xrd->toXML();
}
diff --git a/plugins/Sitemap/SitemapPlugin.php b/plugins/Sitemap/SitemapPlugin.php
index d4d295237..b6d3b1ad3 100644
--- a/plugins/Sitemap/SitemapPlugin.php
+++ b/plugins/Sitemap/SitemapPlugin.php
@@ -202,6 +202,12 @@ class SitemapPlugin extends Plugin
null, false),
new ColumnDef('modified', 'timestamp')));
+ $userCreated = $schema->getColumnDef('user', 'created');
+
+ if (empty($userCreated) || $userCreated->key != 'MUL') {
+ $schema->createIndex('user', 'created');
+ }
+
return true;
}
diff --git a/plugins/Sitemap/Sitemap_notice_count.php b/plugins/Sitemap/Sitemap_notice_count.php
index 2a375b3e4..6e0061e97 100644
--- a/plugins/Sitemap/Sitemap_notice_count.php
+++ b/plugins/Sitemap/Sitemap_notice_count.php
@@ -153,7 +153,9 @@ class Sitemap_notice_count extends Memcached_DataObject
$noticeCounts[$snc->notice_date] = $snc->notice_count;
}
- self::cacheSet('sitemap:notice:counts', $noticeCounts);
+ // Cache notice counts for 4 hours.
+
+ self::cacheSet('sitemap:notice:counts', $noticeCounts, null, time() + 4 * 60 * 60);
}
return $noticeCounts;
diff --git a/plugins/Sitemap/Sitemap_user_count.php b/plugins/Sitemap/Sitemap_user_count.php
index 64b4c3442..98dd05bfe 100644
--- a/plugins/Sitemap/Sitemap_user_count.php
+++ b/plugins/Sitemap/Sitemap_user_count.php
@@ -154,7 +154,9 @@ class Sitemap_user_count extends Memcached_DataObject
$userCounts[$suc->registration_date] = $suc->user_count;
}
- self::cacheSet('sitemap:user:counts', $userCounts);
+ // Cache user counts for 4 hours.
+
+ self::cacheSet('sitemap:user:counts', $userCounts, null, time() + 4 * 60 * 60);
}
return $userCounts;
diff --git a/plugins/Sitemap/scripts/updatecounts.php b/plugins/Sitemap/scripts/updatecounts.php
new file mode 100644
index 000000000..91bc0ac4e
--- /dev/null
+++ b/plugins/Sitemap/scripts/updatecounts.php
@@ -0,0 +1,36 @@
+#!/usr/bin/env php
+<?php
+/*
+ * StatusNet - a distributed open-source microblogging tool
+ * Copyright (C) 2010, StatusNet, Inc.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+define('INSTALLDIR', realpath(dirname(__FILE__) . '/../../..'));
+
+$helptext = <<<END_OF_UPDATECOUNTS_HELP
+updatecounts.php [options]
+Update the notice and user counts cached in the database.
+
+END_OF_UPDATECOUNTS_HELP;
+
+require_once INSTALLDIR.'/scripts/commandline.inc';
+
+// Will fill the cache
+
+$userCounts = Sitemap_user_count::getAll();
+$noticeCounts = Sitemap_notice_count::getAll();
+
+echo "Done.\n";
diff --git a/plugins/TwitterBridge/TwitterBridgePlugin.php b/plugins/TwitterBridge/TwitterBridgePlugin.php
index 65b3a6b38..0505a328f 100644
--- a/plugins/TwitterBridge/TwitterBridgePlugin.php
+++ b/plugins/TwitterBridge/TwitterBridgePlugin.php
@@ -50,6 +50,7 @@ class TwitterBridgePlugin extends Plugin
{
const VERSION = STATUSNET_VERSION;
+ public $adminImportControl = false; // Should the 'import' checkbox be exposed in the admin panel?
/**
* Initializer for the plugin.
@@ -322,5 +323,17 @@ class TwitterBridgePlugin extends Plugin
return true;
}
+ /**
+ * Expose the adminImportControl setting to the administration panel code.
+ * This allows us to disable the import bridge enabling checkbox for administrators,
+ * since on a bulk farm site we can't yet automate the import daemon setup.
+ *
+ * @return boolean hook value;
+ */
+ function onTwitterBridgeAdminImportControl()
+ {
+ return (bool)$this->adminImportControl;
+ }
+
}
diff --git a/plugins/TwitterBridge/twitter.php b/plugins/TwitterBridge/twitter.php
index 896eee2da..306ba2442 100644
--- a/plugins/TwitterBridge/twitter.php
+++ b/plugins/TwitterBridge/twitter.php
@@ -75,8 +75,6 @@ function save_twitter_user($twitter_id, $screen_name)
if (!empty($fuser)) {
- $result = true;
-
// Delete old record if Twitter user changed screen name
if ($fuser->nickname != $screen_name) {
@@ -88,6 +86,25 @@ function save_twitter_user($twitter_id, $screen_name)
$screen_name,
$oldname));
}
+
+ } else {
+
+ // Kill any old, invalid records for this screen name
+
+ $fuser = Foreign_user::getByNickname($screen_name, TWITTER_SERVICE);
+
+ if (!empty($fuser)) {
+ $fuser->delete();
+ common_log(
+ LOG_INFO,
+ sprintf(
+ 'Twitter bridge - deteted old record for Twitter ' .
+ 'screen name "%s" belonging to Twitter ID %d.',
+ $screen_name,
+ $fuser->id
+ )
+ );
+ }
}
return add_twitter_user($twitter_id, $screen_name);
diff --git a/plugins/TwitterBridge/twitteradminpanel.php b/plugins/TwitterBridge/twitteradminpanel.php
index a78a92c66..69f8da078 100644
--- a/plugins/TwitterBridge/twitteradminpanel.php
+++ b/plugins/TwitterBridge/twitteradminpanel.php
@@ -92,9 +92,11 @@ class TwitteradminpanelAction extends AdminPanelAction
);
static $booleans = array(
- 'twitter' => array('signin'),
- 'twitterimport' => array('enabled')
+ 'twitter' => array('signin')
);
+ if (Event::handle('TwitterBridgeAdminImportControl')) {
+ $booleans['twitterimport'] = array('enabled');
+ }
$values = array();
@@ -155,6 +157,13 @@ class TwitteradminpanelAction extends AdminPanelAction
);
}
}
+
+ function isImportEnabled()
+ {
+ // Since daemon setup isn't automated yet...
+ // @todo: if merged into main queues, detect presence of daemon config
+ return true;
+ }
}
class TwitterAdminPanelForm extends AdminForm
@@ -263,13 +272,15 @@ class TwitterAdminPanelForm extends AdminForm
);
$this->unli();
- $this->li();
- $this->out->checkbox(
- 'enabled', _m('Enable Twitter import'),
- (bool) $this->value('enabled', 'twitterimport'),
- _m('Allow users to import their Twitter friends\' timelines')
- );
- $this->unli();
+ if (Event::handle('TwitterBridgeAdminImportControl')) {
+ $this->li();
+ $this->out->checkbox(
+ 'enabled', _m('Enable Twitter import'),
+ (bool) $this->value('enabled', 'twitterimport'),
+ _m('Allow users to import their Twitter friends\' timelines. Requires daemons to be manually configured.')
+ );
+ $this->unli();
+ }
$this->out->elementEnd('ul');
diff --git a/scripts/fixup_status_network.php b/scripts/fixup_status_network.php
new file mode 100644
index 000000000..def1eaa88
--- /dev/null
+++ b/scripts/fixup_status_network.php
@@ -0,0 +1,37 @@
+#!/usr/bin/env php
+<?php
+/*
+ * StatusNet - the distributed open-source microblogging tool
+ * Copyright (C) 2008, 2009, StatusNet, Inc.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+define('INSTALLDIR', realpath(dirname(__FILE__) . '/..'));
+
+require_once INSTALLDIR.'/scripts/commandline.inc';
+
+common_log(LOG_INFO, 'Beginning status_network conversion...');
+
+$sn = new Status_network();
+$sn->find();
+while ($sn->fetch()) {
+ try {
+ $sn->setTags(explode('|', $sn->tags));
+ } catch (Exception $e) {
+ common_log(LOG_ERR, $e->getMessage());
+ }
+}
+
+common_log(LOG_INFO, 'Completed status_network conversion...');
diff --git a/scripts/settag.php b/scripts/settag.php
index d1b06ff10..ca260f7bf 100644
--- a/scripts/settag.php
+++ b/scripts/settag.php
@@ -39,11 +39,10 @@ if (count($args) < 1) {
}
$nickname = $args[0];
-
$sn = Status_network::memGet('nickname', $nickname);
if (empty($sn)) {
- print "No such site.\n";
+ print "No such site ($nickname).\n";
exit(-1);
}
@@ -54,16 +53,13 @@ if (count($args) == 1) {
exit(0);
}
$tag = $args[1];
-
$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);
+ $result = $sn->setTags($tags);
if (!$result) {
print "Couldn't update.\n";
exit(-1);
@@ -78,9 +74,7 @@ if ($i !== false) {
exit(-1);
} else {
$tags[] = $tag;
- $orig = clone($sn);
- $sn->tags = implode('|', $tags);
- $result = $sn->update($orig);
+ $result = $sn->setTags($tags);
if (!$result) {
print "Couldn't update.\n";
exit(-1);
diff --git a/scripts/setup_status_network.sh b/scripts/setup_status_network.sh
index 4ebb696c7..3dd739030 100755
--- a/scripts/setup_status_network.sh
+++ b/scripts/setup_status_network.sh
@@ -44,8 +44,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, tags)
-VALUES ('$nickname', '$DBHOSTNAME', '$username', '$password', '$database', '$sitename', now(), '$tags');
+INSERT INTO status_network (nickname, dbhost, dbuser, dbpass, dbname, sitename, created)
+VALUES ('$nickname', '$DBHOSTNAME', '$username', '$password', '$database', '$sitename', now());
ENDOFCOMMANDS
@@ -56,6 +56,8 @@ done
php $PHPBASE/scripts/checkschema.php -s"$server"
+php $PHPBASE/scripts/settag.php -s"$server" "$nickname" "$tags"
+
php $PHPBASE/scripts/registeruser.php \
-s"$server" \
-n"$nickname" \
diff --git a/tests/ActivityGenerationTests.php b/tests/ActivityGenerationTests.php
new file mode 100644
index 000000000..b9e74a570
--- /dev/null
+++ b/tests/ActivityGenerationTests.php
@@ -0,0 +1,592 @@
+<?php
+
+if (isset($_SERVER) && array_key_exists('REQUEST_METHOD', $_SERVER)) {
+ print "This script must be run from the command line\n";
+ exit();
+}
+
+// XXX: we should probably have some common source for this stuff
+
+define('INSTALLDIR', realpath(dirname(__FILE__) . '/..'));
+define('STATUSNET', true);
+
+require_once INSTALLDIR . '/lib/common.php';
+
+class ActivityGenerationTests extends PHPUnit_Framework_TestCase
+{
+ var $author1 = null;
+ var $author2 = null;
+
+ var $targetUser1 = null;
+ var $targetUser2 = null;
+
+ var $targetGroup1 = null;
+ var $targetGroup2 = null;
+
+ function __construct()
+ {
+ parent::__construct();
+
+ $authorNick1 = 'activitygenerationtestsuser' . common_good_rand(4);
+ $authorNick2 = 'activitygenerationtestsuser' . common_good_rand(4);
+
+ $targetNick1 = 'activitygenerationteststarget' . common_good_rand(4);
+ $targetNick2 = 'activitygenerationteststarget' . common_good_rand(4);
+
+ $groupNick1 = 'activitygenerationtestsgroup' . common_good_rand(4);
+ $groupNick2 = 'activitygenerationtestsgroup' . common_good_rand(4);
+
+ $this->author1 = User::register(array('nickname' => $authorNick1,
+ 'email' => $authorNick1 . '@example.net',
+ 'email_confirmed' => true));
+
+ $this->author2 = User::register(array('nickname' => $authorNick2,
+ 'email' => $authorNick2 . '@example.net',
+ 'email_confirmed' => true));
+
+ $this->targetUser1 = User::register(array('nickname' => $targetNick1,
+ 'email' => $targetNick1 . '@example.net',
+ 'email_confirmed' => true));
+
+ $this->targetUser2 = User::register(array('nickname' => $targetNick2,
+ 'email' => $targetNick2 . '@example.net',
+ 'email_confirmed' => true));
+
+ $this->targetGroup1 = User_group::register(array('nickname' => $groupNick1,
+ 'userid' => $this->author1->id,
+ 'aliases' => array(),
+ 'local' => true,
+ 'location' => null,
+ 'description' => null,
+ 'fullname' => null,
+ 'homepage' => null,
+ 'mainpage' => null));
+ $this->targetGroup2 = User_group::register(array('nickname' => $groupNick2,
+ 'userid' => $this->author1->id,
+ 'aliases' => array(),
+ 'local' => true,
+ 'location' => null,
+ 'description' => null,
+ 'fullname' => null,
+ 'homepage' => null,
+ 'mainpage' => null));
+ }
+
+ public function testBasicNoticeActivity()
+ {
+ $notice = $this->_fakeNotice();
+
+ $entry = $notice->asAtomEntry(true);
+
+ $element = $this->_entryToElement($entry, false);
+
+ $this->assertEquals($notice->uri, ActivityUtils::childContent($element, 'id'));
+ $this->assertEquals($notice->content, ActivityUtils::childContent($element, 'title'));
+ $this->assertEquals($notice->rendered, ActivityUtils::childContent($element, 'content'));
+ $this->assertEquals(strtotime($notice->created), strtotime(ActivityUtils::childContent($element, 'published')));
+ $this->assertEquals(strtotime($notice->created), strtotime(ActivityUtils::childContent($element, 'updated')));
+ $this->assertEquals(ActivityVerb::POST, ActivityUtils::childContent($element, 'verb', Activity::SPEC));
+ $this->assertEquals(ActivityObject::NOTE, ActivityUtils::childContent($element, 'object-type', Activity::SPEC));
+ }
+
+ public function testNamespaceFlag()
+ {
+ $notice = $this->_fakeNotice();
+
+ $entry = $notice->asAtomEntry(true);
+
+ $element = $this->_entryToElement($entry, false);
+
+ $this->assertTrue($element->hasAttribute('xmlns'));
+ $this->assertTrue($element->hasAttribute('xmlns:thr'));
+ $this->assertTrue($element->hasAttribute('xmlns:georss'));
+ $this->assertTrue($element->hasAttribute('xmlns:activity'));
+ $this->assertTrue($element->hasAttribute('xmlns:media'));
+ $this->assertTrue($element->hasAttribute('xmlns:poco'));
+ $this->assertTrue($element->hasAttribute('xmlns:ostatus'));
+ $this->assertTrue($element->hasAttribute('xmlns:statusnet'));
+
+ $entry = $notice->asAtomEntry(false);
+
+ $element = $this->_entryToElement($entry, true);
+
+ $this->assertFalse($element->hasAttribute('xmlns'));
+ $this->assertFalse($element->hasAttribute('xmlns:thr'));
+ $this->assertFalse($element->hasAttribute('xmlns:georss'));
+ $this->assertFalse($element->hasAttribute('xmlns:activity'));
+ $this->assertFalse($element->hasAttribute('xmlns:media'));
+ $this->assertFalse($element->hasAttribute('xmlns:poco'));
+ $this->assertFalse($element->hasAttribute('xmlns:ostatus'));
+ $this->assertFalse($element->hasAttribute('xmlns:statusnet'));
+ }
+
+ public function testSourceFlag()
+ {
+ $notice = $this->_fakeNotice();
+
+ // Test with no source
+
+ $entry = $notice->asAtomEntry(false, false);
+
+ $element = $this->_entryToElement($entry, true);
+
+ $source = ActivityUtils::child($element, 'source');
+
+ $this->assertNull($source);
+
+ // Test with source
+
+ $entry = $notice->asAtomEntry(false, true);
+
+ $element = $this->_entryToElement($entry, true);
+
+ $source = ActivityUtils::child($element, 'source');
+
+ $this->assertNotNull($source);
+ }
+
+ public function testSourceContent()
+ {
+ $notice = $this->_fakeNotice();
+ // make a time difference!
+ sleep(2);
+ $notice2 = $this->_fakeNotice();
+
+ $entry = $notice->asAtomEntry(false, true);
+
+ $element = $this->_entryToElement($entry, true);
+
+ $source = ActivityUtils::child($element, 'source');
+
+ $atomUrl = common_local_url('ApiTimelineUser', array('id' => $this->author1->id, 'format' => 'atom'));
+
+ $profile = $this->author1->getProfile();
+
+ $this->assertEquals($atomUrl, ActivityUtils::childContent($source, 'id'));
+ $this->assertEquals($atomUrl, ActivityUtils::getLink($source, 'self', 'application/atom+xml'));
+ $this->assertEquals($profile->profileurl, ActivityUtils::getPermalink($source));
+ $this->assertEquals(strtotime($notice2->created), strtotime(ActivityUtils::childContent($source, 'updated')));
+ // XXX: do we care here?
+ $this->assertFalse(is_null(ActivityUtils::childContent($source, 'title')));
+ $this->assertEquals(common_config('license', 'url'), ActivityUtils::getLink($source, 'license'));
+ }
+
+ public function testAuthorFlag()
+ {
+ $notice = $this->_fakeNotice();
+
+ // Test with no author
+
+ $entry = $notice->asAtomEntry(false, false, false);
+
+ $element = $this->_entryToElement($entry, true);
+
+ $this->assertNull(ActivityUtils::child($element, 'author'));
+ $this->assertNull(ActivityUtils::child($element, 'actor', Activity::SPEC));
+
+ // Test with source
+
+ $entry = $notice->asAtomEntry(false, false, true);
+
+ $element = $this->_entryToElement($entry, true);
+
+ $author = ActivityUtils::child($element, 'author');
+ $actor = ActivityUtils::child($element, 'actor', Activity::SPEC);
+
+ $this->assertFalse(is_null($author));
+ $this->assertFalse(is_null($actor));
+ }
+
+ public function testAuthorContent()
+ {
+ $notice = $this->_fakeNotice();
+
+ // Test with author
+
+ $entry = $notice->asAtomEntry(false, false, true);
+
+ $element = $this->_entryToElement($entry, true);
+
+ $author = ActivityUtils::child($element, 'author');
+
+ $this->assertEquals($this->author1->nickname, ActivityUtils::childContent($author, 'name'));
+ $this->assertEquals($this->author1->uri, ActivityUtils::childContent($author, 'uri'));
+ }
+
+ public function testActorContent()
+ {
+ $notice = $this->_fakeNotice();
+
+ // Test with author
+
+ $entry = $notice->asAtomEntry(false, false, true);
+
+ $element = $this->_entryToElement($entry, true);
+
+ $actor = ActivityUtils::child($element, 'actor', Activity::SPEC);
+
+ $this->assertEquals($this->author1->uri, ActivityUtils::childContent($actor, 'id'));
+ $this->assertEquals($this->author1->nickname, ActivityUtils::childContent($actor, 'title'));
+ }
+
+ public function testReplyLink()
+ {
+ $orig = $this->_fakeNotice($this->targetUser1);
+
+ $text = "@" . $this->targetUser1->nickname . " reply text " . common_good_rand(4);
+
+ $reply = Notice::saveNew($this->author1->id, $text, 'test', array('uri' => null, 'reply_to' => $orig->id));
+
+ $entry = $reply->asAtomEntry();
+
+ $element = $this->_entryToElement($entry, true);
+
+ $irt = ActivityUtils::child($element, 'in-reply-to', 'http://purl.org/syndication/thread/1.0');
+
+ $this->assertNotNull($irt);
+ $this->assertEquals($orig->uri, $irt->getAttribute('ref'));
+ $this->assertEquals($orig->bestUrl(), $irt->getAttribute('href'));
+ }
+
+ public function testReplyAttention()
+ {
+ $orig = $this->_fakeNotice($this->targetUser1);
+
+ $text = "@" . $this->targetUser1->nickname . " reply text " . common_good_rand(4);
+
+ $reply = Notice::saveNew($this->author1->id, $text, 'test', array('uri' => null, 'reply_to' => $orig->id));
+
+ $entry = $reply->asAtomEntry();
+
+ $element = $this->_entryToElement($entry, true);
+
+ $this->assertEquals($this->targetUser1->uri, ActivityUtils::getLink($element, 'ostatus:attention'));
+ $this->assertEquals($this->targetUser1->uri, ActivityUtils::getLink($element, 'mentioned'));
+ }
+
+ public function testMultipleReplyAttention()
+ {
+ $orig = $this->_fakeNotice($this->targetUser1);
+
+ $text = "@" . $this->targetUser1->nickname . " reply text " . common_good_rand(4);
+
+ $reply = Notice::saveNew($this->targetUser2->id, $text, 'test', array('uri' => null, 'reply_to' => $orig->id));
+
+ $text = "@" . $this->targetUser1->nickname . " @" . $this->targetUser2->nickname . " reply text " . common_good_rand(4);
+
+ $reply2 = Notice::saveNew($this->author1->id, $text, 'test', array('uri' => null, 'reply_to' => $reply->id));
+
+ $entry = $reply2->asAtomEntry();
+
+ $element = $this->_entryToElement($entry, true);
+
+ $links = ActivityUtils::getLinks($element, 'ostatus:attention');
+
+ $this->assertEquals(2, count($links));
+
+ $hrefs = array();
+
+ foreach ($links as $link) {
+ $hrefs[] = $link->getAttribute('href');
+ }
+
+ $this->assertTrue(in_array($this->targetUser1->uri, $hrefs));
+ $this->assertTrue(in_array($this->targetUser2->uri, $hrefs));
+
+ $links = ActivityUtils::getLinks($element, 'mentioned');
+
+ $this->assertEquals(2, count($links));
+
+ $hrefs = array();
+
+ foreach ($links as $link) {
+ $hrefs[] = $link->getAttribute('href');
+ }
+
+ $this->assertTrue(in_array($this->targetUser1->uri, $hrefs));
+ $this->assertTrue(in_array($this->targetUser2->uri, $hrefs));
+ }
+
+ public function testGroupPostAttention()
+ {
+ $text = "!" . $this->targetGroup1->nickname . " reply text " . common_good_rand(4);
+
+ $notice = Notice::saveNew($this->author1->id, $text, 'test', array('uri' => null));
+
+ $entry = $notice->asAtomEntry();
+
+ $element = $this->_entryToElement($entry, true);
+
+ $this->assertEquals($this->targetGroup1->uri, ActivityUtils::getLink($element, 'ostatus:attention'));
+ $this->assertEquals($this->targetGroup1->uri, ActivityUtils::getLink($element, 'mentioned'));
+ }
+
+ public function testMultipleGroupPostAttention()
+ {
+ $text = "!" . $this->targetGroup1->nickname . " !" . $this->targetGroup2->nickname . " reply text " . common_good_rand(4);
+
+ $notice = Notice::saveNew($this->author1->id, $text, 'test', array('uri' => null));
+
+ $entry = $notice->asAtomEntry();
+
+ $element = $this->_entryToElement($entry, true);
+
+ $links = ActivityUtils::getLinks($element, 'ostatus:attention');
+
+ $this->assertEquals(2, count($links));
+
+ $hrefs = array();
+
+ foreach ($links as $link) {
+ $hrefs[] = $link->getAttribute('href');
+ }
+
+ $this->assertTrue(in_array($this->targetGroup1->uri, $hrefs));
+ $this->assertTrue(in_array($this->targetGroup2->uri, $hrefs));
+
+ $links = ActivityUtils::getLinks($element, 'mentioned');
+
+ $this->assertEquals(2, count($links));
+
+ $hrefs = array();
+
+ foreach ($links as $link) {
+ $hrefs[] = $link->getAttribute('href');
+ }
+
+ $this->assertTrue(in_array($this->targetGroup1->uri, $hrefs));
+ $this->assertTrue(in_array($this->targetGroup2->uri, $hrefs));
+ }
+
+ public function testRepeatLink()
+ {
+ $notice = $this->_fakeNotice($this->author1);
+ $repeat = $notice->repeat($this->author2->id, 'test');
+
+ $entry = $repeat->asAtomEntry();
+
+ $element = $this->_entryToElement($entry, true);
+
+ $forward = ActivityUtils::child($element, 'forward', "http://ostatus.org/schema/1.0");
+
+ $this->assertNotNull($forward);
+ $this->assertEquals($notice->uri, $forward->getAttribute('ref'));
+ $this->assertEquals($notice->bestUrl(), $forward->getAttribute('href'));
+ }
+
+ public function testTag()
+ {
+ $tag1 = common_good_rand(4);
+
+ $notice = $this->_fakeNotice($this->author1, '#' . $tag1);
+
+ $entry = $notice->asAtomEntry();
+
+ $element = $this->_entryToElement($entry, true);
+
+ $category = ActivityUtils::child($element, 'category');
+
+ $this->assertNotNull($category);
+ $this->assertEquals($tag1, $category->getAttribute('term'));
+ }
+
+ public function testMultiTag()
+ {
+ $tag1 = common_good_rand(4);
+ $tag2 = common_good_rand(4);
+
+ $notice = $this->_fakeNotice($this->author1, '#' . $tag1 . ' #' . $tag2);
+
+ $entry = $notice->asAtomEntry();
+
+ $element = $this->_entryToElement($entry, true);
+
+ $categories = $element->getElementsByTagName('category');
+
+ $this->assertNotNull($categories);
+ $this->assertEquals(2, $categories->length);
+
+ $terms = array();
+
+ for ($i = 0; $i < $categories->length; $i++) {
+ $cat = $categories->item($i);
+ $terms[] = $cat->getAttribute('term');
+ }
+
+ $this->assertTrue(in_array($tag1, $terms));
+ $this->assertTrue(in_array($tag2, $terms));
+ }
+
+ public function testGeotaggedActivity()
+ {
+ $notice = Notice::saveNew($this->author1->id, common_good_rand(4), 'test', array('uri' => null, 'lat' => 45.5, 'lon' => -73.6));
+
+ $entry = $notice->asAtomEntry();
+
+ $element = $this->_entryToElement($entry, true);
+
+ $this->assertEquals('45.5 -73.6', ActivityUtils::childContent($element, 'point', "http://www.georss.org/georss"));
+ }
+
+ public function testNoticeInfo()
+ {
+ $notice = $this->_fakeNotice();
+
+ $entry = $notice->asAtomEntry();
+
+ $element = $this->_entryToElement($entry, true);
+
+ $noticeInfo = ActivityUtils::child($element, 'notice_info', "http://status.net/schema/api/1/");
+
+ $this->assertEquals($notice->id, $noticeInfo->getAttribute('local_id'));
+ $this->assertEquals($notice->source, $noticeInfo->getAttribute('source'));
+ $this->assertEquals('', $noticeInfo->getAttribute('repeat_of'));
+ $this->assertEquals('', $noticeInfo->getAttribute('repeated'));
+ $this->assertEquals('', $noticeInfo->getAttribute('favorite'));
+ $this->assertEquals('', $noticeInfo->getAttribute('source_link'));
+ }
+
+ public function testNoticeInfoRepeatOf()
+ {
+ $notice = $this->_fakeNotice();
+
+ $repeat = $notice->repeat($this->author2->id, 'test');
+
+ $entry = $repeat->asAtomEntry();
+
+ $element = $this->_entryToElement($entry, true);
+
+ $noticeInfo = ActivityUtils::child($element, 'notice_info', "http://status.net/schema/api/1/");
+
+ $this->assertEquals($notice->id, $noticeInfo->getAttribute('repeat_of'));
+ }
+
+ public function testNoticeInfoRepeated()
+ {
+ $notice = $this->_fakeNotice();
+
+ $repeat = $notice->repeat($this->author2->id, 'test');
+
+ $entry = $notice->asAtomEntry(false, false, false, $this->author2);
+
+ $element = $this->_entryToElement($entry, true);
+
+ $noticeInfo = ActivityUtils::child($element, 'notice_info', "http://status.net/schema/api/1/");
+
+ $this->assertEquals('true', $noticeInfo->getAttribute('repeated'));
+
+ $entry = $notice->asAtomEntry(false, false, false, $this->targetUser1);
+
+ $element = $this->_entryToElement($entry, true);
+
+ $noticeInfo = ActivityUtils::child($element, 'notice_info', "http://status.net/schema/api/1/");
+
+ $this->assertEquals('false', $noticeInfo->getAttribute('repeated'));
+ }
+
+ public function testNoticeInfoFave()
+ {
+ $notice = $this->_fakeNotice();
+
+ $fave = Fave::addNew($this->author2->getProfile(), $notice);
+
+ // Should be set if user has faved
+
+ $entry = $notice->asAtomEntry(false, false, false, $this->author2);
+
+ $element = $this->_entryToElement($entry, true);
+
+ $noticeInfo = ActivityUtils::child($element, 'notice_info', "http://status.net/schema/api/1/");
+
+ $this->assertEquals('true', $noticeInfo->getAttribute('favorite'));
+
+ // Shouldn't be set if user has not faved
+
+ $entry = $notice->asAtomEntry(false, false, false, $this->targetUser1);
+
+ $element = $this->_entryToElement($entry, true);
+
+ $noticeInfo = ActivityUtils::child($element, 'notice_info', "http://status.net/schema/api/1/");
+
+ $this->assertEquals('false', $noticeInfo->getAttribute('favorite'));
+ }
+
+ public function testConversationLink()
+ {
+ $orig = $this->_fakeNotice($this->targetUser1);
+
+ $text = "@" . $this->targetUser1->nickname . " reply text " . common_good_rand(4);
+
+ $reply = Notice::saveNew($this->author1->id, $text, 'test', array('uri' => null, 'reply_to' => $orig->id));
+
+ $conv = Conversation::staticGet('id', $reply->conversation);
+
+ $entry = $reply->asAtomEntry();
+
+ $element = $this->_entryToElement($entry, true);
+
+ $this->assertEquals($conv->uri, ActivityUtils::getLink($element, 'ostatus:conversation'));
+ }
+
+ function __destruct()
+ {
+ if (!is_null($this->author1)) {
+ $this->author1->delete();
+ }
+
+ if (!is_null($this->author2)) {
+ $this->author2->delete();
+ }
+
+ if (!is_null($this->targetUser1)) {
+ $this->targetUser1->delete();
+ }
+
+ if (!is_null($this->targetUser2)) {
+ $this->targetUser2->delete();
+ }
+
+ if (!is_null($this->targetGroup1)) {
+ $this->targetGroup1->delete();
+ }
+
+ if (!is_null($this->targetGroup2)) {
+ $this->targetGroup2->delete();
+ }
+ }
+
+ private function _fakeNotice($user = null, $text = null)
+ {
+ if (empty($user)) {
+ $user = $this->author1;
+ }
+
+ if (empty($text)) {
+ $text = "fake-o text-o " . common_good_rand(32);
+ }
+
+ return Notice::saveNew($user->id, $text, 'test', array('uri' => null));
+ }
+
+ private function _entryToElement($entry, $namespace = false)
+ {
+ $xml = '<?xml version="1.0" encoding="utf-8"?>'."\n\n";
+ $xml .= '<feed';
+ if ($namespace) {
+ $xml .= ' xmlns="http://www.w3.org/2005/Atom"';
+ $xml .= ' xmlns:thr="http://purl.org/syndication/thread/1.0"';
+ $xml .= ' xmlns:georss="http://www.georss.org/georss"';
+ $xml .= ' xmlns:activity="http://activitystrea.ms/spec/1.0/"';
+ $xml .= ' xmlns:media="http://purl.org/syndication/atommedia"';
+ $xml .= ' xmlns:poco="http://portablecontacts.net/spec/1.0"';
+ $xml .= ' xmlns:ostatus="http://ostatus.org/schema/1.0"';
+ $xml .= ' xmlns:statusnet="http://status.net/schema/api/1/"';
+ }
+ $xml .= '>' . "\n" . $entry . "\n" . '</feed>' . "\n";
+ $doc = DOMDocument::loadXML($xml);
+ $feed = $doc->documentElement;
+ $entries = $feed->getElementsByTagName('entry');
+
+ return $entries->item(0);
+ }
+}
diff --git a/theme/biz/css/display.css b/theme/biz/css/display.css
index ea09ef4c0..e735d8683 100644
--- a/theme/biz/css/display.css
+++ b/theme/biz/css/display.css
@@ -7,7 +7,7 @@
* @link http://status.net/
*/
-@import url(base.css) screen, projection, tv, print;
+@import url(base.css);
@media screen, projection, tv {
html {
diff --git a/theme/default/css/display.css b/theme/default/css/display.css
index 5e3748cb7..9a1dabb51 100644
--- a/theme/default/css/display.css
+++ b/theme/default/css/display.css
@@ -7,7 +7,7 @@
* @link http://status.net/
*/
-@import url(../../base/css/display.css) screen, projection, tv, print;
+@import url(../../base/css/display.css);
@media screen, projection, tv {
body,
diff --git a/theme/identica/css/display.css b/theme/identica/css/display.css
index 440dd8be2..d7f150bcb 100644
--- a/theme/identica/css/display.css
+++ b/theme/identica/css/display.css
@@ -7,7 +7,7 @@
* @link http://status.net/
*/
-@import url(../../base/css/display.css) screen, projection, tv, print;
+@import url(../../base/css/display.css);
@media screen, projection, tv {
body,
diff --git a/theme/pigeonthoughts/css/display.css b/theme/pigeonthoughts/css/display.css
index e584683fc..3d6db00e1 100644
--- a/theme/pigeonthoughts/css/display.css
+++ b/theme/pigeonthoughts/css/display.css
@@ -7,7 +7,7 @@
* @link http://status.net/
*/
-@import url(base.css) screen, projection, tv, print;
+@import url(base.css);
@media screen, projection, tv {
html {